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.
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.
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.
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 .
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.
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.
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.
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.
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.
A medida Total Sales é anexada à segunda tabela e, em seguida, aplicada à primeira tabela.
Í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.
Vamos copiar a parte TOPN e criar uma nova consulta DAX . Lembre-se de que as consultas DAX começam com EVALUATE.
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.
Dado que não há contexto de filtro adicional, basta extrair as primeiras 5 datas de toda a tabela.
A coluna @Sales está apenas adicionando o total de vendas dentro do contexto de filtro adequado à tabela TOPN.
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.
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.
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.
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.
Também temos o gráfico de barras na parte inferior ajustando-se dinamicamente para refletir as alterações que fizemos.
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 .
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.
Em seguida, entramos no visual, vamos para a formatação condicional do título e clicamos em fx .
Formataremos por valor de campo e escolheremos essa medida de título dinâmica. Isso mudará a seleção do parâmetro hipotético.
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.
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.