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

Vamos dar outra olhada no problema discutido neste tutorial , que comparou dinamicamente os primeiros N dias úteis de cada mês. Esse problema foi baseado em uma consulta de um membro do LuckyTemplates em nosso fórum, onde ele queria procurar e comparar dinamicamente os primeiros 5, 10, 15 e 20 dias faturáveis ​​(não fins de semana e não feriados) de um determinado mês com no mês anterior.

Em vez de usar a consulta avançada, criaremos uma solução de linguagem de codificação DAX. Você pode assistir ao vídeo completo deste tutorial na parte inferior deste blog.

No primeiro vídeo , criei uma solução de consulta avançada sobre como resolver esse problema. Mas então um de nossos especialistas LuckyTemplates, Antriksh Sharma, surgiu com uma medida brilhantemente eficiente que também vale a pena mergulhar mais fundo. Discutiremos algumas das técnicas que ele usou no desenvolvimento de uma medida, que fornecerão a você ferramentas adicionais em sua caixa de ferramentas DAX.

Certamente funcionou para mim e para alguns dos outros especialistas que deram uma olhada nisso. A comparação de dias úteis comparáveis ​​ao longo dos meses é um padrão valioso em geral que pode ser usado em muitas situações.

Primeiros N dias úteis revisitados - uma solução de linguagem de codificação DAX

Vamos mergulhar na consulta de energia e dar uma olhada no que Antriksh fez aqui. Temos o mês e o ano , o total de vendas e, por último, o total de vendas para N dias úteis que selecionamos usando a consulta avançada com base no parâmetro hipotético que desenvolvemos.

Primeiros N dias úteis revisitados - uma solução de linguagem de codificação DAX

Antriksh adotou uma abordagem muito diferente, onde usou uma medida surpreendentemente curta para resolver todo o problema. A primeira coisa que notei sobre isso foi o uso do comando .

Primeiros N dias úteis revisitados - uma solução de linguagem de codificação DAX

Essa é uma função DAX que não uso com muita frequência, mas é perfeita para esse tipo de problema. Se dermos uma olhada no Guia SQL BI DAX, ele diz que a função GENERATE é uma função de tabela que usa como entrada duas tabelas diferentes e, em seguida, faz um equivalente ao comando SQL CROSS APPLY.

Primeiros N dias úteis revisitados - uma solução de linguagem de codificação DAX

Portanto, ele pega uma tabela base (Table1) e itera nela e, em seguida, pega uma segunda expressão de tabela e a avalia para cada linha na primeira tabela e, em seguida, retorna à tabela como saída.

Vamos pegar a medida de Antriksh e soltá-la na mesa. Podemos ver que ele produz exatamente os mesmos resultados que a solução de consulta avançada que fizemos da última vez. Isso é bom e valida ambas as medidas muito bem.

Primeiros N dias úteis revisitados - uma solução de linguagem de codificação DAX

Vamos separar esta medida. O primeiro filtro aplicado aqui é Dates[IsBusinessDay] = TRUE. Isso remove todas as datas fora de fim de semana e não feriado com base no campo IsBusinessDay da tabela de data estendida.

Falamos muito mais sobre isso no primeiro tutorial , onde também explicamos como amarrar isso em nossa mesa festiva.

Primeiros N dias úteis revisitados - uma solução de linguagem de codificação DAX

A parte interessante disso realmente vem nas duas entradas da tabela. A primeira tabela é apenas uma tabela de uma coluna do campo Mês e Ano na tabela Data.

Primeiros N dias úteis revisitados - uma solução de linguagem de codificação DAX

Mas a entrada da segunda tabela é onde as coisas interessantes acontecem. Antriksh usou uma e, em seguida, usou nosso parâmetro dinâmico como o número de linhas no TOPN.

Primeiros N dias úteis revisitados - uma solução de linguagem de codificação DAX

A medida Total Sales é anexada à segunda tabela e, em seguida, aplicada à primeira tabela.

Primeiros N dias úteis revisitados - uma solução de linguagem de codificação DAX

Índice

Compreendendo uma medida complexa usando a linguagem de codificação DAX

Uma das maneiras mais fáceis de descobrir o que uma medida complexa como essa está fazendo é entrar no Editor Tabular . Podemos dar uma olhada nessa expressão e descobrir o que essa expressão TOPN está fazendo primeiro.

Primeiros N dias úteis revisitados - uma solução de linguagem de codificação DAX

Vamos copiar a parte TOPN e criar uma nova consulta DAX . Lembre-se de que as consultas DAX começam com EVALUATE.

Primeiros N dias úteis revisitados - uma solução de linguagem de codificação DAX

Ao colarmos a parte TOPN, veremos que ela está extraindo as 5 primeiras datas da tabela de pedidos de vendas. Existe uma tabela no TOPN que é composta pelos valores de todas as datas dos pedidos dentro da tabela de vendas.

Esta função TOPN está pegando o valor do parâmetro what-if (que neste caso é 5) e aplicando-o ao campo de data do pedido de venda. Em seguida, ele puxa as primeiras 5 datas dentro do contexto do filtro em ordem crescente com base nesse campo.

Primeiros N dias úteis revisitados - uma solução de linguagem de codificação DAX

Dado que não há contexto de filtro adicional, basta extrair as primeiras 5 datas de toda a tabela.

Primeiros N dias úteis revisitados - uma solução de linguagem de codificação DAX

A coluna @Sales está apenas adicionando o total de vendas dentro do contexto de filtro adequado à tabela TOPN.

Primeiros N dias úteis revisitados - uma solução de linguagem de codificação DAX

Até agora, temos a primeira tabela do mês e ano, a segunda tabela do TOPN das primeiras N datas da tabela de vendas e, em seguida, o total de vendas associado a ela.

Usando a tabela GENERATE na linguagem de codificação DAX

Vamos dar uma olhada no que esta tabela GENERATE está fazendo. Voltaremos ao Editor Tabular e criaremos uma nova consulta DAX.

Vamos começar como sempre fazemos com EVALUATE, colar na parte GENERATE do código e clicar em 5.

Primeiros N dias úteis revisitados - uma solução de linguagem de codificação DAX

Podemos ver que para cada linha da primeira tabela, ela está iterando e juntando com as 5 linhas da tabela TOPN avaliadas no contexto com a função @Sales.

Levou os primeiros 5 dias úteis de abril, os primeiros 5 dias úteis de maio, os primeiros 5 dias úteis de junho e assim por diante até chegar ao final da primeira tabela.

Primeiros N dias úteis revisitados - uma solução de linguagem de codificação DAX

Isso é exatamente o que precisamos, e agora se torna uma questão relativamente simples de somar esses valores. Temos o resultado (que é a variável de tabela dos resultados GENERATE) e então precisamos somar a função @Sales.

Dentro do contexto, agora estamos somando os primeiros 5 dias úteis de abril, os primeiros 5 dias úteis de maio e assim por diante até chegarmos ao nosso total de $ 23.737.430, caso em que não há contexto de mês e ano para operar .

Isso resume toda a coluna @Sales e nos dá exatamente o mesmo total que tínhamos em nossa solução de consulta avançada.

Primeiros N dias úteis revisitados - uma solução de linguagem de codificação DAX

Você pode ver que, se alterarmos o slicer para 10, obteremos dinamicamente os mesmos resultados com a linguagem de codificação DAX que obtivemos na consulta avançada.

Primeiros N dias úteis revisitados - uma solução de linguagem de codificação DAX

Também temos o gráfico de barras na parte inferior ajustando-se dinamicamente para refletir as alterações que fizemos.

Primeiros N dias úteis revisitados - uma solução de linguagem de codificação DAX

Ajustar dinamicamente o título da medida

Há outro truque adicional que gostaria de mostrar a você. Você pode criar um ajuste dinâmico em seu parâmetro hipotético e vinculá-lo dinamicamente a um título de medida.

Por exemplo, se alterarmos a segmentação na parte superior para 15, ela alterará dinamicamente o nome da medida na parte inferior para Total de vendas nos primeiros 15 dias úteis de cada mês .

Primeiros N dias úteis revisitados - uma solução de linguagem de codificação DAX

Há uma maneira fácil de fazer isso no DAX usando formatação condicional . Basicamente, pegamos apenas três cordas. O primeiro é o Total Sales for First e, em seguida, concatená-lo com o valor que colhemos do parâmetro hipotético e, em seguida, vincule-o ao restante do título.

Primeiros N dias úteis revisitados - uma solução de linguagem de codificação DAX

Em seguida, entramos no visual, vamos para a formatação condicional do título e clicamos em fx .

Primeiros N dias úteis revisitados - uma solução de linguagem de codificação DAX

Formataremos por valor de campo e escolheremos essa medida de título dinâmica. Isso mudará a seleção do parâmetro hipotético.

Primeiros N dias úteis revisitados - uma solução de linguagem de codificação DAX

Conclusão

O que temos agora é uma solução completa usando a linguagem de codificação DAX. Discutimos uma maneira realmente criativa e eficiente de fazer isso usando a função GERAR. Quero agradecer a Antriksh por compartilhar seu brilhante conhecimento DAX conosco. Aprendi muito ao usar a solução DAX dele e espero que você também.


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