Configurar atualização incremental e dados em tempo real
Este artigo descreve como configurar a atualização incremental e dados em tempo real para modelos semânticos. Para saber mais sobre como configurar a atualização incremental para fluxos de dados, consulte Recursos premium de fluxos de dados - Atualização incremental.
A configuração da atualização incremental inclui a criação de parâmetros RangeStart e RangeEnd, a aplicação de filtros e a definição de uma política de atualização incremental. Depois de publicar no serviço do Power BI, você executará uma operação de atualização inicial no modelo. A operação de atualização inicial e as operações de atualização subsequentes aplicam a política de atualização incremental que você definiu. Antes de concluir essas etapas, certifique-se de entender completamente a funcionalidade descrita em Atualização incremental e dados em tempo real para modelos semânticos.
Criar parâmetros
Nesta tarefa, utilizará o Editor do Power Query para criar parâmetros RangeStart e RangeEnd com valores predefinidos. Os valores padrão se aplicam somente ao filtrar os dados a serem carregados no modelo no Power BI Desktop. Os valores inseridos devem incluir apenas uma pequena quantidade dos dados mais recentes da sua fonte de dados. Quando publicada no serviço, a política de atualização incremental substitui esses valores de intervalo de tempo. Ou seja, a política cria janelas de dados recebidos, uma após a outra.
No Power BI Desktop, selecione Transformar dados na faixa de opções Página Inicial para abrir o Editor do Power Query.
Selecione a lista suspensa Gerenciar parâmetros e, em seguida, escolha Novo parâmetro.
No campo Nome, insira RangeStart (diferencia maiúsculas de minúsculas). No campo Tipo, selecione Data/Hora na lista suspensa. No campo Valor Atual, insira um valor de data e hora de início.
Selecione Novo para criar um segundo parâmetro chamado RangeEnd. No campo Tipo, selecione Data/Hora e, em seguida, no campo Valor Atual, insira um valor de data e hora de término. Selecione OK.
Agora que você definiu os parâmetros RangeStart e RangeEnd, filtrará os dados a serem carregados no modelo com base nesses parâmetros.
Filtrar dados
Nota
Antes de continuar com esta tarefa, verifique se a tabela de origem tem uma coluna de data do tipo de dados Data/Hora. Se ele não tiver uma coluna Data/Hora, mas tiver uma coluna de data de chaves substitutas inteiras na forma de yyyymmdd
, siga as etapas em Converter DateTime em inteiro mais adiante neste artigo para criar uma função que converta o valor de data/hora nos parâmetros para corresponder à chave substituta inteira da tabela de origem.
Agora você aplicará um filtro com base nas condições nos parâmetros RangeStart e RangeEnd.
No Power Query Editor, selecione a coluna de data em que pretende filtrar e, em seguida, escolha a seta >pendente Filtros de>Data Filtro Personalizado.
Em Filtrar Linhas, para especificar a primeira condição, selecione é depois ou é depois ou igual a, escolha Parâmetro e, em seguida, escolha RangeStart.
Para especificar a segunda condição, se você selecionou é depois na primeira condição, escolha é antes ou igual a, ou se você selecionou é depois ou igual a na primeira condição, escolha é antes para a segunda condição, escolha Parâmetro e, em seguida, escolha RangeEnd.
Importante: Verifique se as consultas têm um igual a (=) em RangeStart ou RangeEnd, mas não em ambos. Se o igual a (=) existir em ambos os parâmetros, uma linha pode satisfazer as condições para duas partições, o que pode levar a dados duplicados no modelo. Por exemplo,
= Table.SelectRows(#"Changed Type", each [OrderDate] >= RangeStart and [OrderDate] <= RangeEnd)
pode resultar em dados duplicados se houver um OrderDate igual a RangeStart e RangeEnd.Selecione OK para fechar.
No friso Base do Power Query Editor, selecione Fechar & Aplicar. O Power Query carrega dados com base nos filtros definidos pelos parâmetros RangeStart e RangeEnd e em quaisquer outros filtros que tenha definido.
O Power Query carrega apenas dados especificados entre os parâmetros RangeStart e RangeEnd. Dependendo da quantidade de dados nesse período, a tabela deve ser carregada rapidamente. Se parecer lenta e intensiva em processos, é provável que a consulta não esteja dobrando.
Definir policy
Depois de definir os parâmetros RangeStart e RangeEnd e filtrar os dados com base nesses parâmetros, você definirá uma política de atualização incremental. Essa política é aplicada somente depois que o modelo é publicado no serviço e uma operação de atualização manual ou agendada é executada.
Na vista de Tabela, clique com o botão direito do rato numa tabela no painel Dados e selecione Atualização incremental.
Em Atualização incremental e dados>em tempo real Selecione a tabela, verifique ou selecione a tabela. O valor padrão da caixa de listagem Selecionar tabela
é a tabela selecionada no modo de exibição Tabela. Especifique as configurações necessárias:
Em Definir intervalos>de importação e atualização: atualizar incrementalmente esta tabela, mova o controle deslizante para Ativado. Se o controlo de deslize estiver desativado, significa que a expressão do Power Query para a tabela não inclui um filtro baseado nos parâmetros RangeStart e RangeEnd.
Em Início de dados de arquivamento, especifique o período de armazenamento histórico que você deseja incluir no modelo. Todas as linhas com datas neste período serão carregadas no modelo no serviço, a menos que outros filtros se apliquem.
Em Iniciar dados de atualização incremental, especifique o período de atualização . Todas as linhas com datas nesse período serão atualizadas no modelo sempre que uma operação de atualização manual ou agendada for executada pelo serviço do Power BI.
Especifique as configurações opcionais:
Em Escolher configurações opcionais, selecione Obter os dados mais recentes em tempo real com DirectQuery (somente Premium) para incluir as alterações de dados mais recentes que ocorreram na fonte de dados após o último período de atualização. Essa configuração faz com que a política de atualização incremental adicione uma partição DirectQuery à tabela.
Selecione Atualizar apenas dias completos para atualizar apenas dias inteiros. Se a operação de atualização detetar que um dia não está concluído, as linhas desse dia inteiro não serão atualizadas. Essa opção é ativada automaticamente quando você seleciona Obter os dados mais recentes em tempo real com o DirectQuery (somente Premium).
Selecione Detetar alterações de dados para especificar uma coluna de data/hora usada para identificar e atualizar apenas os dias em que os dados foram alterados. Uma coluna de data/hora deve existir, geralmente para fins de auditoria, na fonte de dados. Esta coluna não deve ser a mesma usada para particionar os dados com os parâmetros RangeStart e RangeEnd. O valor máximo desta coluna é avaliado para cada um dos períodos no intervalo incremental. Se não tiver sido alterado desde a última atualização, o período atual não será atualizado. Para modelos publicados em capacidades Premium, você também pode especificar uma consulta personalizada. Para saber mais, consulte Atualização incremental avançada - consultas personalizadas para detetar alterações de dados.
Dependendo das suas configurações, sua política deve ter esta aparência:
Reveja as suas definições e, em seguida, selecione Aplicar para concluir a política de atualização. Esta etapa não carrega dados.
Salvar e publicar no serviço
Agora que os parâmetros RangeStart e RangeEnd, as configurações de política de filtragem e atualização estão concluídas, salve seu modelo e publique no serviço. Se o seu modelo se tornar grande, certifique-se de ativar formato de armazenamento de modelo grandeantes de invocar a primeira atualização no serviço.
Atualizar modelo
No serviço, atualize o modelo. A primeira atualização carrega dados novos e atualizados no período de atualização, bem como dados históricos de todo o período de armazenamento. Dependendo da quantidade de dados, essa atualização pode demorar um pouco. As atualizações subsequentes, sejam manuais ou agendadas, geralmente são muito mais rápidas porque a política de atualização incremental é aplicada e apenas os dados do período especificado na configuração de política de atualização são atualizados.
Converter DateTime em inteiro
Essa tarefa só será necessária se a tabela usar chaves substitutas inteiras em vez de valores de Data/Hora na coluna de data usada para a definição de filtro RangeStart e RangeEnd.
O tipo de dados dos parâmetros RangeStart e RangeEnd deve ser do tipo de dados data/hora, independentemente do tipo de dados da coluna de data. No entanto, para muitas fontes de dados, as tabelas não têm uma coluna de tipo de dados de data/hora, mas têm uma coluna de data de chaves substitutas inteiras na forma de yyyymmdd
. Normalmente, não é possível converter essas chaves substitutas inteiras para o tipo de dados Data/Hora porque o resultado seria uma expressão de consulta não dobrável, mas você pode criar uma função que converta o valor de data/hora nos parâmetros para corresponder à chave substituta inteira da tabela da fonte de dados sem perder a capacidade de dobragem. A função é então chamada em uma etapa de filtro. Esta etapa de conversão é necessária se a tabela da fonte de dados contiver apenas uma chave substituta como tipo de dados inteiro.
No friso Base no Power Query Editor, selecione o menu pendente Nova Origem e, em seguida, selecione Consulta em Branco.
Em Definições de Consulta, introduza um nome, por exemplo, DateKey e, em seguida, no editor de fórmulas, introduza a seguinte fórmula:
= (x as datetime) => Date.Year(x)*10000 + Date.Month(x)*100 + Date.Day(x)
Para testar a fórmula, em Inserir Parâmetro, insira um valor de data/hora e selecione Invocar. Se a fórmula estiver correta, um valor inteiro para a data será retornado. Depois de verificar, exclua esta nova consulta de função invocada.
Em Consultas, selecione a tabela e edite a fórmula de consulta para chamar a função com os parâmetros RangeStart e RangeEnd.
= Table.SelectRows(#"Reordered Column OrderDateKey", each [OrderDateKey] > DateKey(RangeStart) and [OrderDateKey] <= DateKey(RangeEnd))