Iteradores e transições de contexto em consultas DAX

Este tutorial discutirá a transição de contexto e Iteradores aninhados. Você aprenderá a importância dessas entidades e como elas podem ser uma boa fonte de otimização.

Se você se lembra, a transição de contexto ocorre quando um contexto de linha muda para um contexto de filtro equivalente. Você precisa estar ciente do que está acontecendo quando ocorre uma transição de contexto em seus iteradores, porque geralmente pode gerar resultados lentos.

Índice

Iteradores aninhados versus CALCULATE

Se uma transição de contexto for invocada durante uma iteração, uma tabela de materialização será criada. Isso significa que a transição de contexto é invocada por meio das fórmulas em seu DAX. A tabela é um dado não compactado que é enviado ao mecanismo de fórmula.

Para demonstrar, a primeira medida é para Grandes Vendas que obtém o Preço Atual se for maior ou igual a 500.

Iteradores e transições de contexto em consultas DAX

A próxima medida é para a média das Grandes Vendas com iteradores aninhados.

Iteradores e transições de contexto em consultas DAX

A última medida obtém a média de Big Sales sem um iterador aninhado e um CallBackDataID.

Iteradores e transições de contexto em consultas DAX

Execute a medida com o iterador aninhado. Certifique-se de limpar o cache antes de executar e, em seguida, ative Horários do servidor e Plano de consulta.

Iteradores e transições de contexto em consultas DAX

Você pode ver que gerou 3 varreduras, 2 CallBackDataIDs e 15.003 linhas. Isso é motivo de preocupação porque há apenas 101 linhas para a saída. Isso aconteceu porque a medida tem dois iteradores ou funções X.

Esta é a forma totalmente expandida da medida que foi executada:

Iteradores e transições de contexto em consultas DAX

Está iterando a tabela Fact Sales com . Em seguida, reitera novamente com o CallBackDataID usando . O formato abreviado desta medida tem uma função implícita que invoca a transição de contexto e materializa a tabela. É por isso que extraiu 15.003 linhas, mesmo que haja apenas 101 linhas para saída.

Execute a outra medida que não possui iteradores aninhados. Ainda está iterando a tabela Fact Sales usando AVERAGEX , mas o Current Price está fora da função. Ele filtra os produtos em que o preço atual é maior ou igual a 500 e calcula a média.

Iteradores e transições de contexto em consultas DAX

Você pode ver que ele tem apenas 2 varreduras, 104 linhas e não possui um CallBackDataID. Portanto, se você usar CALCULATE , poderá se livrar dos iteradores aninhados e CallBackDataIDs .


Funções DAX no LuckyTemplates: usando iteradores
Como usar uma função de iteração no LuckyTemplates
Cálculo DAX – Transições de contexto de filtro

Conclusão

Há muitas causas para um DAX de desempenho lento. Um deles é devido a iteradores aninhados que causam transições de contexto desnecessárias. Esses iteradores materializam mais linhas do que o necessário, o que faz com que suas consultas fiquem mais lentas.

A melhor solução para isso é colocá-lo dentro de CALCULATE . Isso cria menos trabalho para o mecanismo de fórmula e maximiza os recursos do mecanismo de armazenamento.

Leave a Comment

Colunas calculadas no SharePoint | Uma visão geral

Colunas calculadas no SharePoint | Uma visão geral

Descubra a importância das colunas calculadas no SharePoint e como elas podem realizar cálculos automáticos e obtenção de dados em suas listas.

Atributos pré-atentivos: como isso pode afetar seu relatório

Atributos pré-atentivos: como isso pode afetar seu relatório

Descubra todos os atributos pré-atentivos e saiba como isso pode impactar significativamente seu relatório do LuckyTemplates

Calcular Dias de Estoque Zero – LuckyTemplates Inventory Management Insights

Calcular Dias de Estoque Zero – LuckyTemplates Inventory Management Insights

Aprenda a contar o número total de dias em que você não tinha estoque por meio dessa técnica eficaz de gerenciamento de inventário do LuckyTemplates.

Usando exibições de gerenciamento dinâmico (DMV) no DAX Studio

Usando exibições de gerenciamento dinâmico (DMV) no DAX Studio

Saiba mais sobre as exibições de gerenciamento dinâmico (DMV) no DAX Studio e como usá-las para carregar conjuntos de dados diretamente no LuckyTemplates.

Variáveis ​​e expressões dentro do editor do Power Query

Variáveis ​​e expressões dentro do editor do Power Query

Este tutorial irá discutir sobre Variáveis e Expressões dentro do Editor do Power Query, destacando a importância de variáveis M e sua sintaxe.

Como calcular a diferença em dias entre compras usando o DAX no LuckyTemplates

Como calcular a diferença em dias entre compras usando o DAX no LuckyTemplates

Aprenda a calcular a diferença em dias entre compras usando DAX no LuckyTemplates com este guia completo.

Calculando a média no LuckyTemplates: isolando os resultados do dia da semana ou do fim de semana usando o DAX

Calculando a média no LuckyTemplates: isolando os resultados do dia da semana ou do fim de semana usando o DAX

Calcular uma média no LuckyTemplates envolve técnicas DAX para obter dados precisos em relatórios de negócios.

O que é self em Python: exemplos do mundo real

O que é self em Python: exemplos do mundo real

O que é self em Python: exemplos do mundo real

Como salvar e carregar um arquivo RDS em R

Como salvar e carregar um arquivo RDS em R

Você aprenderá como salvar e carregar objetos de um arquivo .rds no R. Este blog também abordará como importar objetos do R para o LuckyTemplates.

Primeiros N dias úteis revisitados - uma solução de linguagem de codificação DAX

Primeiros N dias úteis revisitados - uma solução de linguagem de codificação DAX

Neste tutorial de linguagem de codificação DAX, aprenda como usar a função GENERATE e como alterar um título de medida dinamicamente.