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
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
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
- ^ Dean, Alexander (2019). Fluxos de eventos em ação . Manning . p. 158. ISBN 9781617292347.
- ^ "ActivitySchema / spec" . GitHub . Página visitada em 2021-05-28 .
- ^ "ActivitySchema / spec" . GitHub . Página visitada em 2021-05-28 .