image

Acesse bootcamps ilimitados e +650 cursos

50
%OFF
Article image
Júlio Droszczak
Júlio Droszczak25/09/2024 12:09
Compartilhe

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.

    Compartilhe
    Comentários (0)