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, você aprenderá como otimizar uma medida no LuckyTemplates. A otimização de medidas em seu relatório melhora o desempenho de seus códigos na produção de insights e dados valiosos. Você também aprenderá sobre os diferentes métodos de avaliação e como aplicá-los para otimizar seu relatório. Você pode assistir ao vídeo completo deste tutorial na parte inferior deste blog.
Índice
1. Analise o desempenho do código
Neste exemplo, você precisa otimizar este relatório:
Este é o modelo de dados que você usará:
A tabela Jobs contém todas as informações sobre qualquer trabalho que foi executado em um determinado período de tempo.
Esta tabela é a base de todas as medidas que você vai otimizar:
Primeiro, você precisa testar o desempenho do relatório.
Vá para a guia Exibir e escolha Analisador de desempenho . Em seguida, clique em Iniciar gravação e atualizar visuais . Aguarde o analisador renderizar o visual.
Feito isso, abra a lista Desdobramento de Incentivos e clique em Copiar Consulta .
Em seguida, selecione Ferramentas Externas para acessar o DAX Studio e ver o código que o LuckyTemplates gerou.
Em seguida, cole a consulta copiada dentro do espaço de trabalho.
Variáveis na Medida
A primeira variável é DateClosed , que é a segmentação no painel. Ele usa uma coluna da tabela Fact para obter os valores de determinados períodos no slicer.
A próxima variável é JobLost , que verifica False ou Blank nos dados de Job Lost.
A última variável é MatrixVisual . Este é o coração do código. Ele mostra a coluna resumida gerada pelo LuckyTemplates para preencher os visuais da matriz. Ele agrupa o tipo de perda de trabalho nesta matriz e injeta os filtros provenientes dos slicers. Em seguida, adiciona colunas estendidas.
Depois que a coluna de resumo concluir a execução, você verá os resultados no painel abaixo do código.
O LuckyTemplates usa o resultado para preencher visuais de matriz.
Cache frio para DAX Studio
Em seguida, você precisa verificar o tempo gasto na execução de todo o código. Para fazer isso, ative o Server Timings e escolha Clear Cache Then Run .
Ao tentar otimizar uma medida no LuckyTemplates usando o DAX Studio , é melhor operar no cenário de cache frio para que o tempo obtido esteja correto. Depois disso, pressione F5 e aguarde a conclusão da operação na guia Server Timings .
Depois de concluído, você pode ver que o tempo total de execução é de 3,6 segundos. Ele passou a maior parte do tempo no mecanismo de fórmula e 57 milissegundos no mecanismo de armazenamento
Você também pode ver que ele encontrou 383 consultas do mecanismo de armazenamento. De todas essas consultas, 327 são lançadas na memória para que possam ser reutilizadas.
2. Analisar uma medida no LuckyTemplates
Em seguida, você precisa otimizar essas 3 medidas idênticas.
Você precisa extrair essas medidas em um arquivo diferente e conectá-lo ao modelo de dados que está usando.
Depois disso, inicie o Server Timings para ver o tempo gasto pelas 3 medidas no preenchimento dos visuais.
Os resultados da execução mostram que as medidas estão consumindo 1,85 segundos para recuperar um resultado.
O resultado mostra uma tabela composta por 10 linhas e 3 colunas estendidas que pertencem às colunas resumidas.
A coluna Tipo de perda contém 10 valores exclusivos que o código calcula para obter as porcentagens de incentivo.
O tempo gasto pelo código é exponencialmente alto. É aqui e quando você precisa otimizá-los.
A medida de % de incentivo RB no LuckyTemplates
Esta é uma medida de % de incentivo de RB no LuckyTemplates. É uma das 3 principais medidas usadas neste exemplo.
Você pode ver que ele está tentando calcular a porcentagem de incentivo.
Ele possui uma variável, JobType, que recupera o valor do tipo perdido no contexto do filtro atual. Ele também verifica se há apenas um único valor visível no contexto do filtro atual. Você precisa usar uma função para que toda vez que uma condição for atendida, ela forneça o resultado correspondente.
Esse código de medida gera muita graxa de mecanismo de armazenamento, o que aumenta o tempo na duração geral do código.
Agora, volte ao DAX Studio para verificar a quantidade de consultas do mecanismo de armazenamento que a medida gera.
Você pode ver que levou 600 milissegundos para executar e 43 consultas do mecanismo de armazenamento para simplesmente recuperar os dados das 10 linhas.
Agora, verifique os dados que estão sendo solicitados do mecanismo de armazenamento. Na primeira consulta, há um Tipo de Perda de Trabalhos e DCOUNT do Tipo de Perda de Trabalhos.
A próxima consulta tem Jobs Date Closed, que é do slicer no relatório.
No terceiro código, você verá outro tipo de perda de tarefas com o ID de dados de retorno de chamada.
Em outra linha, você verá as linhas de código mais importantes.
A primeira coisa que você vê é a dos Pagamentos de Trabalhos Recebidos, Faturados e Despesas Reais.
A seguir está a função WHERE que declara uma condição e seu resultado correspondente. O resultado variará com base na seleção do slicer e na instrução switch na medida RB Incentive%.
Você também notará que o código nas linhas 12 e 14 são os mesmos.
Se você rolar para a direita, verá que existem linhas com as mesmas consultas. As consultas nas linhas são direcionadas pela instrução switch na medida RB Incentive%.
Se você voltar para a medida RB Incentive% no LuckyTemplates, poderá ver o número de vezes que uma consulta é repetida e como ela é refletida nas consultas do mecanismo de armazenamento.
A lógica por trás de IF e Switch
Agora, para entender porque as consultas são executadas várias vezes, você precisa entender a lógica das funções e SWITCH .
Você precisa executá-los separadamente em um Plano de Consulta. Mas antes de fazer isso, certifique-se de conectar-se ao banco de dados e ativar o Plano de consulta.
Execute a instrução SWITCH no plano de consulta. Em seguida, destaque a instrução e pressione enter.
Isso irá gerar um Plano de Consulta Lógica com diferentes operações.
Em seguida, execute a instrução IF destacando a instrução e pressionando enter.
Você pode ver que ele gera o mesmo plano de consulta lógica.
Isso ocorre porque sempre que você usa uma função SWITCH , o mecanismo converte internamente essa função em uma instrução IF . Mas uma instrução SWITCH é recomendada porque aumenta a legibilidade do seu código.
Depois disso, você precisa entender como um código é executado dentro da função IF ou SWITCH .
Este é um código de exemplo que contém uma instrução SWITCH .
Ele tem medidas para Lucro Bruto, Estimativa Total e Faturamento Total, que são todas a SOMA de diferentes colunas. Ele também possui uma função sobre os do tipo de perda de tarefas e uma instrução SWITCH e TRUE .
Ao executar esse código, você verá a lógica por trás das funções.
A primeira consulta obtém o tipo de perda de trabalhos distinto da tabela de trabalhos.
Além do Tipo de Perda de Trabalhos, também obtém a soma da Estimativa de Trabalhos.
Dentro da condição WHERE , você também pode ver os valores que existem na coluna Jobs Loss Type.
3. Use métodos de avaliação de código
No DAX, existem 3 métodos de avaliação de códigos:
Esses métodos ajudarão você a otimizar um código ou medida no LuckyTemplates.
1º Método: Avaliação Rigorosa
O exemplo mostrado abaixo usa o método de Avaliação Estrita.
A lógica por trás disso é que se o contexto do tipo de perda de empregos for igual a A, ele fornecerá o lucro bruto. Caso contrário, dá a Estimativa Total. O código faz isso para cada linha no tipo de perda de tarefas.
Este é outro exemplo de medida no LuckyTemplates que usa Avaliação Estrita.
Ao executar esse código, ele gerará 5 consultas do mecanismo de armazenamento.
Com a Avaliação Estrita, o código fornece a Estimativa Total se o Lucro Bruto multiplicado por 1,4 for maior que a Estimativa Média. Caso contrário, dará o Lucro Bruto.
O uso de Avaliação Estrita produz mais consultas do mecanismo de armazenamento porque a instrução IF verifica a concorrência do Lucro Bruto várias vezes e acabará prejudicando o desempenho de toda a operação.
2º Método: Avaliação Ávida
Este é o mesmo código do exemplo anterior.
Mas em vez de calcular as medidas dentro da instrução IF , calculou tudo no antes de RETURN .
Significa que antes de conferir os demonstrativos, obtém todos os valores do Lucro Bruto e Estimativa Total para todos os Tipos de Perda de Trabalhos.
Ao executar esse código, o número de mecanismos de armazenamento é reduzido para 3.
Melhora o desempenho de toda a operação.
Na consulta da primeira operação, obtém-se o Tipo de Perda de Trabalhos e a soma da Estimativa de Trabalhos e Lucro Bruto.
A próxima consulta obtém a soma da estimativa de trabalhos do Estável de trabalhos. Isso é usado no cálculo da estimativa média.
A última consulta fornece o tipo de perda de trabalhos distinto para os valores escritos em ADDCOLUMNS .
O uso do Eager Evaluation obtém tudo em um único cache de dados. Os dados também são avaliados e iterados no mecanismo de fórmula. A instrução IF retornará a Estimativa Total ou o Lucro Bruto, dependendo da avaliação Verdadeiro ou Falso.
Eager Evaluation nem sempre é o melhor método para otimizar seus códigos. Avaliação rigorosa resultará em um melhor desempenho se você tiver códigos complexos. Tudo depende das funções que você usa dentro do código DAX.
A desvantagem do Eager Evaluation é que se você criar valores antes de uma instrução IF ou SWITCH e usar essas variáveis dentro da instrução que nunca devem ser executadas, o mecanismo ainda calculará essas variáveis.
Aqui está um exemplo da desvantagem:
Idealmente, se o tipo de perda de empregos for igual a A, deve obter lucro bruto. Caso contrário, obtém a Estimativa Total.
Como não há nenhum valor dentro da coluna Job Loss Type igual a A, ela sempre deve obter a estimativa total. No entanto, ainda fornece o Lucro Bruto no cache de dados.
Se você observar a primeira consulta, ela obterá o tipo de perda de empregos e a soma do lucro bruto e da estimativa de empregos.
Na próxima consulta, obtém um Tipo de Perda de Trabalhos distinto da tabela de Trabalhos.
3º Método: Avaliação IF.EAGER
O próximo método é a avaliação da função IF.EAGER que replica o comportamento da Avaliação Eager.
Ele permite que você escreva um código que represente a avaliação estrita e execute-o com a avaliação ansiosa.
Se você olhar para este código de exemplo, é exatamente o mesmo que o código de Avaliação Estrita. A única diferença é que isso usa a função IF.EAGER em vez de IF .
Antes de executar o código, conecte-se ao modelo do LuckyTemplates e ative a sincronização do servidor. Feito isso, pressione F5.
Você pode ver que gerou 3 consultas do mecanismo de armazenamento.
A primeira consulta obtém o tipo de perda de empregos e a soma da estimativa de empregos e do lucro bruto.
A segunda consulta obtém a soma da estimativa de trabalhos.
A última consulta obtém o tipo de perda de trabalhos distinto da tabela de trabalhos.
Você notará que ele executou o mesmo comportamento da Eager Evaluation.
Resumo dos Métodos de Avaliação
Ao tentar melhorar o desempenho de seus cálculos, você deve se lembrar do seguinte:
Mas observe que você deve testar esses três métodos para descobrir o que é realmente melhor usar em seu relatório.
4. Otimize uma medida no LuckyTemplates
A principal lição deste tutorial é otimizar seus códigos.
Volte e observe a medida RB Incentive% que é executada usando a avaliação estrita. Em seguida, tente avaliá-lo usando Eager Evaluation.
Comece criando variáveis e inserindo a função RETURN .
Altere as referências de medida com as variáveis.
Depois disso, confirme a medida e vá para o DAX Studio para ver se melhorou o desempenho.
Ele mostra que o tempo total é de 642 milissegundos e o número total de consultas do mecanismo de armazenamento foi reduzido para 39.
Agora, crie as variáveis para todos os dados e altere todas as referências de medida para suas variáveis correspondentes.
Em seguida, confirme a medida e execute o código no estúdio DAX.
O tempo total de execução e a quantidade total de consultas do mecanismo de armazenamento foram reduzidos de 600 milissegundos para 170 milissegundos e de 43 para 15 consultas, respectivamente.
Você também pode ver que não há duplicatas. Ter variáveis em seu código melhora sua legibilidade e desempenho.
Otimização avançada para uma medida no LuckyTemplates
Em seguida, você precisa otimizar ainda mais seus códigos DAX.
Em vez de usar , use a função .
HASONEVALUE conta o número de valores disponíveis no contexto do filtro, o que é uma operação muito intensiva. Enquanto isso, o ISINSCOPE verifica se a coluna que está sendo fornecida é utilizada para agrupamento ou não.
Após alterar as funções, confirme a medida e execute-a no DAX Studio.
Você pode ver que o número de consultas do mecanismo de armazenamento agora é 12. O tempo total de execução também se tornou 105 milissegundos.
Na segunda consulta, você notará um ID de dados de retorno de chamada.
Às vezes, isso acontece quando você usa SELECTEDVALUE com o campo de texto. Quando você vê dados de retorno de chamada, o mecanismo de armazenamento chama o mecanismo de fórmula para ajudar a resolver a complexidade do código. Isso diminui o desempenho da sua medida.
Você precisa remover os dados do Callback para ter um melhor desempenho em seu relatório. Para fazer isso, você precisa criar uma tabela de configuração no modelo de dados.
Vá para a opção Enter Data e cole os dados. Nomeie a tabela como LossTypeConfigTable .
Em seguida, clique em Editar para alterar o tipo de dados da coluna que você vai importar.
O tipo de dados do ID do tipo de perda deve ser um valor de professor para que possa ser usado dentro da função SELECTEDVALUE .
Depois de carregado no modelo, crie um relacionamento entre a tabela Jobs e a tabela LossTypeConfigTable com base no tipo de perda.
Depois de criar um relacionamento, vá para a tabela Jobs e adicione uma nova coluna. Chame-o de ID de perda e, em seguida, insira a fórmula.
Use a função para a tabela de configuração e extraia o ID do tipo de perda.
Em seguida, volte para a medida RB Incentive% e faça referência ao campo numérico em vez do campo de texto. Dentro de SELECTEDVALUE , substitua o tipo de perda pelo ID da perda.
Em seguida, modifique todas as medidas dentro do código. Use um valor inteiro em vez de valores de texto na verificação do tipo de trabalho.
Depois de alterar o código, confirme a medida e execute-a no DAX Studio.
O ID de dados de Callback é eliminado na consulta e o tempo de execução do código é reduzido para 93 milissegundos.
A medida RB Incentive% agora está totalmente otimizada.
5. Otimize outras medidas no LuckyTemplates
Você também precisa otimizar as medidas WR Incentive% e QB Incentive%.
Copie e cole o código exato usado na medida % de Incentivo RB. Em seguida, execute as 3 medidas juntas.
O tempo total de execução é otimizado e reduzido de 1855 milissegundos para 213 milissegundos. Também existem apenas 12 consultas do mecanismo de armazenamento.
As duas primeiras consultas criam o contexto do filtro e o restante representa o número exato de valores dentro da coluna Jobs Loss Type.
Como todas as medidas foram otimizadas, execute o código original e veja como o desempenho mudou. Os dados mostram que agora está sendo calculado em 1,9 segundos.
A performance de todo o código agora está otimizada, tornando seu relatório mais rápido e melhor.
Otimize as funções DAX com este novo curso
Transformações simples do LuckyTemplates para obter dados mais otimizados
Otimize as fórmulas do LuckyTemplates usando DAX avançado
Conclusão
Nos relatórios do LuckyTemplates, as medidas devem ser otimizadas para garantir que seus códigos DAX sejam executados sem problemas. Isso também melhora o desempenho geral do seu relatório.
Você aprendeu os diferentes métodos para otimizar sua medida no LuckyTemplates e como avaliar qual usar dependendo do contexto do seu relatório.
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.