Atualização incremental avançada com o ponto de extremidade XMLAAdvanced incremental refresh with the XMLA endpoint

Os conjuntos de dados em uma capacidade Premium com o ponto de extremidade XMLA habilitado para operações de leitura/gravação permitem atualização de conjunto de dados mais avançada, gerenciamento de partição e implantações apenas de metadados por meio de ferramentas, scripts e suporte a API.Datasets in a Premium capacity with the XMLA endpoint enabled for read-write operations allow more advanced dataset refresh, partition management, and metadata only deployments through tool, scripting, and API support. Além disso, as operações de atualização por meio do ponto de extremidade XMLA não são limitadas a 48 atualizações por dia, e o tempo limite de atualização agendada não é imposto.In addition, refresh operations through the XMLA endpoint are not limited to 48 refreshes per day, and the scheduled refresh time limit is not imposed.

PartiçõesPartitions

As partições de tabela de conjunto de dados não são visíveis e não podem ser gerenciadas no serviço.Dataset table partitions are not visible and cannot be managed in the service. Para conjuntos de dados em um workspace atribuído a uma capacidade Premium, as partições podem ser gerenciadas por meio do ponto de extremidade XMLA usando ferramentas como o SSMS (SQL Server Management Studio), o Tabular Editor open-source, com script de TMSL (Linguagem de Script de Modelo de Tabela) e programaticamente com o TOM (Modelo de Objeto de Tabela).For datasets in a workspace assigned to a Premium capacity, partitions can be managed through the XMLA endpoint by using tools like SQL Server Management Studio (SSMS), the open-source Tabular Editor, scripted with Tabular Model Scripting Language (TMSL), and programmatically with the Tabular Object Model (TOM).

Quando você publica um modelo no serviço pela primeira vez, cada tabela no novo conjunto de dados tem uma partição.When you first publish a model to the service, each table in the new dataset has one partition. Para tabelas sem nenhuma política de atualização incremental, essa partição contém todas as linhas de dados dessa tabela (a menos que filtros tenham sido aplicados).For tables with no incremental refresh policy, that one partition contains all rows of data for that table (unless filters have been applied). Para tabelas com uma política de atualização incremental, essa partição conterá somente as linhas de dados definidas pelo filtro de intervalo de data/hora com base nos parâmetros RangeStart e RangeEnd e quaisquer outros filtros aplicados no Editor do Power Query.For tables with an incremental refresh policy, that one partition will contain only those rows of data defined by the date/time range filter based on the RangeStart and RangeEnd parameters, and any other filters applied in Power Query Editor.

Quando você executar a primeira operação de atualização de conjunto de dados, tabelas sem nenhuma política de atualização incremental atualizarão todas as linhas contidas na partição única padrão da tabela.When you perform the first dataset refresh operation, tables with no incremental refresh policy will refresh all rows contained in that table's default single partition. Para tabelas com uma política de atualização incremental, as partições de atualização e histórica são criadas automaticamente e as linhas são carregadas nelas de acordo com a data/hora de cada linha.For tables with an incremental refresh policy, refresh and historical partitions are automatically created and rows are loaded into them according to the date/time for each row.

Essa primeira operação de atualização pode levar algum tempo, dependendo da quantidade de dados que precisam ser carregados da fonte de dados.This first refresh operation can take quite some time depending on the amount of data that needs to be loaded from the data source. A complexidade do modelo também pode ser um fator significativo, pois as operações de atualização devem executar processamentos e recálculos adicionais.The complexity of the model can also be a significant factor because refresh operations must perform additional processing and recalculation. Essa operação pode ser inicializada.This operation can be bootstrapped. Para saber mais, confira Evitar tempos limite na atualização completa inicial posteriormente neste artigo.To learn more, see Prevent timeouts on initial full refresh later in this article.

As partições são criadas e nomeadas por período de granularidade: anos, trimestres, meses e dias.Partitions are created for and named by period granularity: Years, quarters, months, and days. As partições mais recentes, as partições de atualização, contêm linhas no período de atualização especificado na política.The most recent partition(s), the refresh partition(s), contains rows in the refresh period you specify in the policy. As partições históricas contêm linhas por período completo até o período de atualização.Historical partitions contain rows by complete period up to the refresh period. A granularidade de partições de atualização e histórica depende dos períodos de atualização e histórico (armazenamento) que você escolhe ao definir a política.Granularity for refresh and historical partitions is dependent on the refresh and historical (store) periods you choose when defining the policy.

Por exemplo, se a data de hoje for 2 de fevereiro de 2021 e nossa tabela FactInternetSales na fonte de dados contiver linhas até hoje, se nossa política especificar a atualização de linhas no último dia (período de atualização) e o armazenamento de linhas nos últimos três anos (período histórico), com a primeira operação de atualização, uma nova partição será criada para as linhas de hoje, uma partição histórica será criada para ontem, um período de dia inteiro (1º de fevereiro de 2021), uma partição histórica será criada para o período de mês inteiro anterior (janeiro de 2021), uma partição histórica será criada para o período de ano inteiro anterior (2020) e partições históricas para os períodos de ano inteiro de 2019 e 2018 serão criadas.For example, if today's date is February 2, 2021 and our FactInternetSales table at the data source contains rows up through today, if our policy specifies refresh rows in the last one day (refresh period) and store rows in the last three years (historical period), then with the first refresh operation, a new partition is created for today's rows, a historical partition is created for yesterday, a whole day period (February 1, 2021), a historical partition is created for the previous whole month period (January, 2021), a historical partition is created for the previous whole year period (2020), and historical partitions for 2019 and 2018 whole year periods are created. Nenhuma partição de trimestre inteiro é criada porque ainda não concluímos o primeiro trimestre de 2021.No whole quarter partitions are created because we have not yet completed the first full quarter of 2021.

Granularidade de nomenclatura de partição

Com cada operação de atualização, somente as partições do período de atualização são atualizadas.With each refresh operation, only the refresh period partition(s) is refreshed. Uma nova partição é criada para novas linhas com uma nova data/hora, e as linhas existentes com uma data/hora já dentro das partições existentes no período de atualização são renovadas com atualizações.A new partition is created for new rows with a new date/time, and existing rows with a date/time already within existing partition(s) in the refresh period are refreshed with updates. As linhas com uma data/hora mais antiga do que o período de atualização não são mais atualizadas.Rows with a date/time older than the refresh period are no longer refreshed.

À medida que os períodos inteiros são fechados, as partições são mescladas.As whole periods close, partitions are merged. Por exemplo, se um período de atualização de um dia e o período de armazenamento histórico de três anos forem especificados na política, no primeiro dia do mês, todas as partições de dia do mês anterior serão mescladas em uma partição de mês.For example, if a one day refresh period and three year historical store period is specified in the policy, on the first day of the month, all day partitions for the previous month are merged into a month partition. No primeiro dia de um novo trimestre, todas as três partições de mês anteriores são mescladas em uma partição de trimestre.On the first day of a new quarter, all three previous month partitions are merged into a quarter partition. No primeiro dia de um novo ano, todas as quatro partições do trimestre anterior são mescladas em uma partição de ano.On the first day of a new year, all four previous quarter partitions are merged into a year partition.

Um conjunto de dados sempre retém partições para todo o período de armazenamento histórico, além de todas as partições de período até o período de atualização atual.A dataset always retains partitions for the entire historical store period plus whole period partitions up through the current refresh period. Usando nosso exemplo acima, um total de três anos de dados históricos é mantido em partições para 2018, 2019, 2020 e também partições para o período de mês 2021Q101, o período de dia 2021Q10201 e a partição do período de atualização do dia atual.Using our example above, a full three years of historical data is retained in partitions for 2018, 2019, 2020, and also partitions for the 2021Q101 month period, the 2021Q10201 day period, and the current day refresh period partition. Como optamos por manter os dados históricos por três anos, a partição 2018 é mantida até a primeira atualização em 1º de janeiro de 2022.Because we chose to retain historical data for three years, the 2018 partition is retained until the first refresh on January 1, 2022.

Com a atualização incremental do Power BI, o serviço lida com o gerenciamento de partição para você com base na política.With Power BI incremental refresh, the service handles the partition management for you based on the policy. Se você já trabalhou no Analysis Services, sabe que o particionamento eficaz envolve a criação de uma solução programática normalmente com milhares de linhas de código.If you've ever worked in Analysis Services, you know effective partitioning involves creating a programmatic solution often with thousands of lines of code. Embora o serviço possa lidar com tudo isso para você, usando ferramentas por meio do ponto de extremidade XMLA você pode atualizar de modo seletivo as partições individualmente, sequencialmente ou em paralelo.While the service can handle all of this for you, by using tools through the XMLA endpoint you can selectively refresh partitions individually, sequentially, or in parallel.

Gerenciamento de atualizações com o SSMS (SQL Server Management Studio)Refresh management with SQL Server Management Studio (SSMS)

O SSMS pode ser usado para exibir e gerenciar partições criadas pelo aplicativo de políticas de atualização incremental.SSMS can be used to view and manage partitions created by the application of incremental refresh policies. Isso permite, por exemplo, atualizar uma partição histórica específica que não esteja no período de atualização incremental de modo a executar uma atualização retroativa sem precisar atualizar todos os dados.This allows, for example, to refresh a specific historical partition not in the incremental refresh period to perform a back-dated update without having to refresh all historical data. O SSMS também pode ser usado ao inicializar para carregar os dados históricos em conjuntos grandes, adicionando/atualizando de forma incremental as partições históricas em lotes.SSMS can also be used when bootstrapping to load historical data for large datasets by incrementally adding/refreshing historical partitions in batches.

Partições no SSMS

Substituir comportamento de atualização incrementalOverride incremental refresh behavior

Com o SSMS, você também tem mais controle sobre como invocar atualizações usando a TMSL (Linguagem de Scripts do Modelo Tabular) e o TOM (Modelo de Objeto Tabular).With SSMS, you also have more control over how to invoke refreshes by using Tabular Model Scripting Language (TMSL) and the Tabular Object Model (TOM). Por exemplo, no SSMS, no Pesquisador de Objetos, clique com o botão direito do mouse em uma tabela e selecione a opção de menu Processar Tabela e clique no botão Script para gerar um comando de atualização TMSL.For example, in SSMS, in Object Explorer, right-click a table and then select the Process Table menu option, and then click the Script button to generate a TMSL refresh command.

Botão de script na caixa de diálogo Processar Tabela

Esses parâmetros podem ser usados com o comando de atualização de TMSL para substituir o comportamento de atualização incremental padrão:These parameters can be used with the TMSL refresh command to override the default incremental refresh behavior:

  • applyRefreshPolicy – se uma tabela tiver uma política de atualização incremental definida, applyRefreshPolicy determinará se a política será aplicada ou não.applyRefreshPolicy – If a table has an incremental refresh policy defined, applyRefreshPolicy will determine if the policy is applied or not. Se a política não for aplicada, uma operação de processo completa deixará as definições de partição inalteradas e todas as partições na tabela serão totalmente atualizadas.If the policy is not applied, a process full operation will leave partition definitions unchanged and all partitions in the table will be fully refreshed. O valor padrão é true.Default value is true.

  • effectiveDate – Se uma política de atualização incremental estiver sendo aplicada, ela precisará saber a data atual a fim de determinar os intervalos de janela sem interrupção para a atualização incremental e períodos históricos.effectiveDate – If an incremental refresh policy is being applied, it needs to know the current date to determine rolling window ranges for the incremental refresh and historical periods. O parâmetro effectiveDate permite que você substitua a data atual.The effectiveDate parameter allows you to override the current date. Isso é útil para testes, demonstrações e cenários de negócios em que os dados são atualizados incrementalmente em datas passados ou futuras (por exemplo, orçamentos futuros).This is useful for testing, demos, and business scenarios where data is incrementally refreshed up to a date in the past or the future (for example, budgets in the future). O valor padrão é a data atual.The default value is the current date.

{ 
  "refresh": {
    "type": "full",

    "applyRefreshPolicy": true,
    "effectiveDate": "12/31/2013",

    "objects": [
      {
        "database": "IR_AdventureWorks", 
        "table": "FactInternetSales" 
      }
    ]
  }
}

Para saber mais sobre como substituir o comportamento de atualização incremental padrão por TMSL, confira Comando de atualização.To learn more about overriding default incremental refresh behavior with TMSL, see Refresh command.

Evitar que os tempos limite sejam atingidos na atualização completa inicialPrevent timeouts on initial full refresh

Após a publicação no serviço, a operação inicial de atualização completa para o conjunto de dados cria partições e carrega e processa os dados históricos do período inteiro definido na política de atualização incremental.After publishing to the service, the initial full refresh operation for the dataset creates partitions and loads and processes historical data for the entire period defined in the incremental refresh policy. Para alguns conjuntos de dados que carregarão e processarão grandes quantidades de dados, a quantidade de tempo que a operação de atualização inicial usa pode exceder o limite de tempo de atualização imposto pelo serviço ou um limite de tempo de consulta imposto pela fonte de dados.For some datasets that will load and process large amounts of data, the amount of time the initial refresh operation takes can exceed the refresh time limit imposed by the service or a query time limit imposed by the data source.

Observação

Os termos processo e atualização são sinônimos.The terms process and refresh are synonymous.

Para evitar que o tempos limite sejam atingidos, antes de publicar o modelo no serviço, inicialize a operação de atualização inicial.To prevent timeouts, prior to publishing the model to the service you can bootstrap the initial refresh operation. A inicialização permite ao serviço criar objetos de tabela e de partição para o conjunto de dados, mas não carregar e processar dados do histórico em nenhuma das partições.Bootstrapping allows the service to create table and partition objects for the dataset, but not load and process historical data into any of the partitions. Quando publicada, uma operação de atualização inicial é executada no conjunto de dados que cria objetos de tabela e de partição para todas as tabelas, mas apenas os dados das tabelas que não foram inicializadas são carregados.When published, an initial refresh operation is performed on the dataset that creates table and partition objects for all tables, but data is only loaded for those tables that haven't been bootstrapped. A inicialização é removida.The bootstrap is then removed. Por meio do ponto de extremidade XMLA, o SSMS é usado para processar partições seletivamente.Through the XMLA endpoint, SSMS is then used to selectively process partitions. Dependendo da quantidade de dados que serão carregados para cada partição, convém processar cada uma sequencialmente ou em pequenos lotes para reduzir o potencial de uma ou mais dessas partições atingir um tempo limite.Depending on the amount of data that will be loaded for each partition, you may want to process each partition sequentially or in small batches to reduce the potential for one or more of those partitions to cause a timeout.

Há duas maneiras de inicializar a atualização inicial, no entanto, suas opções dependem muito do tipo de fonte de dados.There are couple ways to bootstrap the initial refresh, however, your options will largely depend on the data source type. Descreveremos brevemente o método mais comum aqui, porque ele pode funcionar para qualquer tipo de fonte de dados.The most common method we'll briefly describe here because it can work for any data source type. Vamos usar um exemplo em que uma política de atualização incremental é definida para a tabela FactInternetSales.We'll use an example where an incremental refresh policy is defined for the FactInternetSales table.

Antes de publicar o modelo no serviço, no Editor do Power Query, adicionamos outro filtro à coluna ProductKey que filtra qualquer valor diferente de 0.Prior to publishing the model to the service, in Power Query Editor, we add another filter to the ProductKey column that filters out any value other than 0. Isso filtra efetivamente todos os dados da tabela FactInternetSales.This effectively filters out all data from the FactInternetSales table.

Filtrar chave do produto (Product Key)

Depois de clicar em Fechar e aplicar no Editor do Power Query, definindo a política de atualização incremental e salvando o modelo, publicamos no serviço.After clicking Close & Apply in Power Query Editor, defining the incremental refresh policy, and saving the model, we publish to the service. Do serviço, executamos a operação de atualização inicial no conjunto de dados.From the service, we then run the initial refresh operation on the dataset. As partições para a tabela FactInternetSales são criadas de acordo com a política, mas nenhum dado é carregado e processado porque todos os dados são filtrados. Depois que a operação de atualização inicial for concluída, de volta no Editor do Power Query, o filtro adicional na coluna ProductKey será removido.Partitions for the FactInternetSales table are created according to the policy, but no data is loaded and processed because all data is filtered out. After the initial refresh operation is complete, back in Power Query Editor, the additional filter on the ProductKey column is removed. Depois de clicar em Fechar e aplicar no Editor do Power Query e salvar o modelo, ele não será publicado novamente porque ele substituirá as configurações de política de atualização incremental e forçará uma atualização completa no conjunto de dados quando uma operação de atualização subsequente for executada a partir do serviço.After clicking Close & Apply in Power Query Editor and saving the model, the model is not published again because it would overwrite the incremental refresh policy settings, and force a full refresh on the dataset when a subsequent refresh operation is performed from the service. Em vez disso, executamos uma implantação somente de metadados usando o ALM Toolkit que remove o filtro na coluna ProductKey do conjunto de dados.Instead, we perform a metadata-only deployment by using ALM Toolkit that removes the filter on the ProductKey column from the dataset. Em seguida, usamos o SSMS para processar partições seletivamente.We then use SSMS to selectively process partitions. Quando todas as partições tiverem sido totalmente processadas (o que deve incluir um recálculo de processo em todas as partições) do SSMS, as operações de atualização subsequentes no conjunto de dados do serviço atualizarão somente as partições de atualização incremental.When all partitions have been fully processed (which must include a process recalculation on all partitions) from SSMS, subsequent refresh operations on the dataset from the service refresh only the incremental refresh partition(s).

Dica

Confira os vídeos, blogs e outros conteúdos fornecidos pela comunidade de especialistas de BI do Power BI.Be sure to check out videos, blogs, and more provided by Power BI's community of BI experts.

Para saber mais sobre o processamento de tabelas e partições do SSMS, confira Processar banco de dados, tabela ou partições (Analysis Services).To learn more about processing tables and partitions from SSMS, see Process database, table, or partitions (Analysis Services). Para saber mais sobre o processamento de conjuntos de, tabelas e partições usando o TMSL, confira Atualizar comando (TMSL).To learn more about processing datasets, tables, and partitions by using TMSL, see Refresh command (TMSL).

Personalizar consultas para detectar alterações de dadosCustom queries for detect data changes

TMSL e/ou TOM podem ser usados para substituir o comportamento de alterações de dados detectados.TMSL and/or TOM can be used to override the detected data changes behavior. Isso não só pode ser usado para evitar manter a coluna da última atualização no cache da memória, como também permite cenários em que uma tabela de configuração/instrução é preparada por processos ETL para sinalizar apenas as partições que precisam ser atualizadas.Not only can this be used to avoid persisting the last-update column in the in-memory cache, it can enable scenarios where a configuration/instruction table is prepared by ETL processes for flagging only the partitions that need to be refreshed. Isso permite criar um processo de atualização incremental mais eficiente, onde apenas os períodos necessários são atualizados, independentemente do tempo durante o qual as atualizações de dados ocorreram.This can create a more efficient incremental refresh process where only the required periods are refreshed, no matter how long ago data updates took place.

O pollingExpression deve ser uma expressão M leve ou nome de outra consulta M.The pollingExpression is intended to be a lightweight M expression or name of another M query. Ele deve retornar um valor escalar e ser executado em cada partição.It must return a scalar value and will be executed for each partition. Se o valor retornado for diferente do apresentado na última atualização incremental, a partição será sinalizada para processamento completo.If the value returned is different to what it was the last time an incremental refresh occurred, the partition is flagged for full processing.

O exemplo a seguir abrange todos os 120 meses no período histórico para alterações retroativas.The following example covers all 120 months in the historical period for backdated changes. Especificar 120 meses em vez de 10 anos pode significar uma compactação de dados não eficiente, mas que evita a necessidade de atualizar o histórico de um ano inteiro, o que seria mais caro, quando fazer a alteração retroativa de um mês for o suficiente.Specifying 120 months instead of 10 years means data compression may not be quite as efficient, but avoids having to refresh a whole historical year, which would be more expensive when a month would be sufficient for a backdated change.

"refreshPolicy": {
    "policyType": "basic",
    "rollingWindowGranularity": "month",
    "rollingWindowPeriods": 120,
    "incrementalGranularity": "month",
    "incrementalPeriods": 120,
    "pollingExpression": "<M expression or name of custom polling query>",
    "sourceExpression": [
    "let ..."
    ]
}

Dica

Confira os vídeos, blogs e outros conteúdos fornecidos pela comunidade de especialistas de BI do Power BI.Be sure to check out videos, blogs, and more provided by Power BI's community of BI experts.

Implantação somente de metadadosMetadata-only deployment

Ao publicar uma nova versão de um arquivo PBIX por meio do Power BI Desktop para um workspace, caso um conjunto de dados com o mesmo nome já exista, será necessário substituir o conjunto de dados existente.When publishing a new version of a PBIX file from Power BI Desktop to a workspace, if a dataset with the same name already exists, you're prompted to replace the existing dataset.

Substituir prompt do conjunto de dados

Em alguns casos, talvez não convenha substituir o conjunto de dados, principalmente pela atualização incremental.In some cases, you may not want to replace the dataset, especially with incremental refresh. O conjunto de dados no Power BI Desktop pode ser muito menor que o de serviços.The dataset in Power BI Desktop could be much smaller than the one in the service. Se o conjunto de dados de serviços tiver uma política de atualização incremental aplicada, poderá haver vários anos de dados históricos que serão perdidos caso o conjunto de dados seja substituído.If the dataset in the service has an incremental refresh policy applied, it may have several years of historical data that will be lost if the dataset is replaced. Atualizar todos os dados históricos pode levar horas e resultar em tempo de inatividade do sistema para os usuários.Refreshing all the historical data could take hours and result in system downtime for users.

Em vez disso, é melhor executar uma implantação somente de metadados.Instead, it's better to perform a metadata-only deployment. Isso permite a implantação de novos objetos sem perder os dados históricos.This allows deployment of new objects without losing the historical data. Por exemplo, se você adicionou algumas medidas, poderá implantá-las independentemente, sem precisar atualizar os dados, economizando muito tempo.For example, if you've added a few measures you can deploy only the new measures without needing to refresh the data, saving a lot of time.

Para workspaces atribuídos a uma capacidade Premium configurada para leitura e gravação de ponto de extremidade XMLA, as ferramentas compatíveis habilitam a implantação somente de metadados.For workspaces assigned to a Premium capacity configured for XMLA endpoint read-write, compatible tools enable metadata-only deployment. Por exemplo, o kit de ferramentas ALM é um recurso de diferença de esquema para conjuntos de dados do Power BI e pode ser usado para executar apenas a implantação de metadados.For example, the ALM Toolkit is a schema diff tool for Power BI datasets and can be used to perform deployment of metadata only.

Baixe e instale a versão mais recente do kit de ferramentas ALM por meio do Repositório Git do Analysis Services.Download and install the latest version of the ALM Toolkit from the Analysis Services Git repo. A orientação passo a passo sobre o uso do ALM Toolkit não está incluída na documentação da Microsoft.Step-by-step guidance on using ALM Toolkit is not included in Microsoft documentation. Links de documentação e informações do ALM Toolkit sobre suporte estão disponíveis na faixa de opções Ajuda.ALM Toolkit documentation links and information on supportability are available on the Help ribbon. Para executar uma implantação somente de metadados, faça uma comparação e selecione a instância do Power BI Desktop em execução como fonte e o conjunto de dados existente no serviço como destino.To perform a metadata only deployment, perform a comparison and select the running Power BI Desktop instance as the source, and the existing dataset in the service as the target. Observe as diferenças exibidas e ignore a atualização da tabela com partições de atualização incremental, ou use a caixa de diálogo Opções para reter partições para atualizações da tabela.Consider the differences displayed and skip the update of the table with incremental refresh partitions or use the Options dialog to retain partitions for table updates. Valide a seleção para garantir a integridade do modelo de destino e realize a atualização.Validate the selection to ensure the integrity of the target model and then update.

Kit de ferramentas ALM

Consulte tambémSee also

Partições em modelos tabularesPartitions in tabular models
Configurar a atualização agendadaConfigure scheduled refresh
Atualização incrementalIncremental refresh
Solucionar problemas de atualização incrementalTroubleshoot incremental refresh