Otimização DAX: onde encontrar a armadilha DAX oculta

Quero me concentrar hoje em algo que chamo de armadilha DAX oculta. Se você se deparar com essa situação, sentirá que está perdendo a cabeça porque seu DAX parecerá correto, mas não funcionará. Vou orientá-lo quando isso ocorrer e o que você pode fazer a respeito e, no processo, também falarei sobre algumas práticas recomendadas gerais de otimização de DAX. Você pode assistir ao vídeo completo deste tutorial na parte inferior deste blog.

Vamos primeiro dar uma olhada no que estamos trabalhando aqui. Temos cerca de 10 anos de dados do Internet Movie Database. As tabelas de fatos são bastante simples e temos dados de classificação, dados de orçamento e dados brutos.

Hoje, veremos as receitas mundiais.

Otimização DAX: onde encontrar a armadilha DAX oculta

Também temos nossa tabela de datas estendida. Esta será uma análise de inteligência de tempo baseada na tabela de datas e na tabela de fatos.

Otimização DAX: onde encontrar a armadilha DAX oculta

Índice

Total Bruto Mundial por Ano

Queremos fazer algo realmente comum e simples. Nosso Total Worldwide Gross é apenas uma medida de soma agregada muito simples, que queremos converter em uma porcentagem.

Otimização DAX: onde encontrar a armadilha DAX oculta

Para fazer isso, pegamos o numerador ( medida Total Worldwide Gross ) e o denominador ( medida Total Worldwide Gross , mas removemos o contexto do filtro de ano).

Otimização DAX: onde encontrar a armadilha DAX oculta

Eu usei a porque acho que é mais intuitivo quando você lê o código, mas se você preferir a , também funciona. Nós apenas dividimos o numerador pelo denominador para obter o resultado.

Se pegarmos a medida resultante e a colocarmos em nossa tabela, você verá que ela faz exatamente o que esperamos. Obtemos 100% na parte inferior e convertemos os anos em suas porcentagens individuais. Até agora tudo bem e ainda não encontramos nenhum problema.

Otimização DAX: onde encontrar a armadilha DAX oculta

Total Bruto Mundial por Trimestre

Vamos dar uma olhada em uma situação semelhante em que passamos por trimestre. Essa medida pode ser útil porque existe a hipótese de que as receitas da temporada de filmes de verão são diferentes do início do ano e no final do ano que antecede a temporada do Oscar.

Novamente, temos exatamente a mesma medida com a função REMOVEFILTERS nos números do trimestre em vez do ano.

Otimização DAX: onde encontrar a armadilha DAX oculta

E se colocarmos a medida que acabamos de fazer na tabela, ela também faz exatamente o que esperamos.

Otimização DAX: onde encontrar a armadilha DAX oculta

Total Bruto Mundial por Mês e Ano

Vamos dar uma olhada no terceiro caso, que pode ser muito comum, onde queremos olhar por mês e ano.

Otimização DAX: onde encontrar a armadilha DAX oculta

Novamente, usaremos a mesma medida de antes. Mas desta vez, vamos remover o filtro de mês e ano.

Otimização DAX: onde encontrar a armadilha DAX oculta

Vamos colocar esse em nossa mesa. De repente, não funciona.

Otimização DAX: onde encontrar a armadilha DAX oculta

Podemos dizer o que não está funcionando. Sabemos que a medida Bruto Mundial funciona, o que significa que o numerador está correto, mas o denominador não. Em cada um dos casos anteriores, a função REMOVEFILTERS removeu o filtro corretamente, mas aqui claramente não.

Na verdade, podemos testar isso alterando o que retornamos aqui no resultado.

Otimização DAX: onde encontrar a armadilha DAX oculta

Em vez de Resultado, vamos usar Denominador. Lembre-se de que isso será formatado em uma porcentagem, então parecerá um pouco engraçado.

Otimização DAX: onde encontrar a armadilha DAX oculta

O que deveríamos obter para o denominador é o mesmo número em todas as linhas, mas não é.

Otimização DAX: onde encontrar a armadilha DAX oculta

Podemos dizer que não está removendo o filtro de mês e ano e achamos que é porque o mês e o ano estão no texto.

Otimização DAX: onde encontrar a armadilha DAX oculta

Mas o anterior para trimestre também foi expresso em texto, então não é simplesmente porque é texto. Só precisa ser resolvido. Depois de soltar o campo sem classificá-lo, ele será classificado em ordem alfabética.

Na tabela de data estendida, vamos dar uma olhada no campo chamado Month & Year . Se observarmos na coluna Classificar por , veremos algo interessante.

Veremos que essa coluna é classificada por um número numérico chamado MonthnYear. Quando você classifica uma coluna por outra, essa coluna de classificação torna-se, na verdade, parte do contexto do filtro. Isso é o que está prejudicando esse cálculo.

Otimização DAX: onde encontrar a armadilha DAX oculta

Vamos voltar à nossa medida e remover o contexto do mês e ano que estamos usando como classificação.

Otimização DAX: onde encontrar a armadilha DAX oculta

Agora estamos obtendo exatamente o que deveríamos, que é o mês e o ano calculados como uma porcentagem adequada.

Otimização DAX: onde encontrar a armadilha DAX oculta

Ao remover um contexto de filtro, serão necessários dois campos para fazer isso quando ele for classificado . Você pode perguntar que, em vez de ter que preencher dois campos aqui, por que não podemos simplesmente remover filtros em toda a tabela de datas?

A resposta é que podemos, e isso funcionará para os três exemplos dos quais falamos porque cada uma dessas colunas faz parte de nossa tabela de datas. Remover todo o contexto de filtro dessa tabela funcionará para todos os três casos, mas na verdade é uma má ideia.

Como princípio geral de otimização DAX, você precisa remover o máximo de contexto de filtro necessário para obter o resultado desejado.

Na maioria dos casos, você não apresentará isso em um formato tabular. Você o apresentará como uma matriz e precisará de uma medida mais complexa porque possui duas granularidades diferentes na mesma coluna. Essa medida parece complicada, mas na verdade não é.

Otimização DAX: onde encontrar a armadilha DAX oculta

Esta é apenas uma extensão do que já fizemos. A primeira parte desse cálculo de otimização DAX mostra os denominadores para as diferentes granularidades. Removemos o contexto do filtro para um mês, para o ano e para toda a tabela.

Otimização DAX: onde encontrar a armadilha DAX oculta

Para a segunda parte do cálculo, usamos SWITCH TRUE. Para esta função, você deve ir do mais específico para o menos específico. Mês é o nosso escopo mais restrito e específico, então é aqui que começamos. Precisamos remover o contexto usando esses dois campos que identificamos.

Otimização DAX: onde encontrar a armadilha DAX oculta

Para o escopo do ano, temos que remover o contexto no ano e remover o contexto na tabela inteira.

Otimização DAX: onde encontrar a armadilha DAX oculta

Vamos dar uma olhada no que acontece se pegarmos e removermos o contexto em toda a tabela de datas . Usaremos uma medida diferente que remove o contexto em toda a tabela de datas para todos os três casos.

Otimização DAX: onde encontrar a armadilha DAX oculta

Veremos que a medida está removendo demais o contexto. Em vez de calcular a contribuição de cada mês para aquele ano, está calculando a contribuição daquele mês para todo o conjunto de dados. Não é isso que queremos que aconteça porque remover o contexto de toda a mesa é realmente apenas um instrumento cego quando um bisturi é necessário.

Conclusão

Existem muitos casos em que você tem uma matriz e precisa controlar cuidadosamente qual contexto você remove. Apenas remover o contexto da tabela inteira causará esse tipo de problema.

Espero que, quando essa situação surgir (o que invariavelmente ocorrerá, em algum momento), você a reconheça como a armadilha oculta que discutimos nesta postagem de otimização DAX e seja capaz de evitá-la sem a mesma frustração que isso me causou quando o vi pela primeira vez e não consegui descobrir por que meu DAX não estava funcionando corretamente.

Se você gostou do tópico de otimização DAX abordado neste tutorial específico, assine o canal de TV LuckyTemplates . Temos uma grande quantidade de conteúdo sendo publicado o tempo todo, meu e de vários criadores de conteúdo, todos dedicados a melhorar a maneira como você usa o LuckyTemplates e a Power Platform.

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.