Inteligência de tempo no DAX: como selecionar dinamicamente o período inicial

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.

Inteligência de tempo no DAX: como selecionar dinamicamente o período inicial

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.

Inteligência de tempo no DAX: como selecionar dinamicamente o período inicial

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.

Inteligência de tempo no DAX: como selecionar dinamicamente o período inicial

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.

Inteligência de tempo no DAX: como selecionar dinamicamente o período inicial

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.

Inteligência de tempo no DAX: como selecionar dinamicamente o período inicial

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.

Inteligência de tempo no DAX: como selecionar dinamicamente o período inicial

A partir desse ponto, podemos obter o deslocamento do mês final , que é apenas o deslocamento do mês inicial + 11 meses.

Inteligência de tempo no DAX: como selecionar dinamicamente o período inicial

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.

Inteligência de tempo no DAX: como selecionar dinamicamente o período inicial

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.

Inteligência de tempo no DAX: como selecionar dinamicamente o período inicial

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.

Inteligência de tempo no DAX: como selecionar dinamicamente o período inicial

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 .

Inteligência de tempo no DAX: como selecionar dinamicamente o período inicial

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.

Inteligência de tempo no DAX: como selecionar dinamicamente o período inicial

Vamos ver o que podemos fazer para que isso funcione. Precisamos corrigir o cálculo DAX aqui nesta parte:

Inteligência de tempo no DAX: como selecionar dinamicamente o período inicial

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.

Inteligência de tempo no DAX: como selecionar dinamicamente o período inicial

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.

Inteligência de tempo no DAX: como selecionar dinamicamente o período inicial

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.

Inteligência de tempo no DAX: como selecionar dinamicamente o período inicial

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.

Inteligência de tempo no DAX: como selecionar dinamicamente o período inicial

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.

Inteligência de tempo no DAX: como selecionar dinamicamente o período 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.

Inteligência de tempo no DAX: como selecionar dinamicamente o período inicial

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.

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.