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.
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.
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.
Í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.
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).
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.
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.
E se colocarmos a medida que acabamos de fazer na tabela, ela também faz exatamente o que esperamos.
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.
Novamente, usaremos a mesma medida de antes. Mas desta vez, vamos remover o filtro de mês e ano.
Vamos colocar esse em nossa mesa. De repente, não funciona.
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.
Em vez de Resultado, vamos usar Denominador. Lembre-se de que isso será formatado em uma porcentagem, então parecerá um pouco engraçado.
O que deveríamos obter para o denominador é o mesmo número em todas as linhas, mas não é.
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.
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.
Vamos voltar à nossa medida e remover o contexto do mês e ano que estamos usando como classificação.
Agora estamos obtendo exatamente o que deveríamos, que é o mês e o ano calculados como uma porcentagem adequada.
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 é.
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.
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.
Para o escopo do ano, temos que remover o contexto no ano e remover o contexto na tabela inteira.
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.
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.
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.
Descubra todos os atributos pré-atentivos e saiba como isso pode impactar significativamente seu relatório do LuckyTemplates
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.
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.
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.
Aprenda a calcular a diferença em dias entre compras usando DAX no LuckyTemplates com este guia completo.
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
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.
Neste tutorial de linguagem de codificação DAX, aprenda como usar a função GENERATE e como alterar um título de medida dinamicamente.