Ir para conteúdo
  • 0

Atualização Incremental em Banco ODBC - Firebird


Felipe Emmanuel

Pergunta

  • Alunos

Olá gostaria de saber se é possível colocar atualização incremental no DataFlow de uma consulta ODBC do Firebird. 

No banco Oracle sigo com a consulta abaixo, mas no ODBC não encontrei nada que funcionasse. 

 " AND fat.DAT_HOR_EMISSAO >= TO_DATE('" & Text.From(RangeStart) & "','DD-MM-YYYY HH24:MI:SS') AND fat.DAT_HOR_EMISSAO < TO_DATE('" & Text.From(RangeEnd) & "','DD-MM-YYYY HH24:MI:SS')"

Link para o comentário
Compartilhar em outros sites

10 respostass a esta questão

Posts Recomendados

  • 0
  • Alunos

Suave @Felipe Emmanuel?

Essa questão não é tao simples como parece devido a algumas limitações estruturais do próprio Power BI, então vai requerer um pouquinho de "gambiarra" para dar certo. 

De qualquer maneira, o primeiro ponto é que para ter atualização incremental num dataflow você vai precisar de um workspace com capacidade Premium:

https://learn.microsoft.com/en-us/power-query/dataflows/incremental-refresh

image.png.c8209a136123e9de2ae137e74bf218b2.png

A seguir, a filtragem das datas no código SQL com os parâmetros que você criou (RangeStart) e (RangeEnd) deve usar a função DateTime.ToText:

Citar

'SELECT [...] FROM [...] WHERE [...] AND fat.DAT_HOR_EMISSAO >= ' " & DateTime.ToText(RangeStart, "yyyy-MM-dd hh:mm:ss") & " ' AND fat.DAT_HOR_EMISSAO < ' " & DateTime.ToText(RangeEnd), "yyyy-MM-dd hh:mm:ss") & " '

Esse processo deve ser feito também na coluna data do Power Query utilizando os mesmos parâmetros:

image.png.e60c24761714941e11e06aa03dfb9969.png

Por ultimo, para a atualização incremental funcionar a fonte dos dados precisa permitir uma opção chamada "query folding" e muitas vezes as conexões ODBC feitas com bases Firebird não permitem esse tipo de estrutura:

https://powerbi.microsoft.com/fr-fr/blog/incremental-refresh-query-folding/

Talvez seja necessário debugar um pouco, e pra isso o link abaixo tem umas boas dicas:

https://dhyanintech.medium.com/fixing-query-folding-with-sql-server-in-power-bi-for-incremental-refresh-bcef0f47c263

Boa sorte por ai! E se essa resposta te ajudou, não esquece de marcar como melhor solução 😉

Abs!

Link para o comentário
Compartilhar em outros sites

  • 0
  • Alunos

Muito obrigado @Joao Raulino
 

No link https://dhyanintech.medium.com/fixing-query-folding-with-sql-server-in-power-bi-for-incremental-refresh-bcef0f47c263 tem essa instrução que não conseguir estruturar na minha consulta, consegue me ajudar? 

image.png.c5f222e09c2caa291cb66976fccc91b1.png

Minha Souce é feita dessa forma: 

Origem = Odbc.Query("dsn=FAMA",SQL)
Link para o comentário
Compartilhar em outros sites

  • 0
  • Alunos

@Joao Raulino ainda não consegui, na tabela que estou utilizando não contem a coluna "DateID", tive que fazer manualmente no SQL. 

 

Retirei o [EnableFolding = true]  pois estava dando esse erro abaixo:

image.png.d8613269b61a9d5aa64189afcf2f5e02.png

 

Segue M como estou executando:

image.png.4d2e2c26d8092e85c152e48d237fc85e.png

image.png.f29c8bc0c3b3f209e5b46d589afac097.png

 

Ele executa, mas sem nenhuma performance adicional. Sabe dizer onde posso corrigir?

Link para o comentário
Compartilhar em outros sites

  • 0
  • Alunos

Boa @Felipe Emmanuel!

Conseguiu avançar com o teu problema? Tive um desafio parecido recentemente (necessidade de fazer atualização incremental com uma fonte ODBC) e encontrei uma solução bem simples para resolver:

  1. Criei um fluxo de dados que se conecta a fonte ODBC buscando todos os dados históricos ate hoje (10 anos).
  2. Criei um conjunto de dados que se conecta ao fluxo de dados acima. Configurei a atualização incremental neste conjunto de dados para atualizar os últimos 30 dias e congelar o resto.
  3. Apos primeira atualização do conjunto de dados e a criação das partições pelo serviço do Power BI, modifiquei o fluxo de dados para buscar somente os últimos 45 dias.

Com isso consegui diminuir o tempo de atualização de 30 minutos para 50 segundos! Vale a pena tentar essa solução do teu lado se ainda tiver com problemas de performance 😉

Abs!

 

Link para o comentário
Compartilhar em outros sites

  • 0
  • Alunos
1 minuto atrás, Felipe Emmanuel disse:

Então toda vez que tiver uma nova publicação do PBIX tem que seguir esse procedimento. Correto?
 

Exato! Esse é o downside.

Convém só aplicar numa versão estável do teu modelo, onde você sabe que não vai ter muitas modificações.

Link para o comentário
Compartilhar em outros sites

Faça login para comentar

Você vai ser capaz de deixar um comentário após fazer o login



Entrar Agora
×
×
  • Criar Novo...