Dimensão lixo: o que é e por que é tudo menos lixo

Hoje, quero falar sobre um conceito de modelagem de dados chamado dimensão de lixo . Pelo nome, você pensaria que é uma técnica depreciativa e algo que você gostaria de evitar, mas na verdade é uma abordagem útil.

Na verdade, trabalhei em uma pergunta do e uma dimensão de lixo foi a solução perfeita para isso. Depois de vê-lo e entendê-lo, você encontrará muitas aplicações para ele em seu próprio trabalho. Você pode assistir ao vídeo completo deste tutorial na parte inferior deste blog.

Índice

Quais são as dimensões do lixo?

O Data Warehouse Toolkit de Kimball e Ross , uma das bíblias da modelagem dimensional, a define como o agrupamento de flags e indicadores tipicamente de baixa cardinalidade . Baixa cardinalidade significa um pequeno número de observações únicas dentro de um determinado campo.

Em nosso exemplo, temos um modelo de dados para nosso negócio de construção de PCs personalizados. O modelo de dados refere-se a pedidos e faturas. Temos também uma série de flags onde podemos capturar o tipo de processador , tipo de configuração da torre (Compacta ou Full) e finalidade (Gaming ou Workstation).

Dimensão lixo: o que é e por que é tudo menos lixo

Definindo as dimensões do lixo usando a analogia da gaveta do lixo da cozinha

Se você olhar para cada um desses campos, há apenas duas observações únicas em cada campo. Isso é o que Kimball chamaria de sinalizador de baixa cardinalidade . Ele diz que, ao criar uma dimensão abstrata, removemos sinalizadores da tabela de fatos enquanto os colocamos em uma estrutura dimensional útil.

A analogia da gaveta de lixo da cozinha para uma dimensão de lixo é boa. Todo mundo tem uma gaveta cheia de elásticos, grampos, pilhas, velas de aniversário, etc. Não é importante que nenhuma dessas coisas justifique ter sua própria gaveta, mas você precisa ter um lugar para colocá-las.

Mantê-los pode fazer com que a tabela de fatos aumente de tamanho. Digamos que temos uma tabela de fatos com um milhão de registros. Construímos muitos computadores e, para cada computador que construímos, temos que sinalizar o processador, a torre e a finalidade. Isso significa que, para um milhão de linhas de PCs encomendados, também temos 3 milhões de sinalizadores na tabela de fatos.

Reduzindo o tamanho da tabela de fatos

Poderíamos movê-los para uma tabela de dimensões e vinculá-los apenas ao ID do modelo para remover os 3 milhões de sinalizadores da tabela de fatos. Para fazer isso, podemos fazer uma tabela separada para cada um desses sinalizadores e funcionará. Mas esse processo complicará o modelo de dados, onde você normalmente deseja evitar tabelas de coluna única.

A solução ideal é usar uma dimensão de lixo , onde você tem um monte de sinalizadores de baixa cardinalidade relacionados de maneira geral. Todos eles estão relacionados aos atributos dos computadores que estamos construindo, mas não de uma maneira realmente direta que você normalmente teria para uma tabela de dimensão específica.

Revendo o problema do membro do fórum

Vamos dar uma olhada no aplicativo específico que foi postado no fórum. O membro queria criar dois campos diferentes, um para Stalled e outro para Active . Se o cliente realizou uma transação nos últimos 45 dias, ela é sinalizada como ativa; caso contrário, ele será sinalizado como parado.

Dimensão lixo: o que é e por que é tudo menos lixo

O membro também queria outra tabela de dimensão para o tipo de cliente, que é de vários pedidos ou pedido único. Se a conta tiver duas ou mais transações em qualquer ponto do histórico usando um único número de conta, isso será considerado um cliente multiordem. E se eles tivessem apenas um pedido para um determinado número de conta, seria um cliente de pedido único.

Então essas são as duas bandeiras que queremos desenvolver. Vamos pular para o LuckyTemplates e descobrir como fazer isso.

Modelagem de dados para a dimensão lixo

Vamos dar uma olhada no modelo de dados. É um modelo de dados realmente simples. Temos nossa tabela estendida de datas e tabela de transações .

Dimensão lixo: o que é e por que é tudo menos lixo

Nossa tabela de transações possui apenas três campos: um número de conta , data da fatura e quantidade de vendas .

Dimensão lixo: o que é e por que é tudo menos lixo

Geralmente, se pudermos empurrar a transformação para mais perto da fonte, faremos isso. Isso não é dinâmico durante uma sessão de relatório, então não precisamos fazer isso no DAX .

Devemos fazê-lo em power query ou data warehouse/SQL se tivermos essa opção. Mas, por enquanto, vamos supor que não e que estamos apenas fazendo isso em power query .

Identificando o tipo de cliente para a dimensão lixo

A primeira coisa que faremos é descobrir o tipo de cliente, se é uma transação de pedido único ou de vários pedidos. Usaremos Group By , Count e Count Rows .

Dimensão lixo: o que é e por que é tudo menos lixo

Em seguida, adicione todos os dados e torne-a uma operação All Rows para que não retornemos a tabela agregada, mas a tabela inicial com essa contagem de linha em cada linha.

Dimensão lixo: o que é e por que é tudo menos lixo

Vamos dar uma olhada no resultado e expandi-lo.

Dimensão lixo: o que é e por que é tudo menos lixo

Dimensão lixo: o que é e por que é tudo menos lixo

Dimensão lixo: o que é e por que é tudo menos lixo

Podemos adicionar uma coluna personalizada e nomeá-la como Client Type e, em seguida, criar uma instrução IF. A instrução é se Count for igual a 1, então é uma única ordem; caso contrário, é multiordem.

Dimensão lixo: o que é e por que é tudo menos lixo

Vamos apenas alterar a coluna para um tipo de texto. Agora, temos uma de nossas duas dimensões definidas na tabela de fatos.

Dimensão lixo: o que é e por que é tudo menos lixo

Vamos fazer a tabela da segunda dimensão. Para este, se o pedido mais recente for 45 dias ou menos a partir da data de hoje, o cliente será visto como ativo. Se não houver pedido dentro de 45 dias a partir de hoje, o cliente está inativo.

Adicionaremos uma coluna personalizada e nomearemos a coluna como Today . Em seguida, adicione DateTime.LocalNow para fornecer a data e a hora atuais e Date.From para fornecer apenas a parte da data.

Dimensão lixo: o que é e por que é tudo menos lixo

Vamos apenas mudar isso para um tipo de dados de data e, em seguida, mover a coluna para a frente.

Dimensão lixo: o que é e por que é tudo menos lixo

Existe uma maneira simples de criar uma subtração entre as duas colunas de datas. Basta destacar essas duas datas, clicar em Datas na faixa de opções e clicar em Subtrair dias .

Dimensão lixo: o que é e por que é tudo menos lixo

Isso lhe dará a diferença entre essas duas datas em termos de número de dias. Vamos nomear esta nova coluna de Dias Antes de Hoje.

Dimensão lixo: o que é e por que é tudo menos lixo

O próximo passo é encontrar os dias mínimos anteriores a hoje, o que significa o pedido mais recente para cada número de conta. Se esse número for menor ou igual a 45, ele está ativo.

Vamos fazer outro Group By , Advanced , Account Number .

Dimensão lixo: o que é e por que é tudo menos lixo

Novamente, usaremos todos os dados para o novo nome da coluna e todas as linhas para a operação.

Dimensão lixo: o que é e por que é tudo menos lixo

Desta vez, adicionaremos o Minimum Days Between com Minimum como sua operação e Days Before to Today como sua coluna. Isso nos dará o pedido mais recente.

Dimensão lixo: o que é e por que é tudo menos lixo

Em seguida, expandimos Todos os dados e removemos o Número da conta .

Dimensão lixo: o que é e por que é tudo menos lixo

Assim que expandirmos isso, teremos o Minimum Days Between para os números de conta.

Dimensão lixo: o que é e por que é tudo menos lixo

Por fim, adicionaremos outra coluna personalizada e a chamaremos de Client Timing . Colocaremos um parâmetro hipotético em que, se Min Days Between for menor ou igual a 45, ele será Active ou Stalled .

Dimensão lixo: o que é e por que é tudo menos lixo

Dimensão lixo: o que é e por que é tudo menos lixo

Removendo as colunas desnecessárias

Como agora temos muitas colunas de suporte, vamos clicar em Choose Columns e retirar as que não precisamos.

Dimensão lixo: o que é e por que é tudo menos lixo

Estaremos removendo as colunas Count , Today , Days Before to Today e Min Days Between . Agora temos apenas a tabela de fatos original, mais as colunas Client Type e Client Timing .

Dimensão lixo: o que é e por que é tudo menos lixo

Em vez de mantê-los na tabela de fatos, vamos duplicar esta tabela.

Dimensão lixo: o que é e por que é tudo menos lixo

Chamaremos a tabela duplicada de Account Flags .

Dimensão lixo: o que é e por que é tudo menos lixo

Vamos voltar para a tabela Transações e remover os campos Tipo de cliente e Tempo do cliente .

Dimensão lixo: o que é e por que é tudo menos lixo

Agora temos a tabela de fatos original e a tabela de sinalizadores de conta.

Dimensão lixo: o que é e por que é tudo menos lixo

Dimensão lixo: o que é e por que é tudo menos lixo

Para a tabela Account Flags, não precisamos dos campos Client Type e Client Timing , então os removemos. Apenas destacamos todos esses campos, removemos linhas e removemos duplicatas.

Dimensão lixo: o que é e por que é tudo menos lixo

Agora temos nossa tabela de dimensões de lixo. Tudo o que resta é clicar em Fechar e Aplicar . A próxima etapa é conectar o número da conta de nossa tabela de sinalizadores de conta ao número da conta em nossa tabela de transações .

Dimensão lixo: o que é e por que é tudo menos lixo

Temos um relacionamento um-para-muitos entre a tabela Transactions (que é nossa tabela de fatos) e a tabela Account Flags (que é nossa tabela de dimensões de lixo).


Construindo seus relacionamentos de modelo de dados no LuckyTemplates
Modelagem de dados no LuckyTemplates: dicas e práticas recomendadas

Conclusão

Vamos soltar as dimensões Client Timing e Client Type em nossa tela e transformá-las em segmentações. Agora podemos fazer exatamente o que o membro queria fazer inicialmente, que é fatiar com base nesses atributos.

Se clicarmos em Multi-Order, nos deixará apenas com aqueles que têm vários pedidos e se formos em Single-Order, nos deixará com aqueles que têm uma compra.

Dimensão lixo: o que é e por que é tudo menos lixo

Para resumir, isso é basicamente o que é uma dimensão de lixo e como você pode criá-la. Essa é uma técnica muito útil se você tiver um monte de sinalizadores variados de baixa cardinalidade que deseja incorporar em seu modelo de dados de maneira eficiente.

A técnica de agrupar por todas as linhas é extremamente útil para criar essas dimensões inúteis. Espero que você tenha achado isso útil e como sempre.

Leave a Comment

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.