Configurar a atualização incrementalConfigure incremental refresh

Este artigo descreve como configurar a atualização incremental para conjuntos de dados.This article describes how to configure incremental refresh for datasets. Para saber mais sobre como configurar a atualização incremental para fluxos de dados, confira Recursos premium de fluxos de dados – atualização incremental.To learn about configuring incremental refresh for dataflows, see Premium features of dataflows - Incremental refresh.

A configuração da atualização incremental inclui a criação dos parâmetros RangeStart e RangeEnd, a aplicação de filtros e a definição de uma política de atualização incremental.Configuring incremental refresh includes creating RangeStart and RangeEnd parameters, applying filters, and defining an incremental refresh policy. Após publicar no serviço, você executa uma operação de atualização inicial no conjunto de dados.After publishing to the service, you perform an initial refresh operation on the dataset. A operação de atualização inicial e as operações de atualização posteriores aplicam a política de atualização incremental definida por você.The initial refresh operation, and subsequent refresh operations apply the incremental refresh policy you defined. Antes de concluir essas etapas, compreenda totalmente a funcionalidade descrita em Atualização incremental para conjuntos de dados.Before completing these steps, be sure you fully understand the functionality described in Incremental refresh for datasets.

Criar parâmetrosCreate parameters

Nesta tarefa, use o Editor do Power Query para criar os parâmetros RangeStart e RangeEnd com valores padrão.In this task, use Power Query Editor to create RangeStart and RangeEnd parameters with default values. Os valores padrão se aplicam somente ao filtrar os dados a serem carregados no modelo no Power BI Desktop.The default values apply only when filtering the data to be loaded into the model in Power BI Desktop. Os valores inseridos devem incluir apenas pequenas quantidades dos dados mais recentes.The values you enter should include only small amount of the most recent data. Quando publicados no serviço, esses valores são substituídos pela política de atualização incremental.When published to the service, these values are overridden by the incremental refresh policy.

  1. No Power BI Desktop, clique em Transformar dados para abrir o Editor do Power Query.In Power BI Desktop, click Transform data to open Power Query Editor.

  2. Clique em Gerenciar Parâmetros > Novo Parâmetro.Click Manage Parameters > New Parameter.

  3. Em Gerenciar Parâmetros > Nome, digite RangeStart (diferencia maiúsculas de minúsculas), em Tipo, selecione Data/hora e, em Valor Atual, insira um valor de data/hora inicial, por exemplo, 1/25/2014 12:00:00 AM.In Manage Parameters > Name, type RangeStart (case sensitive), then in Type, select Date/Time, and then in Current Value enter a start date/time value, for example, 1/25/2014 12:00:00 AM.

    Definir o parâmetro de Início do Intervalo na caixa de diálogo Gerenciar Parâmetros

  4. Crie um segundo parâmetro chamado RangeEnd.Create a second parameter named RangeEnd. Em Tipo, selecione Data/hora e, em Valor Atual, insira um valor de data/hora de término.In Type, select Date/Time, and then in Current Value enter an end date/time value. Neste exemplo, especificamos 28/01/2014 00:00:00, ou seja, a data e a hora da última transação na tabela da fonte de dados.In this example, we specify 1/28/2014 12:00:00 AM, which is the last transaction date and time in the data source table.

    Definir o parâmetro de Fim do Intervalo na caixa de diálogo Gerenciar Parâmetros

Agora que você tem os parâmetros RangeStart e RangeEnd, filtre os dados a serem carregados no modelo com base nesses parâmetros.Now that you have RangeStart and RangeEnd parameters, you then filter the data to be loaded into the model based on those parameters.

Filtrar dadosFilter data

Observação

Antes de continuar com essa tarefa, verifique se a tabela de origem tem uma coluna de data do tipo de dados Data/hora.Before continuing with this task, verify your source table has a date column of Date/Time data type. Se não tiver, mas tiver uma coluna de data de chaves alternativas inteiras na forma de yyyymmdd, siga as etapas em Converter DateTime em inteiro, mais adiante neste artigo, para criar uma função que converte o valor de data/hora nos parâmetros para corresponder à chave alternativa inteira da tabela de origem.If not, but has a date column of integer surrogate keys in the form of yyyymmdd, follow the steps in Convert DateTime to integer later in this article to create a function that converts the date/time value in the parameters to match the integer surrogate key of the source table.

Com os parâmetros RangeStart e RangeEnd definidos, aplique um filtro baseado nas condições nos parâmetros RangeStart e RangeEnd.With RangeStart and RangeEnd parameters defined, apply a filter based on conditions in the RangeStart and RangeEnd parameters.

  1. No Editor do Power Query, selecione a coluna de data segundo a qual deseja filtrar e clique no ícone de filtro > Filtros de data/hora > Filtro personalizado.In Power Query Editor, select the date column you want to filter on, and then click the filter icon > Date/Time Filters > Custom Filter.

  2. Em Filtrar linhas, para especificar a primeira condição, selecione é posterior ou é posterior ou igual a, selecione Parâmetro e escolha RangeStart.In Filter Rows, to specify the first condition, select is after or is after or equal to, then select Parameter, and then select RangeStart.

    Para especificar a segunda condição, se você selecionou é posterior na primeira condição, selecione é anterior ou igual a, ou, se você selecionou é posterior ou igual a na primeira condição, selecione é anterior na segunda condição. Depois, selecione Parâmetro e escolha RangeEnd.To specify the second condition, if you selected is after in the first condition, then select is before or equal to, or if you selected is after or equal to in the first condition, then select is before for the second condition, then select Parameter, and then select RangeEnd. Por exemplo,For example,

    Filtrar linhas

    Importante: cerifique se as consultas têm um sinal de igual a (=) em RangeStart ou em RangeEnd, mas não em ambos.Important: Verify queries have an equal to (=) on either RangeStart or RangeEnd, but not both. Se o sinal de igual a (=) existir em ambos os parâmetros, uma linha poderá atender às condições para duas partições, o que poderá levar a dados duplicados no modelo.If the equal to (=) exists on both parameters, a row could satisfy the conditions for two partitions, which could lead to duplicate data in the model. Por exemplo, #"Filtered Rows" = Table.SelectRows(dbo_Fact, each [OrderDate] >= RangeStart and [OrderDate] <= RangeEnd) pode resultar em dados duplicados.For example, #"Filtered Rows" = Table.SelectRows(dbo_Fact, each [OrderDate] >= RangeStart and [OrderDate] <= RangeEnd) could result in duplicate data.

    Clique em OK para fechar.Click OK to close.

  3. No Editor do Power Query, clique em Fechar e Aplicar.In Power Query Editor, click Close & Apply. O Power Query carregará os dados com base nos filtros definidos nos parâmetros RangeStart e RangeEnd e em qualquer outro filtro que você definiu.Power Query will then load data based on the filters defined in the RangeStart and RangeEnd parameters, and any other filters you defined.

    O Power Query carrega apenas dados especificados entre os parâmetros RangeStart e RangeEnd.Power Query loads only data specified between the RangeStart and RangeEnd parameters. Dependendo da quantidade de dados nesse período, o carregamento deve ser rápido.Depending on the amount of data in that period, load should go quickly. Se ele parece lento, com uso intensivo de processos, é provável que a dobragem de consultas não esteja acontecendo.If it seems slow and process intensive, it's likely the query is not folding.

Definir a políticaDefine policy

Depois de definir os parâmetros RangeStart e RangeEnd e filtrar os dados com base neles, você define uma política de atualização incremental.After you've defined RangeStart and RangeEnd parameters, and filtered data based on those parameters, you define an incremental refresh policy. A política é aplicada somente após o modelo ser publicado no serviço e uma operação de atualização manual ou agendada ser executada.The policy is applied only after the model is published to the service and a manual or scheduled refresh operation is performed.

  1. Na Exibição de dados > Campos > abra o menu de contexto da tabela e clique em Atualização incremental.In Data view > Fields > open the context menu for the table, and then click Incremental refresh.

    Menu de contexto da tabela

  2. Em Atualização incremental > Tabela, verifique ou selecione a tabela e clique no controle deslizante Atualização incremental para que fique Ativado.In Incremental refresh > Table, verify or select the table, and then click the Incremental refresh slider to On. Se o controle deslizante está desabilitado, isso significa que a expressão do Power Query para a tabela não inclui um filtro baseado nos parâmetros RangeStart e RangeEnd.If the slider is disabled, it means the Power Query expression for the table does not include a filter based on the RangeStart and RangeEnd parameters.

  3. Em Armazenar linhas em que a coluna "columnname" está no último: , especifique o período de armazenamento histórico que deseja incluir no conjunto de dados.In Store rows where column "columnname" is in the last:, specify the historical store period you want to include in the dataset. Todas as linhas com datas nesse período serão carregadas no conjunto de dados no serviço, a menos que outros filtros se apliquem.All rows with dates in this period will be loaded into the dataset in the service, unless other filters apply.

  4. Em Atualizar linhas em que a coluna "ColumnName" está no último: , especifique o período de atualização.In Refresh rows where column "columnname" is in the last:, specify the refresh period. Todas as linhas com datas neste período serão atualizadas no conjunto de dados sempre que uma operação de atualização manual ou agendada for executada.All rows with dates in this period will be refreshed in the dataset each time a manual or scheduled refresh operation is performed.

    Caixa de diálogo atualizar política

  5. Selecione as configurações opcionais:Select optional settings:

    Selecione Detectar alterações nos dados, para especificar uma coluna de data/hora usada para identificar e atualizar somente os dias em que os dados foram alterados.Select Detect data changes to specify a date/time column used to identify and refresh only the days where the data has changed. Uma coluna de data/hora precisa existir, geralmente para fins de auditoria, na fonte de dados.A date/time column must exist, usually for auditing purposes, at the data source. Ela não deve ser a mesma coluna usada para particionar os dados com os parâmetros RangeStart e RangeEnd.This should not be the same column used to partition the data with the RangeStart and RangeEnd parameters. O valor máximo dessa coluna é avaliado para cada um dos períodos no intervalo incremental.The maximum value of this column is evaluated for each of the periods in the incremental range. Se ele não foi alterado desde a última atualização, o período atual não é atualizado.If it has not changed since the last refresh, the current period is not refreshed. Para conjuntos de dados publicados para capacidades Premium, você também pode especificar uma consulta personalizada.For datasets published to Premium capacities, you can also specify a custom query. Para saber mais, confira Atualização incremental avançada – Consultas personalizadas para detectar alterações de dados.To learn more, see Advanced incremental refresh - Custom queries for detect data changes.

    Selecione Atualizar somente dias completos para atualizar somente dias inteiros.Select Only refresh complete days to refresh only whole days. Se a operação de atualização detectar que um dia não está completo, as linhas referentes a esse dia inteiro não serão atualizadas.If the refresh operation detects a day is not complete, rows for that whole day are not refreshed.

  6. Clique em Aplicar tudo para concluir a política de atualização.Click Apply all to complete the refresh policy. Os dados de origem não são carregados com esta etapa.Source data is not loaded with this step.

Salvar e publicar no serviçoSave and publish to the service

Quando os parâmetros RangeStart e RangeEnd, a filtragem e os parâmetros de atualização estiverem concluídos, salve o modelo e publique no serviço.When your RangeStart and RangeEnd parameters, filtering, and refresh parameters are complete, be sure to save your model, and then publish to the service. Se o conjunto de dados ficar grande, habilite o Formato de armazenamento de conjunto de dados grande antes de invocar a primeira atualização no serviço.If your dataset will become large, be sure to enable Large dataset storage format prior to invoking the first refresh in the service.

Atualizar conjunto de dadosRefresh dataset

No serviço, atualize o conjunto de dados.In the service, refresh the dataset. A primeira atualização carregará dados novos e atualizados no período de atualização, bem como dados históricos de todo o período de armazenamento.The first refresh will load both new and updated data in the refresh period as well historical data for the entire store period. Dependendo da quantidade de dados, isso pode levar muito tempo.Depending on the amount of data, this can take quite a long time. Atualizações posteriores, manuais ou agendadas, normalmente são muito mais rápidas porque a política de atualização incremental é aplicada e somente dados do período especificado na configuração da política de atualização são atualizados.Subsequent refreshes, either manual or scheduled are typically much faster because the incremental refresh policy is applied and only data for the period specified in the refresh policy setting is refreshed.

Converter DateTime em inteiroConvert DateTime to integer

Esta tarefa é opcional.This task is optional.

O tipo de dados dos parâmetros RangeStart e RangeEnd deve ser data/hora.The data type of the RangeStart and RangeEnd parameters must be of date/time data type. No entanto, para muitas fontes de dados, as tabelas não têm uma coluna de tipo de dados de data/hora, e sim uma coluna de datas de chaves alternativas inteiras na forma de yyyymmdd.However, for many data sources, tables don't have a column of date/time data type but instead have a date column of integer surrogate keys in the form of yyyymmdd. Você pode criar uma função que converte o valor de data/hora nos parâmetros para corresponder à chave alternativa inteira da tabela da fonte de dados.You can create a function that converts the date/time value in the parameters to match the integer surrogate key of the data source table. Em seguida, a função é chamada em uma etapa de filtro.The function is then called in a filter step. Essa etapa será necessária se a tabela da fonte de dados contiver apenas uma chave alternativa como o tipo de dados Integer.This step is required if the data source table contains only a surrogate key as integer data type.

  1. No Editor do Power Query, clique em Obter dados > Consulta em branco.In Power Query Editor, click Get data > Blank Query.

  2. Em Configurações da consulta, digite um nome, por exemplo, DateKey e, no editor de fórmulas, insira a seguinte fórmula:In Query Settings, type a name, for example, DateKey, and then in the formula editor, enter the following formula:

    = (x as datetime) => Date.Year(x)*10000 + Date.Month(x)*100 + Date.Day(x)

    Criar função DateKey

  3. Para testar a fórmula, em Inserir parâmetro, insira um valor de data/hora e clique em Invocar.To test the formula, in Enter Parameter, enter a date\time value, and then click Invoke. Se a fórmula estiver correta, será retornado um valor inteiro para a data.If the formula is correct, an integer value for the date is returned. Depois de verificar, exclua a consulta da função invocada.After verifying, delete the invoked function query.

  4. Em Consultas, selecione a tabela e edite a fórmula da consulta para chamar a função com os parâmetros RangeStart e RangeEnd.In Queries, select the table, and then edit the query formula to call the function with the RangeStart and RangeEnd parameters. Por exemplo,For example,

    = Table.SelectRows(#"Sorted Rows", each [OrderDateKey] > DateKey(RangeStart) and [OrderDateKey] <= DateKey(RangeEnd))

    Aplicar o filtro DateKey

Consulte tambémSee also

Solucionar problemas de configuração da atualização incrementalTroubleshoot configuring incremental refresh
Atualização incremental avançada com o ponto de extremidade XMLAAdvanced incremental refresh with the XMLA endpoint
Configurar a atualização agendadaConfigure scheduled refresh