Indexação de dados no Vertipaq: armazenamento de linha versus armazenamento de coluna

Indexação de dados no Vertipaq: armazenamento de linha versus armazenamento de coluna

Neste tutorial, abordaremos a diferença de como a indexação de dados funciona em um banco de dados relacional e no Vertipaq.

Os bancos de dados relacionais armazenam os dados linha por linha. Por outro lado, Vertipaq faz isso coluna por coluna.

Vamos ver como essas duas formas de armazenar e indexar dados podem afetar o processo de desenvolvimento de relatórios, especialmente ao executar suas consultas.

Índice

Indexação de dados por linha

Armazenar os dados linha por linha é a maneira tradicional de armazenar dados. No entanto, esse processo leva mais tempo, o que afetará o desempenho da sua consulta.

Digamos que temos uma tabela que contém Marca, Cor, Gênero, Quantidade e Preço Líquido.

Indexação de dados no Vertipaq: armazenamento de linha versus armazenamento de coluna

Se armazenarmos tudo nesta tabela em um banco de dados, ele armazenará os dados linha por linha. É por isso que a estrutura de armazenamento de dados tradicional também é chamada de armazenamento de linha.

Primeiro, na mesma linha, ele armazenará os cabeçalhos de coluna encontrados na primeira linha — Marca, Cor, Gênero, Quantidade e Preço Líquido. Em seguida, ele passa para a próxima linha para armazenar os primeiros itens em cada coluna — A. Datum, Azure, um espaço em branco, 1 e 103,2. Isso continua linha por linha.

Indexação de dados no Vertipaq: armazenamento de linha versus armazenamento de coluna

Então, como vamos calcular a da Quantidade usando esse método de indexação de dados?

Primeiro, começa com a primeira linha, que contém os cabeçalhos das colunas. Em seguida, ele pula para a próxima linha e pula os outros dados até chegar à primeira quantidade que vê, que é 1. Em seguida, pula de linha em linha, percorrendo todos os dados que cada linha contém e reúne todos os quantidades são encontradas.

Depois de separar todas as quantidades de cada linha, é a única vez que o cálculo é concluído.

Você provavelmente pode imaginar como o processo é tedioso se estiver preparando um relatório do LuckyTemplates que usa uma conexão DirectQuery com uma fonte de dados SQL. Nesse caso, os serviços de análise converterão o código DAX na linguagem SQL e começarão a percorrer a estrutura de dados linha por linha.

Indexação de dados por coluna

Para evitar o longo processo envolvido, você tem a opção de armazenar os dados coluna por coluna por meio do Vertipaq ao escolher o modo de importação.

Quando você usa armazenamento de coluna em vez de armazenamento de linha, Marca, Cor, Gênero, Quantidade e Preço Líquido serão armazenados em diferentes estruturas de dados.

Indexação de dados no Vertipaq: armazenamento de linha versus armazenamento de coluna

Digamos que queremos obter a SOMA dos valores na coluna Quantidade. Não haverá necessidade de passar pela Marca, Cor e outros dados fora da coluna Quantidade. Em uma única varredura, ele lê toda a coluna Quantidade de cima para baixo e soma todos os valores.

Indexação de dados no Vertipaq: armazenamento de linha versus armazenamento de coluna

Por causa disso, as consultas serão executadas mais rapidamente em comparação com a execução da esquerda para a direita.

Comparando o tempo de execução em consultas simples

Para realmente ver a enorme diferença entre armazenamento de linha e armazenamento de coluna, vamos fazer algumas consultas de teste em SQL e Vertipaq. O tempo de execução deve nos dizer o quão rápido um processo é comparado ao outro.

Vamos começar com uma consulta simples em SQL. Vamos calcular a SOMA da coluna Quantidade na tabela Vendas.

Indexação de dados no Vertipaq: armazenamento de linha versus armazenamento de coluna

Como você pode ver, o tempo total de execução é de 2,2 segundos.

Agora, vamos ao DAX Studio e usamos a função EVALUATE para executar a mesma consulta. Precisamos ativar as temporizações do servidor e aguardar a conclusão do rastreamento.

Indexação de dados no Vertipaq: armazenamento de linha versus armazenamento de coluna

Também precisamos garantir que a opção “Limpar cache e executar” esteja selecionada quando executarmos a consulta.

Indexação de dados no Vertipaq: armazenamento de linha versus armazenamento de coluna

Depois que a consulta for executada, você verá que leva apenas 3 milissegundos para concluir a mesma consulta que fizemos no SQL anteriormente.

Indexação de dados no Vertipaq: armazenamento de linha versus armazenamento de coluna

O conjunto de resultados também deve corresponder ao SQL e ao DAX Studio. Se colocá-los lado a lado, você pode ver que estamos retornando o mesmo valor.

Indexação de dados no Vertipaq: armazenamento de linha versus armazenamento de coluna

Você pode tentar executar a consulta mais algumas vezes para ver a consistência do tempo de execução.

Comparando o tempo de execução em consultas mais complicadas

Desta vez, vamos comparar o tempo de execução quando estamos executando consultas mais complicadas.

Digamos que queremos identificar a SOMA da Quantidade de Vendas de cada marca. Para isso, podemos usar sobre os da Marca de cada Produto. No contexto baixo, também criaremos uma nova tabela chamada Quantidade Total onde iremos para a SOMA da Quantidade de Vendas.

Indexação de dados no Vertipaq: armazenamento de linha versus armazenamento de coluna

Se executarmos esse código, você verá que o tempo total de execução é de 7 milissegundos.

Indexação de dados no Vertipaq: armazenamento de linha versus armazenamento de coluna

Em segundo plano, esse código está, na verdade, executando duas consultas. O primeiro pega a coluna Marca da tabela Produtos e, em seguida, executa um OUTER JOIN nas colunas Chave do Produto, tanto na coluna Vendas quanto na coluna Produtos.

Indexação de dados no Vertipaq: armazenamento de linha versus armazenamento de coluna

A segunda consulta simplesmente recupera a coluna Marca da tabela Produtos.

Indexação de dados no Vertipaq: armazenamento de linha versus armazenamento de coluna

Se eu for para a tela de resultados, você verá que a medida da Quantidade Total foi dividida com base em cada Marca.

Indexação de dados no Vertipaq: armazenamento de linha versus armazenamento de coluna

Agora vamos para o servidor SQL e escrever a mesma consulta.

Empurraremos a tabela DaxStudio Sales para a próxima linha, referenciando a tabela Sales AS S. Em seguida, também executaremos um LEFT JOIN na tabela DaxStudio Products referenciada como AS P, com a chave S.Product igual à P. Chave do produto. Também vamos usar P.Brand com a SOMA da Quantidade e Quantidade Total na instrução SELECT . Finalmente, vamos usar para P.brand.

Indexação de dados no Vertipaq: armazenamento de linha versus armazenamento de coluna

Uma vez executado este código, obteremos uma tabela que contém a Quantidade Total segregada por cada Marca, que é a mesma que obtivemos anteriormente no Vertipaq.

Indexação de dados no Vertipaq: armazenamento de linha versus armazenamento de coluna

Quanto ao tempo total de execução, permanece muito mais lento em 2,5 segundos.

Indexação de dados no Vertipaq: armazenamento de linha versus armazenamento de coluna


DAX para LuckyTemplates: otimização usando mecanismos de fórmula no DAX Studio
Técnicas e lições de otimização de consultas DAX
Desempenho de consultas e configuração do DAX Studio

Conclusão

É evidente a rapidez com que o armazenamento de coluna por meio do Vertipaq é realmente em comparação com o armazenamento de linha em um banco de dados SQL. Isso mostra a importância de realmente conhecer como funciona a indexação de dados por meio de diferentes plataformas.

Pode parecer um pequeno sacrifício no início se você ainda optar por 2,5 segundos que o armazenamento de linha executa sua consulta em comparação com 7 milissegundos. Mas todos nós executamos várias consultas quando criamos nossos relatórios e todos esses tempos de execução serão somados, impactando a produtividade e a experiência do usuário a longo prazo.


Colunas calculadas no SharePoint | Uma visão geral

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.

Atributos pré-atentivos: como isso pode afetar seu relatório

Atributos pré-atentivos: como isso pode afetar seu relatório

Descubra todos os atributos pré-atentivos e saiba como isso pode impactar significativamente seu relatório do LuckyTemplates

Calcular Dias de Estoque Zero – LuckyTemplates Inventory Management Insights

Calcular Dias de Estoque Zero – LuckyTemplates Inventory Management Insights

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.

Usando exibições de gerenciamento dinâmico (DMV) no DAX Studio

Usando exibições de gerenciamento dinâmico (DMV) no DAX Studio

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.

Variáveis ​​e expressões dentro do editor do Power Query

Variáveis ​​e expressões dentro do editor do Power Query

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.

Como calcular a diferença em dias entre compras usando o DAX no LuckyTemplates

Como calcular a diferença em dias entre compras usando o DAX no LuckyTemplates

Aprenda a calcular a diferença em dias entre compras usando DAX no LuckyTemplates com este guia completo.

Calculando a média no LuckyTemplates: isolando os resultados do dia da semana ou do fim de semana usando o DAX

Calculando a média no LuckyTemplates: isolando os resultados do dia da semana ou do fim de semana usando o DAX

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

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.