Otimizando Consultas no DAX e Power Query 🚀
💡Dicas riquíssimas para quem esta com problemas de performance nas transformações do PowerQuery 🚀
LinkedIn: Júlio César Droszczak 😉
Filtros complexos podem tornar suas consultas mais lentas em DAX e Power Query. Para otimizar sua performance, substituímos condições OR por formas mais eficientes de comparação. Vou te mostrar como! 😉
DAX: Substituindo OR por IN
No DAX, uma prática comum para acelerar a performance é trocar as múltiplas comparações OR por IN. Isso torna o código mais limpo e rápido.
🔴 Consulta com OR:
CALCULATETABLE(
'Tabela',
'Tabela'[coluna] = "A" || 'Tabela'[coluna] = "B" || 'Tabela'[coluna] = "C"
)
🟢 Consulta otimizada com IN:
CALCULATETABLE(
'Tabela',
'Tabela'[coluna] IN {"A", "B", "C"}
)
🔍 Por que usar IN?
Essa função evita que o engine precise avaliar cada condição separadamente, melhorando a eficiência da consulta.
Power Query: Usando List.Contains e Table.Buffer
No Power Query, você pode substituir múltiplas condições OR por List.Contains. Além disso, Table.Buffer e List.Buffer podem ser usados para armazenar dados em memória e evitar recalcular a tabela.
🔴 Consulta com OR:
Table.SelectRows(Tabela, each [coluna] = "A" or [coluna] = "B" or [coluna] = "C")
🟢 Consulta otimizada com List.Contains e Table.Buffer:
let
ListaValores = List.Buffer({"A", "B", "C"}),
TabelaComBuffer = Table.Buffer(Tabela),
Resultado = Table.SelectRows(TabelaComBuffer, each List.Contains(ListaValores, [coluna]))
in
Resultado
🔍 Por que usar Buffer?
Quando trabalhamos com grandes conjuntos de dados, usar Table.Buffer evita recalcular tabelas a cada nova operação, melhorando a performance geral do processo.