Função DAX CALCULATETABLE Vs FILTER

Função DAX CALCULATETABLE Vs FILTER

CALCULATETABLE e são ferramentas poderosas para manipular e analisar dados em consultas DAX, mas têm algumas diferenças importantes que é importante entender

Neste blog, examinaremos a função CALCULATETABLE e seu plano de consulta no DAX studio e entenderemos como ela difere da função FILTER . Ao final, você entenderá melhor como escolher a função certa para suas necessidades de análise de dados.

Para demonstrar, usaremos o código DAX abaixo.

Função DAX CALCULATETABLE Vs FILTER

Ao executar esse código, você obterá uma tabela mostrando Marca e Cor.

Função DAX CALCULATETABLE Vs FILTER

Na guia Query Plans , você obterá um código correspondente ao operador CrossApply no Formula Engine .

Função DAX CALCULATETABLE Vs FILTER

Ao mesmo tempo, você pode ver que o código está recuperando apenas a cor e a marca do produto na guia Horários do servidor .

Função DAX CALCULATETABLE Vs FILTER

Índice

Resultado das temporizações do servidor DAX Studio para CALCULATETABLE

Como exemplo, vamos filtrar a cor do produto para mostrar apenas Vermelho e/ou Preto.

Você pode fazer isso usando a função FILTRO. Ao executá-lo, o Server Timings mostrará que o argumento FILTER não é aplicado ao código xmSQL .

Função DAX CALCULATETABLE Vs FILTER

Mas se você usar a função CALCULATETABLE, a consulta na guia Server Timings mostrará que os resultados foram filtrados por cor do produto.

Função DAX CALCULATETABLE Vs FILTER

Plano de consulta CALCULATETABLE no DAX Studio

Vejamos o Plano de consulta para cada função.

O CALCULATETABLE está na primeira linha do plano de consulta lógica porque é uma função de nível superior no código e, portanto, não depende de nenhum requisito.

Função DAX CALCULATETABLE Vs FILTER

Ao ler o plano de consulta de uma função CALCULATETABLE, você não começa com o primeiro argumento. Você primeiro precisa entender o contexto do filtro usado. Então vamos para a linha 5.

Você pode ver que o operador VertiPaq requer a coluna de cor do produto por causa do filtro aplicado. Em seguida, ele verifica essa coluna e usa a combinação de filtro Not IsEmpty para verificar a cor do produto em cada linha.

Após a preparação do contexto do filtro, o argumento é executado.

Em retrospectiva, se você usar a função FILTER, verá um plano de consulta diferente, portanto, o argumento CROSSJOIN é executado antes de identificar o contexto do filtro.

Função DAX CALCULATETABLE Vs FILTER

A desvantagem dessa abordagem é que ela não envia a condição do filtro para o mecanismo de armazenamento. Você não poderá usar a cláusula WHERE dentro do xmSQL, o que sobrecarregará o Formula Engine.

E quando você estiver trabalhando com várias tabelas, a combinação de filtro da função CROSSJOIN será enorme. Isso diminui o desempenho do código DAX. Assim, na maioria dos casos, é recomendável usar a função CALCULATETABLE.

Portanto, em vez de executar todos os cálculos no Formula Engine, você pode injetar a condição de filtro dentro da classe WHERE do código XMSQL.

Transição de contexto para funções DAX semelhantes

Horários do Servidor

Este conceito também se aplica à função CALCULAR. Vamos usar o código DAX abaixo como exemplo.

Função DAX CALCULATETABLE Vs FILTER

Uma medida tem automaticamente uma função CALCULAR em torno dela.

Ao executar esse código, você obterá uma tabela mostrando o valor total de vendas para cada cor.

Função DAX CALCULATETABLE Vs FILTER

Na guia Server Timings, você pode ver que o código está executando duas consultas. A primeira consulta calcula a soma do valor de Vendas da tabela Vendas em relação à tabela Produtos.

Função DAX CALCULATETABLE Vs FILTER

Por outro lado, a segunda consulta recupera a cor do produto novamente da tabela Produtos. Corresponde à função no código DAX.

Função DAX CALCULATETABLE Vs FILTER

O Formula Engine coloca os caches de dados das duas consultas lado a lado. Ele começa recuperando os valores do segundo cache de dados e, em seguida, executa uma pesquisa no primeiro cache de dados.

Plano de consulta

Na guia Plano de Consulta, o Plano de Consulta Lógica verifica a cor do produto por causa do argumento .

Em seguida, o VertiPaq soma o valor das vendas totais dependendo da cor do produto. Ele realiza a transição de contexto que converte o valor da cor do produto em um contexto de filtro equivalente.

Função DAX CALCULATETABLE Vs FILTER

O filtro criado pela transição de contexto é traduzido em uma propriedade DependOnCols no Plano de Consulta. Depois que o VertiPaq verifica as colunas necessárias para calcular as vendas totais, ele multiplica a quantidade de vendas pelo preço líquido.

As vendas totais são retornadas como resultado na forma de um tipo de dados de moeda. E, finalmente, ADDCOLUMNS retorna uma tabela com duas colunas contendo a cor e o valor total de vendas.

Conclusão

O plano de consulta pode ter um impacto significativo no desempenho de uma consulta, pois diferentes planos de consulta podem ter diferentes níveis de eficiência.

Ao usar as funções CALCULATETABLE e FILTER em uma consulta DAX, o plano de consulta pode diferir dependendo do cenário específico e de vários fatores, como a expressão de fórmula específica que está sendo usada e os recursos do mecanismo de consulta.

Em geral, é uma boa ideia testar e comparar o desempenho de diferentes planos de consulta para determinar a abordagem mais eficiente para um determinado cenário.

Tudo de bom,


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.

Apresentar insights usando a técnica de visuais dinâmicos multithread no LuckyTemplates

Apresentar insights usando a técnica de visuais dinâmicos multithread no LuckyTemplates

Este tutorial abordará como usar a técnica Multi Threaded Dynamic Visuals para criar insights de visualizações de dados dinâmicos em seus relatórios.

Introdução ao contexto de filtro no LuckyTemplates

Introdução ao contexto de filtro no LuckyTemplates

Neste artigo, analisarei o contexto do filtro. O contexto do filtro é um dos principais tópicos sobre os quais qualquer usuário do LuckyTemplates deve aprender inicialmente.

Melhores dicas para usar os aplicativos no serviço online do LuckyTemplates

Melhores dicas para usar os aplicativos no serviço online do LuckyTemplates

Quero mostrar como o serviço online do LuckyTemplates Apps pode ajudar no gerenciamento de diferentes relatórios e insights gerados de várias fontes.

Analisar alterações de margem de lucro ao longo do tempo – Analytics com LuckyTemplates e DAX

Analisar alterações de margem de lucro ao longo do tempo – Analytics com LuckyTemplates e DAX

Aprenda a calcular suas alterações de margem de lucro usando técnicas como ramificação de medida e combinação de fórmulas DAX no LuckyTemplates.

Ideias de materialização para caches de dados no DAX Studio

Ideias de materialização para caches de dados no DAX Studio

Este tutorial discutirá sobre as ideias de materialização de caches de dados e como elas afetam o desempenho dos DAXs no fornecimento de resultados.

Relatórios de negócios usando o LuckyTemplates

Relatórios de negócios usando o LuckyTemplates

Se você ainda estiver usando o Excel até agora, este é o melhor momento para começar a usar o LuckyTemplates para suas necessidades de relatórios de negócios.

O que é o Gateway do LuckyTemplates? Tudo o que você precisa saber

O que é o Gateway do LuckyTemplates? Tudo o que você precisa saber

O que é o Gateway do LuckyTemplates? Tudo o que você precisa saber