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.
Neste tutorial, mostrarei algumas análises detalhadas de medidas DAX sobre como montei uma das minhas páginas favoritas no relatório que enviei para o 10º Desafio do LuckyTemplates.
A página de classificações usa muitas medidas DAX desafiadoras. Mas com a ajuda de um de nossos especialistas LuckyTemplates, Antriksh Sharma, além de algumas ramificações de medidas, consegui obter os resultados que desejava.
Índice
Visão geral da página de classificações
Antes de entrarmos em nossa análise de medida DAX, quero mostrar a você as diferentes partes da página em que estamos trabalhando hoje.
É assim que a página de Rankings se parece. Ao contrário das outras páginas do meu relatório, esta contém principalmente cartões.
Cada um desses cartões foi feito usando o visual de cartão integrado na área de trabalho do LuckyTemplates no painel Visualizações.
Ele permite que você navegue de volta para outras páginas do relatório por meio desses ícones aqui no topo.
Discuti as outras páginas deste relatório nos outros tutoriais. Se você vir as outras páginas neste relatório, verá que elas também têm ícones que levam a esta página de classificações .
O lado esquerdo da página mostra as quatro principais fábricas e fornecedores gerais, enquanto o lado direito mostra os quatro últimos.
Também criei medidas DAX individuais para obter resultados mais específicos. Esses três no topo, por exemplo, mostram as quatro principais e as quatro últimas fábricas e fornecedores com base nos minutos de inatividade , minutos médios de inatividade e defeitos .
Fui ainda mais específico na parte inferior da página do relatório. No lado esquerdo, obtive as quatro fábricas superiores e inferiores com base em minutos de inatividade, minutos médios de inatividade e defeitos.
À direita, fiz a mesma coisa, mas desta vez com base nos detalhes do fornecedor.
À medida que passo por este tutorial, contarei a história de como tive a ideia para esta página. Em seguida, explicarei passo a passo como cada uma dessas medidas foi criada.
Obtendo ideias para as medidas DAX a serem usadas
Tive a ideia das medidas DAX neste slide de um de nossos , Antriksh. Ele é um guru DAX e é ótimo em otimizar medidas. Foi divertido trabalhar com ele nesta análise de medida DAX.
Cerca de duas semanas antes do anúncio do 10º Desafio do LuckyTemplates, conversamos no Skype sobre um arquivo PBIX que ele postou no Fórum LuckyTemplates.
Como você pode ver, incluí uma foto de Antriksh porque ele foi a inspiração por trás da página que discutiremos aqui. Eu disse a ele que daria crédito a ele quando terminasse este tutorial.
O modelo é simples e usa alguns dados básicos como Cliente, Produtos e Vendas.
Tem uma pequena lista de países no lado esquerdo.
Antriksh criou uma medida para os N principais países por vendas . Eu tenho a lista classificada do maior para o menor, conforme indicado pela seta para baixo.
À direita, há um cartão que mostra os quatro primeiros e os quatro últimos países. A lista dos quatro primeiros mostra os Estados Unidos , Austrália , Reino Unido e Alemanha , que correspondem aos quatro primeiros da lista.
No entanto, os quatro últimos estão aparecendo na ordem oposta. Em vez de ir do fundo, que é a Armênia , começou na 5ª posição da lista, que é o Quirguistão .
É por isso que fiz outro cartão na parte inferior que usa uma versão revisada da medida usada acima.
Observe que os quatro últimos agora correspondem à ordem que eu queria – Armênia , Tailândia , Síria e Quirguistão .
Vamos ver as medidas DAX por trás desses cartões. Vou começar com a medida que Antriksh criou para a 1ª carta.
A medida original tem mais de 97 linhas para obter os resultados que vimos naquele primeiro cartão.
Quando rolamos para baixo até a 20ª linha, podemos ver que Antriksh usou ASC . Essa é a razão pela qual os quatro últimos apareceram dessa maneira.
Agora que sei onde o problema começou, mostrarei como fica minha medida revisada.
Deixe-me destacar a segunda carta para que eu possa mostrar a medida por trás dela.
Como você pode ver, existem apenas 41 linhas na minha fórmula revisada.
Trabalhei com Antriksh para reduzi-lo em 60% ou 70% do que a medida original. Além de ser menos complicado, também me dá os resultados de que preciso - com os quatro primeiros começando do 1º ao 4º e os quatro últimos começando do 8º ao 5º.
Algumas semanas após minha discussão com Antriksh, o 10º Desafio do LuckyTemplates foi lançado. Parte dos requisitos envolvia um sistema de classificação, o que me fez pensar na medida DAX de Antriksh. Percebi que posso copiar e colar a medida e, em seguida, aplicar algumas ramificações de medida para obter os resultados de que preciso.
Dax Measure Analysis: Construindo a medida passo a passo
Agora, vou detalhar as medidas que usei para a página de Rankings para obter os resultados que eu queria. Essa análise de medida DAX pode me ajudar a explicar como a medida funciona, considerando quantas linhas foram necessárias para completá-la.
Em meus outros tutoriais, mostrei como gosto de agrupar minhas medidas para tornar as coisas mais organizadas . Então criei uma subpasta para Top N v2.
Dentro desta pasta está a minha medida para os Minutos de Tempo de Inatividade dos N Principais Fornecedores de Plantas . Você verá que ele tem as mesmas 41 linhas de código que mostrei anteriormente ao discutir a medida de Antriksh. Basicamente, tudo o que tive que fazer foi substituir alguns itens para obter os resultados que desejo.
Para entender melhor, divido toda essa medida em 9 partes diferentes. Vou passar por cima de cada uma dessas etapas de um a nove e explicar o que cada uma delas está realizando.
A medida usa uma série de variáveis para que eu possa obter resultados mais claros. Definir essas variáveis ajuda o usuário final a ver como a medida se encaixa e explica os detalhes de como obtive cada resultado.
Vamos começar com o primeiro passo, que define o chamado BaseTable.
Nesta BaseTable, você pode ver que estou fazendo referência a os dados para Plant Location e Vendor .
Ao voltar ao arquivo PBIX, você verá o cartão superior que faz referência às fábricas e aos fornecedores. É por isso que preciso de todos os dados aqui, ao contrário do cartão mais abaixo, que também é para minutos de inatividade, mas usa apenas dados de localização da planta.
Como a primeira etapa é simples, vamos passar para a etapa dois.
A segunda etapa começa com a função .
Essa função faz referência à variável que criei na etapa 1 e aos minutos de inatividade .
Ele garante que um valor apareça reunindo as funções e . Também quero que os resultados sejam maiores ou iguais a zero. Isso ocorre porque o conjunto de dados usado para este relatório inclui algumas combinações em que a fábrica ou o fornecedor estão em branco. Também existem entradas em que o valor é zero.
A terceira etapa envolve ainda outro conjunto de variáveis, começando com o valor de N.
Aqui, N é igual a 4 porque quero que os quatro primeiros e os quatro últimos apareçam.
Ele também define um prefixo para Top & N, além de um traço.
Quando montado, ele simplesmente deseja mostrar “Top 4 -“, que é como o cartão correspondente começa antes de enumerar os resultados esperados.
Agora, vamos para a quarta etapa. É aqui que começo a apresentar os resultados esperados.
Alguns pensariam em usar neste caso. Afinal, estou tentando classificar as entradas e chegar aos melhores resultados. No entanto, Antriksh e eu sentimos que seria mais apropriado neste caso, pois só precisamos dos quatro primeiros na ordem ASC .
Em seguida, utilizei a função , que utiliza os dados de Localização da Planta.
Ele também define o formato de como eu quero que a lista apareça. É por isso que você verá que tem uma barra invertida e uma vírgula, além de aspas para indicar espaços. Ele também está definido para a ordem ASC , portanto, se eu voltar ao arquivo PBIX, você verá a lista dos quatro primeiros com barras invertidas e vírgulas entre os resultados.
A quinta etapa do compasso começa substituindo a última vírgula da lista por um E .
Ao voltar ao slide, você verá que a última entrada tem um “e” antes do fornecedor e da localização da fábrica.
Isso é o que está sendo realizado na etapa cinco. É criar uma lista e usar a função para LastCommaPosition .
Observe que isso diz que N é maior que 2. Isso significa que a substituição ocorre após a 3ª string.
A sexta etapa parecerá familiar porque basicamente copia a mesma coisa que fiz no topo para iniciar a lista com “Top 4 -“.
A única diferença aqui é que eu quero que apareça como "Bottom 4 -" em vez de "Top 4 -".
A parte que discuti anteriormente sobre o uso é novamente usada aqui na parte inferior, mas agora estou chamando a variável BottomData em vez de TopData. Novamente, esta parte insere a barra invertida e a vírgula entre os nomes das fábricas e fornecedores.
Quando olhamos para a medida original de Antriksh, esta também é a mesma parte em que ele usou ASC , o que resultou na lista não saindo como eu esperava. É por isso que estou usando DESC aqui.
Então, basicamente, a partir deste ponto, a maior parte é apenas copiada e colada das partes anteriores do compasso. Estou apenas substituindo a palavra “Top” por “Bottom” na maioria dos casos.
Para a etapa 8, desejo alterar a última vírgula com a palavra E .
O nono passo encerra esta medida.
Isso usa a função com o número 10. Isso garante que os 4 principais e os 4 inferiores sejam exibidos em linhas separadas. Pense nisso como a tecla Enter do seu teclado. Isso faz com que você desça para a próxima linha para que os quatro primeiros e os quatro últimos não apareçam em uma única linha.
Verificando os resultados
Antriksh e eu conseguimos reduzir as mais de 90 linhas originais do DAX para 41 linhas. No entanto, 41 linhas ainda podem ser muito para alguns usuários. Dividir essa medida da maneira que fizemos foi uma ótima maneira de entender por que a medida tinha que ser escrita dessa maneira.
Agora que expliquei do que se tratava cada etapa, é hora de verificar se aquela medida realmente faz o que deveria fazer. Vamos para a página de Rankings e verificamos os resultados com a outra parte do relatório.
Começarei com as Plantas/Fornecedores por Minutos de Tempo de Inatividade .
Isso mostra os quatro primeiros como Linktype em New Britain, Flashpoint em Frazer, Quinu em Twin Rocks e Layo em Henning. Quanto aos quatro últimos, mostra Wikido em Middletown como o pior geral.
Agora, irei para a página de fornecedores e plantas combinadas para ver se os resultados serão correspondentes.
Com a coluna Classificação por minutos de tempo de inatividade classificada de cima para baixo, ela mostra o resultado correto para os quatro primeiros.
Alguns de vocês podem se perguntar, no entanto, por que a Nova Bretanha está aparecendo em segundo lugar nesta lista, quando aparece no topo do cartão de página de Rankings .
Observe que o ranking mostra três entradas como top 1. Elas foram classificadas usando RANKX.
No entanto, se você olhar para a coluna de Downtime Minutes , ela mostra que New Britain mostra 0, enquanto Frazer e Twin Rocks mostram cada um 1. É por isso que no cartão na página de classificações, New Britain ainda ficou acima de Frazer e Twin Rocks mesmo que todos fossem classificados como número um.
Agora, vamos verificar se os quatro últimos estão corretos. Basta classificar a classificação por minutos de inatividade em ordem decrescente.
Como você pode ver, ele mostra Middletown, Waldoboro, Barling e Chesaning como os quatro últimos no card. Isso significa que a medida para Plantas/Fornecedores por Minutos de Paralisação está correta.
Agora, vejamos o cartão de Plantas por minutos de inatividade .
Isso mostra que os quatro primeiros são Reading, Middletown, Waldoboro e Clarksville. Os quatro últimos são Riverside, Charles City, Twin Rocks e Chesaning.
Para verificar esses resultados, vou verificar na página Plants e ver se os resultados correspondem. A maior diferença aqui é que o cartão que verificamos anteriormente baseava-se nos dados das Plantas e dos Fornecedores, enquanto este analisa apenas os dados das Plantas.
Quando classificamos a classificação por minutos de inatividade de cima para baixo, isso mostra que os quatro primeiros são Reading, Middletown, Waldoboro e Clarksville.
Agora, vamos inverter a classificação desta vez para ver se os quatro últimos combinam. Você verá que, das 30 fábricas da nossa lista, Riverside, Charles City, Twin Rocks e Chesaning ficam nas últimas posições.
Isso significa que estamos vendo os resultados corretos para as plantas.
Desta vez, vamos ver um cartão que classifica os fornecedores por defeitos .
Vou para a página de fornecedores desta vez para ver se Dablist é o principal fornecedor e Yombu é o pior com base em defeitos.
Quando classificamos os fornecedores do melhor para o pior, parece que os quatro primeiros correspondem ao cartão na página Classificações .
Deixe-me mudar a classificação do pior para o melhor e ver se os quatro últimos também combinam.
Você verá que Yombu é realmente o pior, junto com os outros três incluídos na lista dos quatro últimos do cartão.
Análise de medida Dax: aplicando ramificação de medida
A análise de medida DAX que fizemos anteriormente apenas examinou a medida por trás de Plantas/Fornecedores por Minutos de Tempo de Inatividade . Mas como trabalhei nas medidas dos outros cartões? É aqui que entra a ramificação de medida .
A ramificação de medida envolve o uso de uma medida existente para derivar outros resultados.
Neste relatório, simplesmente copiei e colei a medida que discutimos anteriormente e alterei alguns dos elementos para atender às minhas necessidades.
O nome da medida é obviamente a primeira coisa que vou mudar. Mas, mais do que isso, também preciso alterar os dados aos quais estou me referindo. Por exemplo, usamos os dados de Plant Location e Vendor para nossa medida original.
Mas se vou usar a mesma medida para Plants By Downtime Minutes , então eu teria que remover os dados do Vendor e focar apenas em Plant Location.
Terei que mudar isso para todas as outras partes da mesma medida que também faz referência a ambos os conjuntos de dados, como quando usei CONCATENATEX .
O mesmo vale para os Minutos de Inatividade . Se eu fosse trabalhar em um cartão que examinasse a média de minutos de inatividade ou defeitos , tudo o que precisaria fazer seria alterar essa parte.
Quanto à parte em que diz “@DowntimeMins” na medida, não faria mal mantê-la assim, mesmo que eu esteja fazendo referência a meus defeitos ou a minha média de minutos de inatividade.
Mas se você é do tipo que gosta de manter as coisas em uma certa ordem, pode entrar e mudar isso também. Apenas lembre-se de que, se você alterar isso, terá que alterá-lo em toda a página. Isso significa colocar algum esforço adicional para os mesmos resultados.
Você pode imaginar quanto tempo economizei usando a ramificação de medida . Fazer dessa forma significa que não precisarei ficar criando novas medidas para cada parte do relatório em que trabalho. Só preciso ajustar a medida existente com base nos resultados que desejo ver, reduzindo bastante o tempo de desenvolvimento do meu relatório.
Para mostrar como fiz isso, vejamos Fornecedores por minutos de inatividade .
Quando eu abrir a medida, você verá que ela tem as mesmas 41 linhas de Plants / Vendors By Downtime Minutes .
No entanto, na etapa 1, apenas fiz referência aos dados do fornecedor e removi a localização da fábrica.
Alterei os dados em outros locais onde também são aplicáveis.
Eu retive Minutos de tempo de inatividade , pois é nisso que estou baseando os resultados.
Então, essas são correções rápidas na medida para que ela possa ser aplicada nas outras áreas do relatório.
Deixe-me mostrar outro exemplo aqui. Desta vez, vamos ver Fornecedores por defeitos .
Mais uma vez, estamos apenas olhando para o fornecedor aqui.
O que eu mudei aqui é a referência a Downtime Minutes . Em vez disso, usei Defects .
Também me certifiquei de que as outras linhas ainda estivessem usando os dados do Fornecedor.
Medidas DAX no LuckyTemplates usando ramificação de medidas
Implementando grupos de medidas DAX em seus relatórios – uma revisão de modelagem do LuckyTemplates
Extraindo percepções exclusivas no LuckyTemplates usando medidas DAX de classificação
Conclusão
Esse foi um poderoso trabalho DAX de Antriksh. Eu definitivamente gostei de trabalhar com ele , ramificá-lo e aplicá-lo às diferentes partes do meu relatório .
A análise detalhada da medida DAX que fizemos também foi uma ótima maneira de entender todos os aspectos do processo. Trabalhar em uma medida longa pode parecer assustador no começo, mas uma análise de medida DAX completa como essa pode ajudar a resolver as coisas.
Trabalhar nesta página também enfatizou a importância de ter uma comunidade colaborativa como a que temos aqui no LuckyTemplates. É ótimo que todos tenham a oportunidade de trabalhar com pessoas como Antriksh, bem como outros membros e especialistas que também têm algumas dicas e truques próprios.
Tudo de bom,
Jarrett
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.