Otimizando o DAX para LuckyTemplates usando o DAX Studio – Formula Engines

Otimizando o DAX para LuckyTemplates usando o DAX Studio – Formula Engines

Ao otimizar seu modelo de dados e seu DAX para LuckyTemplates, é bom lembrar que há dois mecanismos em execução nos bastidores — o mecanismo de fórmula e o mecanismo de armazenamento .

Esses dois mecanismos trabalham juntos para retornar os resultados necessários ao usuário. Eles fornecem os resultados definidos na forma de uma tabela ou um valor de escala.

Índice

O papel do motor de fórmula

Neste artigo, vamos nos concentrar no mecanismo de fórmula.

O mecanismo de fórmula é o mecanismo de nível superior que gerencia toda a arquitetura de uma consulta.

O que quer que você faça ao executar uma consulta ou ao criar uma coluna calculada ou uma tabela calculada, o mecanismo de fórmula entra em ação.

O mecanismo de fórmula entende as consultas recebidas não apenas no DAX, mas também no MDX. Por exemplo, ao usar o Excel, você cria modelos dinâmicos com base em tabelas dinâmicas, e as tabelas dinâmicas realmente usam a linguagem MDX.

É aqui que o mecanismo de fórmula entra em ação. Como ele compreende DAX e MDX, você pode usar outro modelo do LuckyTemplates. As consultas enviadas desse modelo de dados usarão DAX, enquanto as consultas provenientes do modelo dinâmico usarão MDX.

Como funciona o motor de fórmula

Entender as consultas originadas da fonte MDX ou da fonte DAX é apenas um fator no desempenho do mecanismo de fórmula. Ele também passa por outras etapas para ajudá-lo a trabalhar em suas consultas.

Primeiro, ele precisa gerar um plano de consulta que o mecanismo de armazenamento entenda . Como o mecanismo de nível inferior, o mecanismo de armazenamento realmente não sabe se uma tabela dinâmica dentro do Excel ou um visual dentro do LuckyTemplates executou a consulta.

Ao criar um plano de consulta, o mecanismo de fórmula cria primeiro um plano de consulta lógico e, em seguida, cria um plano de consulta físico. Tanto o plano de consulta lógico quanto o físico devem ser parecidos.

Depois de concluir o plano de consulta física, o usuário ou a ferramenta cliente obtém o conjunto de resultados. A partir daí, a ferramenta cliente determina como usará os resultados ou o conjunto de dados para exibir o resultado final ao usuário.

Principais Limitações do Motor de Fórmula

O mecanismo de fórmula desempenha um papel importante ao otimizar o DAX para LuckyTemplates usando o DAX Studio. No entanto, ele também vem com algumas limitações.

Primeiro, o mecanismo de fórmula sempre usa um único núcleo para gerenciar toda a sua operação, independentemente de quantos núcleos de CPU estão disponíveis em seu sistema .

Quando eu abrir meu Gerenciador de Tarefas, você verá que minha CPU tem seis núcleos.

Otimizando o DAX para LuckyTemplates usando o DAX Studio – Formula Engines

Apesar disso, o mecanismo de fórmula ainda escolherá um desses seis núcleos para trabalhar, enquanto deixa o mecanismo de armazenamento para usar o restante.

Em segundo lugar, o mecanismo de fórmula não tem acesso direto ao seu banco de dados . Devido a essa limitação, você teria que armazenar os dados dentro da memória interna ou armazenar no banco de dados e criar uma DirectQuery nesse banco de dados.

Ele também depende do mecanismo de armazenamento para obter os dados na forma de um cache de dados. O mecanismo de fórmula itera sobre esse cache de dados para prosseguir antes de fornecer resultados ao usuário final.

Como o mecanismo de fórmula ajuda a otimizar o DAX para LuckyTemplates

Às vezes, ao tentar otimizar seu modelo de dados ou seu DAX para LuckyTemplates, você notará que o mecanismo de armazenamento fica mais lento ao executar consultas. Nesse caso, você pode usar o mecanismo de fórmula para concluir todo o cálculo para otimizar o processo.

Observe que se o motor de fórmulas acabar construindo sozinho toda a tabela, o conjunto de resultados criado no processo não será utilizado nas consultas subsequentes que serão geradas pela ferramenta cliente caso sejam semelhantes às consultas executadas anteriormente . Mas, caso o mecanismo de armazenamento forneça o cache de dados, esse cache de dados específico pode ser mantido na memória para otimizar as solicitações provenientes da ferramenta cliente.

Como isso vai funcionar?

Digamos que escrevemos uma consulta para ser executada completamente pelo mecanismo de armazenamento, mas com alguns aspectos a serem calculados pelo mecanismo de fórmula. Nesse caso, o mecanismo de armazenamento enviará um cache de dados de volta ao mecanismo de fórmula e esse cache de dados (caso seja simples) pode ser mantido na memória.

Agora, se uma consulta semelhante chegar alguns segundos depois, em vez de verificar todo o modelo de dados novamente, o mecanismo de fórmula ou o mecanismo de armazenamento usará esse cache de dados específico para que o tempo de consulta possa ser reduzido e a experiência do usuário possa ser melhorada. melhorou.

Reduzindo a carga no motor de fórmula

Novamente, o mecanismo de fórmula entende os códigos DAX e MDX.

Portanto, se você usar , e outras tarefas, o mecanismo de fórmula conhecerá todas as funções que você está usando na linguagem DAX e poderá resolvê-las por conta própria. No entanto, isso pode afetar o desempenho da consulta, especialmente porque o mecanismo de fórmula tenta fazer tudo usando um único núcleo.

É por isso que também precisamos estar atentos ao reduzir a carga no mecanismo de fórmula e aumentar a carga no mecanismo de armazenamento.

Um bom exemplo de quão diferente é a computação dentro do mecanismo de fórmula em relação ao mecanismo de armazenamento seria o uso de CROSSJOIN versus .

Quando você usa o CROSSJOIN, apenas uma quantidade limitada de dados passa pelo mecanismo de armazenamento. Quanto ao restante da computação, tudo será realizado pelo mecanismo de fórmula. Em comparação, usar SUMMARIZE significa executar toda a consulta no mecanismo de armazenamento.

Claro, isso também dependeria de como SUMMARIZE é usado.

Se SUMMARIZE for usado como a função mais interna, ela será definitivamente enviada para o mecanismo de armazenamento. Mas, em alguns casos, SUMMARIZE é usado em conjunto com um código diferente que requer o funcionamento do mecanismo de fórmula. Nesse caso, o mecanismo de fórmula entrará em ação e fará o trabalho.

Saber para onde vai a carga pode te ajudar a otimizar o desempenho da sua consulta, principalmente quando você tem em mente qual a capacidade e limitações dos motores à sua disposição.

Ferramentas que podem ajudar a otimizar o DAX para LuckyTemplates

A otimização do DAX será mais fácil se você maximizar as ferramentas que o tornam possível. O DAX Studio é uma dessas ferramentas.

Vejamos o exemplo anterior em que o mecanismo de fórmula assume toda a carga de conclusão do cálculo quando a função SUMMARIZE é usada. O DAX Studio pode ajudá-lo a reescrever seu código de forma a inserir SUMMARIZE no mecanismo de armazenamento, liberando a carga no mecanismo de fórmula. Isso melhora potencialmente o desempenho de seu modelo de dados e consultas.

Claro, isso deve funcionar perfeitamente para consultas simples. Existem também cenários mais complicados.

Por exemplo, você pode criar modelos compostos que usam dois mecanismos de armazenamento no próprio modelo de dados. Um poderia ser para Vertipaq, enquanto o outro seria para DirectQuery. Nesse caso, seu banco de dados deve ser otimizado de forma que as consultas geradas sejam construídas para aquele modelo de dados relacional específico.

Digamos que você tenha duas tabelas dentro de seu modelo de data — a tabela Produtos e a tabela Vendas. A tabela Produtos está no armazenamento do Vertipaq, enquanto a tabela Vendas, por ser uma tabela maior, é armazenada diretamente dentro do banco de dados através de uma conexão DirectQuery.

Vamos supor também que você está arrastando a coluna Marca para a matriz, bem como a medida Total Sales que vem da tabela Sales dentro da conexão DirectQuery.

Neste caso, o formula engine terá que realizar a operação entre os dois engines.

Primeiro, ele recuperará as colunas Product Key e Brand da tabela Products. Em seguida, ele recuperará as colunas Net Price, Quantity e Product Key da tabela Sales. Assim que tiver o cache de dados do Vertipaq e do DirectQuery, o mecanismo de fórmula terá que pegar o cache de dados e tentar juntá-los para fornecer os resultados ao usuário final.


Técnicas e lições de otimização de consultas DAX
Desempenho de consultas e configuração do DAX Studio
Otimização DAX: onde encontrar a armadilha DAX oculta

Conclusão

O mecanismo de fórmula realmente desempenha um papel importante quando você está trabalhando com o DAX. No entanto, é fundamental entender como ele funciona primeiro antes de começar. É fundamental dominar como fazer o mecanismo de fórmula e o mecanismo de armazenamento funcionarem perfeitamente juntos, especialmente se você deseja que suas consultas DAX tenham um desempenho melhor.

Como o mecanismo de nível superior dentro da arquitetura de serviços de análise, o mecanismo de fórmula precisa realizar muitas operações. Mas, uma vez que você também entenda os meandros do mecanismo de armazenamento, poderá descobrir qual operação inserir no mecanismo de armazenamento e qual deixar no mecanismo de fórmula.

Iremos nos aprofundar no mecanismo de armazenamento em um tutorial separado.

Tudo de bom,


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