Esquema de atividades - Activity schema

Na computação, o esquema de atividade é um esquema para data warehouses que representa dados em uma estrutura de série temporal .

Ele foi projetado como uma alternativa de uso geral à modelagem dimensional , como um esquema em estrela . Ele modela ações (chamadas atividades) ao longo do tempo, em vez de fatos e dimensões. Baseia-se na ideia de que a maioria dos dados de negócios (como pedidos, interações com o cliente, etc.) pode ser expressa na forma de um cliente executando uma atividade em um determinado momento.

Esta é uma formalização da abordagem comumente usada para modelar dados de fluxo de eventos , em que uma única tabela armazenará o nome do evento, o carimbo de data / hora e uma entidade. Um esquema de atividade padroniza e estende-o para análises de propósito geral.

Seu objetivo principal é simplificar a modelagem de dados, reduzindo muitos modelos de dados interdependentes em menos atividades independentes. As atividades são inerentemente composíveis e podem ser usadas diretamente para criar conjuntos de dados e agregações para inteligência de negócios . Isso reduz a necessidade de camadas de modelo adicionais e ajuda a manter uma única fonte de verdade .

Conceitos

Um esquema de atividade representa entidades que executam atividades em um momento específico. É comumente usado para modelar o comportamento do cliente em uma empresa. Por exemplo, um cliente visualizou uma página da web ou enviou um tíquete de suporte.

Entidade

Entidades são os atores que executam uma atividade. Eles podem representar qualquer coisa (pessoas, bicicletas, edifícios). Cada entidade possui um identificador globalmente exclusivo (endereço de e-mail, número de série). Um esquema de atividade é limitado a um tipo de entidade por vez.

Atividade

Uma atividade é uma ação específica realizada por uma entidade. Possui um nome único ('página visualizada'). Cada atividade geralmente representa um único conceito de negócio.

Modelo

Um esquema de atividade é implementado como uma única tabela com um formato de coluna fixo. A tabela geralmente é transformada diretamente das tabelas de origem e não deve ter outras dependências.

O fluxo de atividades é usado como um modelo de dados para dar suporte a todos os aplicativos de consulta e inteligência de negócios. Na modelagem dimensional, isso geralmente requer várias tabelas, potencialmente com várias camadas de dependências.

Estrutura da tabela

Estrutura da Tabela do Esquema de Atividade
Coluna Descrição Modelo
activity_id Identificador único para o registro de atividade fragmento
ts Timestamp em UTC para quando a atividade ocorreu carimbo de data / hora
cliente Identificador globalmente exclusivo para a entidade fragmento
atividade Nome da atividade (ex. 'Ordem_completo') fragmento
fonte Nome do sistema de origem para um ID de cliente anônimo fragmento
source_id Um ID de cliente anônimo específico para a fonte desta atividade fragmento
feature_1 Recurso 1 específico da atividade fragmento
feature_2 Recurso 2 específico da atividade fragmento
feature_3 Recurso 3 específico da atividade fragmento
impacto_de_ receita Receita ou custo associado à atividade flutuador
link URL associado à atividade fragmento
activity_occurrence Número de vezes que essa atividade aconteceu para o cliente. inteiro
activity_repeated_at O carimbo de data / hora da próxima instância desta atividade para o cliente. carimbo de data / hora

Benefícios

As abordagens de modelagem dimensional, como uma abordagem de esquema em estrela, podem ser fortemente desnormalizadas . Isso pode levar a várias camadas de dependências entre as tabelas.

Um esquema de atividade depende apenas dos dados de origem. Isso melhora a capacidade de manutenção, simplifica a linhagem e a governança dos dados e fornece uma fonte mais clara da verdade.

Os esquemas em estrela também têm problemas para gerenciar dimensões que mudam lentamente . Os dados que podem mudar com o tempo podem ser muito desafiadores para armazenar e consultar. Em uma abordagem de esquema de atividade, essas mudanças naturalmente se incorporam ao esquema. Não há necessidade de tabelas de histórico ou outras soluções alternativas - quaisquer alterações nos dados serão expressas como atividades e consultadas da mesma forma que tudo o mais.

Desvantagens

Um esquema de atividade pode ser mais difícil de consultar do que um esquema em estrela - os relacionamentos no tempo são menos intuitivos do que as junções de chave estrangeira.

Exemplo

Tabela de exemplo de fluxo de atividades
Tabela de exemplo de fluxo de atividades

Considere um banco de dados de vendas modelado usando uma abordagem de esquema de atividades. Ele usa duas atividades: completed_order e buyer_product . A tabela do esquema de atividades é denominada customer_stream.

Um pedido concluído representa uma única compra por um cliente. Um produto adquirido representa um produto específico pedido em uma única compra.

A tabela à direita mostra um exemplo de fluxo de atividades para as consultas abaixo

Valor total do pedido por mês

SELECT 
    COUNT(1) as num_orders, 
    SUM(revenue_impact) as total_amount, 
    DATE_TRUNC('month', ts) as month 
FROM customer_stream 
WHERE activity is 'completed_order' 
GROUP BY month

Pedidos por categoria de produto

SELECT 
    DATE_TRUNC('month', ts) as month 
    feature_1 as product_category, 
    feature_2 as quantity, 
    SUM(quantity) as num_products, 
    SUM(revenue_impact) as total_amount 
FROM customer_stream 
WHERE activity is 'purchased_product' 
GROUP BY month, product_category

Veja também

Referências

  1. ^ Dean, Alexander (2019). Fluxos de eventos em ação . Manning . p. 158. ISBN 9781617292347.
  2. ^ "ActivitySchema / spec" . GitHub . Página visitada em 2021-05-28 .
  3. ^ "ActivitySchema / spec" . GitHub . Página visitada em 2021-05-28 .

Links externos