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.
Nesta postagem do blog, trataremos de alguns problemas problemáticos em inteligência de tempo, particularmente os problemas causados pela granularidade da semana e os problemas que podem ser causados pelo número irregular de semanas em um ano. Usaremos compensações para obter inteligência de tempo precisa no DAX.
Temos um cenário interessante para você hoje. Isso surgiu algumas vezes recentemente no fórum LuckyTemplates. O que as pessoas queriam fazer era pegar um visual (que poderia ser um gráfico de linhas ou um gráfico de barras) e variá-lo dinamicamente na data de início. Você pode assistir ao vídeo completo deste tutorial na parte inferior deste blog.
Nesse caso, usamos o mesmo conjunto de dados com o qual trabalhamos para o preço spot médio do barril de petróleo . Em vez de sempre começar no início de janeiro, queríamos poder clicar no visual, alterá-lo para uma data de início diferente, mas sempre mostrar um ano de dados.
Índice
Exemplos de cenários de inteligência de tempo em DAX
Há uma série de razões pelas quais você pode querer fazer esta técnica. Você pode usar isso se tiver uma métrica que está constantemente sendo reajustada em termos de como é calculada. Você pode querer mostrar apenas os dados do período de reajuste em diante.
Outra razão para usar isso é se você quiser visualizar isso de uma forma animada. Isso basicamente pegará seus dados e os mostrará dinamicamente assim que você clicar no acesso ao jogo.
Neste visual, podemos alterar a data de início mês a mês para mostrar como ela muda em um período de 12 meses ao longo do tempo. Este é um visual interessante e útil para diferentes casos de negócios, mas, teoricamente, também representa uma série de questões importantes relacionadas ao DAX e à modelagem de dados.
Vamos para o LuckyTemplates e examinar nosso modelo de dados primeiro. Este é um modelo de dados realmente simples com uma tabela de datas estendida e uma tabela de preços à vista conectada às datas.
Usando compensações para inteligência de tempo no DAX
Uma das coisas em que trabalharemos são os deslocamentos . Os deslocamentos na tabela de data estendida são calculados dinamicamente. Cada vez que o relatório é atualizado ou aberto, ele passa pelo código M. Por exemplo, em um deslocamento mensal, ele atribui o mês atual com 0, o mês anterior com -1 e dois meses atrás com -2. Olhando para o futuro, atribui +1 ao mês seguinte e +2 para os próximos dois meses.
Este é um conceito simples, mas incrivelmente poderoso quando você está lidando com inteligência de tempo no DAX e trabalhando com meses , trimestres e semanas . Se você não estiver usando um deslocamento, às vezes cria uma certa complexidade em seus cálculos.
Usar compensações significa usar uma série contínua de números em que voltar um mês é sempre -1 e avançar um mês é sempre +1, independentemente de onde você esteja no ano.
Implementando a estratégia Rubber Duck para inteligência de tempo em DAX
No passado, falei sobre o pato de borracha , que é verbalizar sua estratégia em voz alta antes de começar a escrever seu DAX.
Estou pensando em como vou lidar com isso em um contexto mensal usando inteligência de tempo no DAX. Eu começaria algo com base no ano e no mês selecionados e selecionaria aqueles usando uma tabela desconectada, porque se você pensar bem, todas as outras seleções envolverão o cruzamento de anos (com exceção de janeiro).
Digamos que queremos 12 meses começando em março, vamos acabar com pelo menos dois meses no ano seguinte. Se usarmos um slicer conectado, só poderemos filtrar para aquele ano e não poderemos filtrar para o ano seguinte.
Colhendo as compensações a partir da data de início
Vamos fazer isso com uma tabela conectada para o mês e o ano. Primeiro, precisamos colher o primeiro deslocamento que lida com a data de início.
E então queremos avançar esse deslocamento em 12 meses e, em seguida, observar apenas as datas que estão dentro desse conjunto de deslocamentos. Deixe-me mostrar como isso se parece no DAX.
Calculando o intervalo mensal
Esta é a nossa medida para Within Range Monthly , onde selecionamos nosso ano (que colhemos da tabela de ano desconectada) e nosso mês (que colhemos da tabela de mês desconectada).
Também temos esse outro parâmetro em que, se não houver seleção, o padrão será janeiro. Este parâmetro é principalmente apenas para fins de depuração.
Calculando as compensações do mês inicial e final
Vejamos o deslocamento do mês inicial calculando o deslocamento MAX. Removemos todos os filtros na tabela de datas e filtramos até o mês e o ano selecionados. Para cada mês, deve haver apenas uma compensação que corresponda a esse mês e ano.
A partir desse ponto, podemos obter o deslocamento do mês final , que é apenas o deslocamento do mês inicial + 11 meses.
Em seguida, examinamos cada data selecionada e determinamos se ela se enquadra no deslocamento do mês inicial e no deslocamento do mês final. se cair dentro desse período, damos 1 e se não, damos 0.
Se voltarmos à exibição mensal em nosso visual, podemos ver o visual Dentro do intervalo que definimos como igual a um. Portanto, mostra apenas os meses do início ao final do deslocamento. Por exemplo, se clicarmos em fevereiro, veremos fevereiro a janeiro.
Calculando o Intervalo Semanal
Vamos ver como isso se parece do ponto de vista semanal. O visual inicialmente começa bem e vai da semana 1 à semana 52. Até agora, tudo bem.
Mas se clicarmos nos outros anos no cortador de anos, podemos ver a 52ª semana, enquanto alguns têm a 53ª semana, o que apresenta muitos problemas. Você pode ver neste exemplo que o problema está começando a se manifestar.
Temos um período inicial do ano 2020 e semana 15 , mas o período final é ano 2021 e semana 13 em vez do ano 2021 e semana 14 .
Se voltarmos à semana 1, podemos ver que começa bem, mas termina na semana 52. Se olharmos para o cálculo da semana 53 aqui, o número máximo de semanas para 2020 e 2021 é 53 semanas. Isso não vai funcionar para granularidade semanal.
Vamos ver o que podemos fazer para que isso funcione. Precisamos corrigir o cálculo DAX aqui nesta parte:
Isso porque, em alguns casos, 51 está correto quando há apenas 52 semanas em um ano, mas para o ano em que há 53 semanas, deixará de fora esse último período. Isso é exatamente o que vimos no visual dinâmico por semanas, onde o cálculo retirou esse período final nos anos de 2020 e 2021.
Para corrigir isso, vamos para a medida Dentro do intervalo semanal errado , que na verdade parece mais simples do que a medida anterior. Tivemos uma medida de deslocamento inicial e calculamos o deslocamento máximo. Em seguida, retiramos o filtro das datas e, em seguida, impomos o filtro na semana selecionada e no ano selecionado com a suposição de que isso levaria ao deslocamento correto.
Mas isso não funciona porque não importa se você está usando um deslocamento máximo ou um deslocamento mínimo. Tudo o que estamos fazendo é agrupar um agregador para que não coloquemos uma coluna nua em uma instrução CALCULATE.
Mas se voltarmos aqui ao ISO WeekNumber , podemos ver que um ano e um número de semana não determinam exclusivamente um deslocamento semanal naquele primeiro período.
Eu vim com uma maneira à prova de balas de fazer isso. Você poderia usar MIN, mas faz mais sentido criar esta medida de Deslocamento da Semana1 . Para obter o deslocamento da semana 1, estamos lidando com a semana 2 porque ela nunca é dividida. Independentemente de haver 52 ou 53 semanas no ano, a semana 2 permanece intacta.
Neste cálculo, estamos filtrando até a semana 2 para obter o deslocamento. E então, quando obtivermos o deslocamento da semana 2, apenas subtraímos um dele. Isso nos dará inequivocamente o deslocamento da semana 1. Isso acaba resolvendo nosso problema.
Calculando o Intervalo Semanal
E então voltamos para nossa medida Dentro do intervalo semanal e escrevemos uma declaração IF onde, se o número da colheita for para a semana 1, calculamos o deslocamento da semana um. Se não for a semana 1, apenas calculamos o deslocamento da semana inicial, como fizemos no cálculo mensal anterior.
E então o deslocamento da semana final será o deslocamento da semana inicial + o número máximo da semana, que pode ser 52 ou 53. Em seguida, apenas subtraímos 1 para não contar duas vezes o deslocamento inicial.
Podemos fazer a mesma construção que usamos para o intervalo mensal para filtrar as semanas, onde qualquer coisa que caia entre o início e o final do deslocamento recebe um 1 e qualquer coisa que não recebe um 0.
Em seguida, colocaremos a medida Dentro do intervalo semanal no painel de filtro. Tudo confere e parece exatamente certo.
Podemos clicar no eixo de reprodução e executar a granularidade da semana. Podemos ver que está funcionando corretamente, assim como no contexto do mês.
Conclusão
Este é um mergulho bastante profundo na inteligência de tempo no DAX, onde discutimos como podemos resolver alguns dos problemas relacionados aos números das semanas. Espero que você tenha achado este tutorial útil e fornecido algumas ferramentas adicionais em sua caixa de ferramentas quando estiver lidando com uma situação problemática da semana.
Se você gostou do conteúdo abordado neste tutorial específico, não se esqueça de se inscrever no 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.