Medir no LuckyTemplates: dicas e técnicas de otimização

Medir no LuckyTemplates: dicas e técnicas de otimização

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:

Medir no LuckyTemplates: dicas e técnicas de otimização

Este é o modelo de dados que você usará:

Medir no LuckyTemplates: dicas e técnicas de otimização

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:

Medir no LuckyTemplates: dicas e técnicas de otimização

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.

Medir no LuckyTemplates: dicas e técnicas de otimização

Feito isso, abra a lista Desdobramento de Incentivos e clique em Copiar Consulta .

Medir no LuckyTemplates: dicas e técnicas de otimização

Em seguida, selecione Ferramentas Externas para acessar o DAX Studio e ver o código que o LuckyTemplates gerou.

Medir no LuckyTemplates: dicas e técnicas de otimização

Em seguida, cole a consulta copiada dentro do espaço de trabalho.

Medir no LuckyTemplates: dicas e técnicas de otimização

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.

Medir no LuckyTemplates: dicas e técnicas de otimização

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 .

Medir no LuckyTemplates: dicas e técnicas de otimização

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

Medir no LuckyTemplates: dicas e técnicas de otimização

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.

Medir no LuckyTemplates: dicas e técnicas de otimização

Você precisa extrair essas medidas em um arquivo diferente e conectá-lo ao modelo de dados que está usando.

Medir no LuckyTemplates: dicas e técnicas de otimização

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.

Medir no LuckyTemplates: dicas e técnicas de otimização

O resultado mostra uma tabela composta por 10 linhas e 3 colunas estendidas que pertencem às colunas resumidas.

Medir no LuckyTemplates: dicas e técnicas de otimização

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.

Medir no LuckyTemplates: dicas e técnicas de otimização

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.

Medir no LuckyTemplates: dicas e técnicas de otimização

Você pode ver que levou 600 milissegundos para executar e 43 consultas do mecanismo de armazenamento para simplesmente recuperar os dados das 10 linhas.

Dados do mecanismo de armazenamento

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.

Medir no LuckyTemplates: dicas e técnicas de otimização

A próxima consulta tem Jobs Date Closed, que é do slicer no relatório.

Medir no LuckyTemplates: dicas e técnicas de otimização

No terceiro código, você verá outro tipo de perda de tarefas com o ID de dados de retorno de chamada.

Medir no LuckyTemplates: dicas e técnicas de otimização

Em outra linha, você verá as linhas de código mais importantes.

Medir no LuckyTemplates: dicas e técnicas de otimização

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.

Medir no LuckyTemplates: dicas e técnicas de otimização

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%.

Medir no LuckyTemplates: dicas e técnicas de otimização

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.

Medir no LuckyTemplates: dicas e técnicas de otimização

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.

Medir no LuckyTemplates: dicas e técnicas de otimização

Isso irá gerar um Plano de Consulta Lógica com diferentes operações.

Medir no LuckyTemplates: dicas e técnicas de otimização

Em seguida, execute a instrução IF destacando a instrução e pressionando enter.

Medir no LuckyTemplates: dicas e técnicas de otimização

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 .

Medir no LuckyTemplates: dicas e técnicas de otimização

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.

Medir no LuckyTemplates: dicas e técnicas de otimização

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.

Medir no LuckyTemplates: dicas e técnicas de otimização

3. Use métodos de avaliação de código

No DAX, existem 3 métodos de avaliação de códigos:

  • Avaliação rigorosa
  • Avaliação ansiosa
  • Avaliação IF.Eager

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.

Medir no LuckyTemplates: dicas e técnicas de otimização

Ao executar esse código, ele gerará 5 consultas do mecanismo de armazenamento.

Medir no LuckyTemplates: dicas e técnicas de otimização

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 .

Medir no LuckyTemplates: dicas e técnicas de otimização

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.

Medir no LuckyTemplates: dicas e técnicas de otimização

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.

Medir no LuckyTemplates: dicas e técnicas de otimização

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.

Medir no LuckyTemplates: dicas e técnicas de otimização

A última consulta fornece o tipo de perda de trabalhos distinto para os valores escritos em ADDCOLUMNS .

Medir no LuckyTemplates: dicas e técnicas de otimização

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.

Desvantagens da Avaliação Ansiosa

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.

Medir no LuckyTemplates: dicas e técnicas de otimização

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.

Medir no LuckyTemplates: dicas e técnicas de otimização

Na próxima consulta, obtém um Tipo de Perda de Trabalhos distinto da tabela de Trabalhos.

Medir no LuckyTemplates: dicas e técnicas de otimização

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 .

Medir no LuckyTemplates: dicas e técnicas de otimização

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.

Medir no LuckyTemplates: dicas e técnicas de otimização

A primeira consulta obtém o tipo de perda de empregos e a soma da estimativa de empregos e do lucro bruto.

Medir no LuckyTemplates: dicas e técnicas de otimização

A segunda consulta obtém a soma da estimativa de trabalhos.

Medir no LuckyTemplates: dicas e técnicas de otimização

A última consulta obtém o tipo de perda de trabalhos distinto da tabela de trabalhos.

Medir no LuckyTemplates: dicas e técnicas de otimização

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:

  • Avaliação estrita é usada para códigos complexos. Aplica-se também quando não se deseja avaliar todos os valores fornecidos pela tabela.
  • Eager Evaluation é melhor usar se seus códigos forem simples.
  • Use IF.EAGER se quiser escrever códigos usando a Avaliação Estrita e executá-la com Avaliação Eager.

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 .

Medir no LuckyTemplates: dicas e técnicas de otimização

Altere as referências de medida com as variáveis.

Medir no LuckyTemplates: dicas e técnicas de otimização

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.

Medir no LuckyTemplates: dicas e técnicas de otimização

Agora, crie as variáveis ​​para todos os dados e altere todas as referências de medida para suas variáveis ​​correspondentes.

Medir no LuckyTemplates: dicas e técnicas de otimização

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.

Medir no LuckyTemplates: dicas e técnicas de otimização

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  .

Medir no LuckyTemplates: dicas e técnicas de otimizaçã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.

Medir no LuckyTemplates: dicas e técnicas de otimização

Na segunda consulta, você notará um ID de dados de retorno de chamada.

Medir no LuckyTemplates: dicas e técnicas de otimização

À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.

Remover dados de retorno de chamada

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 .

Medir no LuckyTemplates: dicas e técnicas de otimização

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.

Medir no LuckyTemplates: dicas e técnicas de otimização

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.

Medir no LuckyTemplates: dicas e técnicas de otimização

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.

Medir no LuckyTemplates: dicas e técnicas de otimização

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.

Medir no LuckyTemplates: dicas e técnicas de otimização

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.

Medir no LuckyTemplates: dicas e técnicas de otimização

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.

Medir no LuckyTemplates: dicas e técnicas de otimização

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.

Medir no LuckyTemplates: dicas e técnicas de otimização

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.


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