Modelagem dimensional no Warehouse do Microsoft Fabric: tabelas de fatos

Aplica-se a:✅ ponto de extremidade de análise do SQL e Warehouse no Microsoft Fabric

Observação

Este artigo faz parte da série sobre Modelagem Dimensional. Esta série se concentra nas diretrizes e melhores práticas de design relacionadas à modelagem dimensional no Warehouse do Microsoft Fabric.

Este artigo fornece diretrizes e melhores práticas para projetar tabelas de fatos em um modelo dimensional. Ele apresenta diretrizes práticas para o Warehouse no Microsoft Fabric, uma experiência que oferece suporte a muitos recursos de T-SQL, como a criação de tabelas e o gerenciamento de dados em tabelas. Assim, você tem total controle ao criar suas tabelas de modelos dimensionais e carregá-las com dados.

Observação

Neste artigo, o termo data warehouse refere-se a um data warehouse empresarial, que oferece integração abrangente de dados críticos em toda a organização. Por outro lado, o termo autônomo warehouse refere-se a um Warehouse do Fabric, uma oferta de banco de dados relacional de software como serviço (SaaS) que pode ser usada para implementar um data warehouse. Para maior clareza, neste artigo, este último termo é mencionado como Fabric Warehouse.

Dica

Caso não tenha experiência com modelagem dimensional, esta série de artigos é o primeiro passo. Ela não se destina a fornecer uma discussão completa sobre o projeto de modelagem dimensional. Para obter mais informações, consulte diretamente o conteúdo publicado amplamente adotado, como The Data Warehouse Toolkit: The Definitive Guide to Dimensional Modeling (3ª edição, 2013) de Ralph Kimball e outros.

Em um modelo dimensional, uma tabela de fatos armazena medidas associadas a observações ou eventos. Ele pode armazenar ordens de venda, saldos de estoque, taxas de câmbio, leituras de temperatura e muito mais.

As tabelas de fatos incluem medidas, normalmente colunas numéricas, como a quantidade da ordem de venda. As consultas analíticas resumem medidas (usando soma, contagem, média e outras funções) no contexto de filtros e agrupamentos de dimensão.

As tabelas de fatos também incluem chaves de dimensão, que determinam a dimensionalidade dos fatos. Os valores da chave de dimensão determinam a granularidade dos fatos, que é o nível atômico pelo qual os fatos são definidos. Por exemplo, uma chave de dimensão da data do pedido em uma tabela de fatos de vendas define a granularidade dos fatos no nível da data, enquanto uma chave de dimensão da data de meta em uma tabela de fatos de metas de vendas pode definir a granularidade no nível do trimestre.

Observação

Embora seja possível armazenar fatos com uma granularidade maior, não é fácil dividir os valores da medida em níveis mais baixos de granularidade (se necessário). Volumes de dados puros, juntamente com requisitos analíticos, podem fornecer motivos válidos para armazenar fatos de maior granularidade, mas às custas de análises detalhadas.

Para identificar facilmente tabelas de fatos, você normalmente prefixa os nomes com f_ ou Fact_.

Estrutura da tabela de fatos

Para descrever a estrutura de uma tabela de fatos, considere o exemplo a seguir de uma tabela de fatos de vendas chamada f_Sales. Este exemplo aplica as boas práticas de design. Cada um dos grupos de colunas é descrito nas seções a seguir.

CREATE TABLE f_Sales
(
    --Dimension keys
    OrderDate_Date_FK INT NOT NULL,
    ShipDate_Date_FK INT NOT NULL,
    Product_FK INT NOT NULL,
    Salesperson_FK INT NOT NULL,
    <…>
    
    --Attributes
    SalesOrderNo INT NOT NULL,
    SalesOrderLineNo SMALLINT NOT NULL,
    
    --Measures
    Quantity INT NOT NULL,
    <…>
    
    --Audit attributes
    AuditMissing BIT NOT NULL,
    AuditCreatedDate DATE NOT NULL,
    AuditCreatedBy VARCHAR(15) NOT NULL,
    AuditLastModifiedDate DATE NOT NULL,
    AuditLastModifiedBy VARCHAR(15) NOT NULL
);

Chave primária

Como é o caso no exemplo, a amostra da tabela de fatos não tem uma chave primária. Isso ocorre porque ele normalmente não serve a um propósito útil e aumentaria desnecessariamente o tamanho do armazenamento de tabelas. Uma chave primária geralmente é implícita pelo conjunto de chaves de dimensão e atributos.

Chaves de dimensão

A amostra da tabela de fatos tem várias chaves de dimensão, que determinam a dimensionalidade da tabela de fatos. As chaves de dimensão são referências às chaves alternativas (ou atributos de nível superior) nas dimensões relacionadas.

Observação

É uma tabela de fatos incomum que não inclui pelo menos uma chave de dimensão de data.

Uma tabela de fatos pode fazer referência a uma dimensão várias vezes. Nesse caso, é conhecida como uma dimensão com função múltipla. Neste exemplo, a tabela de fatos tem as chaves de dimensão OrderDate_Date_FK e ShipDate_Date_FK. Cada chave de dimensão representa uma função distinta, mas há apenas uma dimensão de data física.

É uma boa prática definir cada chave de dimensão como NOT NULL. Durante o carregamento da tabela de fatos, você pode usar membros da dimensão especial para representar estados ausentes, desconhecidos, N/A ou de erro (se necessário).

Atributos

A amostra da tabela de fatos tem dois atributos. Os atributos fornecem informações adicionais e definem a granularidade dos dados de fatos, mas não são chaves de dimensão, nem atributos de dimensão, nem medidas. Neste exemplo, as colunas de atributo armazenam informações da ordem de venda. Outros exemplos podem incluir números de controle ou números de tíquete. Para fins de análise, um atributo pode formar uma dimensão de degeneração.

Medidas

A amostra da tabela de fatos também tem medidas, como a coluna Quantity. As colunas de medida são tipicamente numéricas e comumente aditivas (o que significa que podem ser somadas e resumidas usando outras agregações). Para obter mais informações, confira Tipos de medida mais adiante neste artigo.

Atributos de auditoria

A amostra da tabela de fatos também tem vários atributos de auditoria. Os atributos de auditoria são opcionais. Eles permitem controlar quando e como os registros de fatos foram criados ou modificados e podem incluir informações de diagnóstico ou solução de problemas geradas durante os processos de extração, transformação e carregamento (ETL). Por exemplo, convém controlar quem (ou qual processo) atualizou uma linha e quando isso ocorreu. Os atributos de auditoria também podem ajudar a diagnosticar um problema desafiador, como quando um processo de ETL para inesperadamente.

Tamanho da tabela de fatos

As tabelas de fatos variam em tamanho. O tamanho delas corresponde à dimensionalidade, granularidade, número de medidas e quantidade de histórico. Em comparação com as tabelas de dimensões, as tabelas de fatos são mais estreitas (menos colunas), mas grandes, ou mesmo imensas, em termos de linhas (mais de bilhões).

Conceitos do design de fatos

Esta seção descreve vários conceitos do design de fatos.

Tipos de tabela de fatos

Há três tipos de tabelas de fatos:

  • Tabelas de fatos de transações
  • Tabelas de fatos instantâneo periódicas
  • Acúmulo de tabelas de fatos de instantâneo

Tabelas de fatos de transações

Uma tabela de fatos de transação armazena eventos ou transações de negócios. Cada linha armazena fatos em termos de chaves e medidas de dimensão e, opcionalmente, outros atributos. Todos os dados são totalmente conhecidos quando inseridos e nunca mudam (exceto para corrigir erros).

Normalmente, as tabelas de fatos de transação armazenam fatos no menor nível possível de granularidade e contêm medidas aditivas em todas as dimensões. Uma tabela de fatos de vendas que armazena cada linha da ordem de venda é um bom exemplo de uma tabela de fatos de transação.

Tabelas de fatos instantâneo periódicas

Uma tabela de fatos de instantâneo periódica armazena medidas em um horário predefinido ou intervalos específicos. Ela fornece um resumo das métricas-chave ou indicadores de desempenho ao longo do tempo e, portanto, é útil para análise de tendências e monitoramento de alterações ao longo do tempo. As medidas são sempre semiaditivas (descritas mais adiante).

Uma tabela de fatos de estoque é um bom exemplo de uma tabela de instantâneo periódica. Ela é carregada todos os dias com o saldo de estoque no final do dia de cada produto.

As tabelas de instantâneos periódicas podem ser usadas em vez de uma tabela de fatos de transação quando o registro de grandes volumes de transações é caro e não oferece suporte a nenhum requisito analítico útil. Por exemplo, pode haver milhões de movimentos de ações em um dia (que podem ser armazenados em uma tabela de fatos de transação), mas sua análise se preocupa apenas com as tendências dos níveis de estoque no final do dia.

Acúmulo de tabelas de fatos de instantâneo

Uma tabela de fatos de instantâneo acumulada armazena medidas que se acumulam em um período ou fluxo de trabalho bem definido. Ela geralmente registra o estado de um processo corporativo em estágios ou revisões pós-marco distintos, que podem levar dias, semanas ou até meses para serem concluídos.

Uma linha de fatos é carregada logo após o primeiro evento em um processo e, em seguida, ela é atualizada em uma sequência previsível toda vez que ocorre um evento de revisão pós-marco. As atualizações continuam até a conclusão do processo.

A tabela de fatos de instantâneo acumulada tem várias chaves de dimensão de data, cada uma representando um evento de revisão pós-marco. Algumas chaves de dimensão podem registrar um estado N/A até que o processo atinja uma determinada revisão pós-marco. As medidas normalmente registram durações. As durações entre revisões pós-marco podem fornecer insights valiosos sobre um fluxo de trabalho de negócios ou processo de assembly.

Tipos de medida

As medidas são tipicamente numéricas e geralmente aditivas. No entanto, algumas medidas nem sempre podem ser adicionadas. Essas medidas são categorizadas como semiaditivas ou não aditivas.

Medidas aditivas

Uma medida aditiva pode ser somada em qualquer dimensão. Por exemplo, a quantidade de pedidos e a receita de vendas são medidas aditivas (desde que a receita seja registrada em uma única moeda).

Medidas semiaditivas

Uma medida semi-aditiva pode ser somada apenas em determinadas dimensões.

Estes são alguns exemplos de medidas semiaditivas.

  • Qualquer medida em uma tabela de fatos de instantâneo periódica não pode ser somada em outros períodos. Por exemplo, você não deve somar a idade de um item de estoque amostrado todas as noites, mas pode somar a idade de todos os itens de estoque em uma prateleira, todas as noites.
  • Uma medida de saldo de estoque em uma tabela de fatos de estoque não pode ser somada a outros produtos.
  • A receita de vendas em uma tabela de fatos de vendas que tem uma chave de dimensão de moeda não pode ser somada entre moedas.

Medidas não aditivas

Uma medida não aditiva não pode ser somada em nenhuma dimensão. Um exemplo é uma leitura de temperatura, que, por sua natureza, não faz sentido adicionar a outras leituras.

Outros exemplos incluem taxas, como preços unitários, e índices. No entanto, considera-se uma prática melhor armazenar os valores usados para calcular a razão, permitindo que ela seja calculada, se necessário. Por exemplo, uma porcentagem de desconto de um fato de vendas pode ser armazenada como uma medida do valor de desconto (a ser dividida pela medida da receita de vendas). Além disso, a idade de um item de estoque na prateleira não deve ser somada ao longo do tempo, mas você pode observar uma tendência na idade média dos itens de estoque.

Embora algumas medidas não possam ser somadas, elas ainda são válidas. Elas podem ser agregadas usando contagem, contagem distinta, mínimo, máximo, média e outros. Além disso, as medidas não aditivas podem se tornar aditivas quando usadas em cálculos. Por exemplo, o preço unitário multiplicado pela quantidade do pedido produz receita de vendas, que é aditiva.

Tabelas de fatos sem fatos

Quando uma tabela de fatos não contém colunas de medida, ela é chamada de tabela de fatos sem fatos. Uma tabela de fatos sem fatos normalmente registra eventos ou ocorrências, como alunos assistindo à aula. De uma perspectiva analítica, uma medida pode ser obtida contando linhas de fatos.

Tabelas de fatos agregadas

Uma tabela de fatos agregada representa um rollup de uma tabela de fatos base para uma dimensionalidade menor e/ou maior granularidade. Seu objetivo é acelerar o desempenho da consulta para dimensões comumente consultadas.

Observação

Um modelo semântico do Power BI pode gerar agregações definidas pelo usuário para obter o mesmo resultado ou usar a tabela de fatos agregados do data warehouse com o modo de armazenamento do DirectQuery.

No próximo artigo desta série, aprenda sobre as diretrizes e melhores práticas de design para carregar tabelas de modelos dimensionais.