Modelagem dimensional

Introdução à Modelagem de Dados no Snowflake

Nuno Rocha

Director of Engineering

Introdução ao modelo de dados dimensional

  • Modelagem dimensional: Técnica de estruturação de dados que separa medições (fatos) de detalhes descritivos (dimensões), otimizando relatórios e análise.

Modelo dimensional

Introdução à Modelagem de Dados no Snowflake

Introdução ao modelo de dados dimensional (1)

  • Dimensões: Entidades com dados categóricos em um modelo dimensional.
  • Fatos: Entidades que registram e quantificam atividades nas categorias das dimensões.

Modelo dimensional de faculdade

Introdução à Modelagem de Dados no Snowflake

Esquema de modelo dimensional em estrela

Modelo dimensional em estrela

Introdução à Modelagem de Dados no Snowflake

Esquema de modelo dimensional em estrela

  • Snowflake Data Warehouse: Serviço de armazenamento e análise na nuvem.
  • Esquema Snowflake: Forma de organizar dados em um modelo dimensional que inclui subdimensões.

Snowflake, data warehouse vs dimensional model

Introdução à Modelagem de Dados no Snowflake

Esquema de modelo dimensional em floco de neve

Modelo dimensional em floco de neve

Introdução à Modelagem de Dados no Snowflake

Definindo dimensões

  • Renomeie entidades para dim_EntityName para dar clareza, acompanhando as dimensões no modelo:
ALTER TABLE students RENAME TO dim_students;
ALTER TABLE classes RENAME TO dim_classes;
ALTER TABLE schools RENAME TO dim_schools;
Introdução à Modelagem de Dados no Snowflake

Definindo dimensão de data

  • Criando a tabela dim_date para armazenar datas-chave relacionadas a matrículas de estudantes:
CREATE OR REPLACE TABLE dim_date (
    date_id NUMBER(10,0) PRIMARY KEY,
    year NUMBER(4,0),
    semester VARCHAR(255)
);
Introdução à Modelagem de Dados no Snowflake

Definindo o fato de matrículas

  • Crie uma entidade de fatos contendo referências a todas as dimensões:
CREATE OR REPLACE TABLE fact_enrollments (
    enrollment_id NUMBER(10,0) PRIMARY KEY,
    student_id NUMBER(10,0),
    class_id NUMBER(10,0),
    date_id NUMBER(10,0),
    FOREIGN KEY (student_id) REFERENCES dim_students(student_id),
    FOREIGN KEY (class_id) REFERENCES dim_classes(class_id),
    FOREIGN KEY (date_id) REFERENCES dim_date(date_id)
);
Introdução à Modelagem de Dados no Snowflake

Recuperando dados das dimensões

Modelo de dados dimensional de faculdade

Introdução à Modelagem de Dados no Snowflake

Recuperando dados das dimensões (1)

SELECT name, 
    class_name
FROM fact_enrollments
    JOIN dim_students -- Juntando para obter nomes de estudantes
    ON fact_enrollments.student_id = dim_students.student_id
    JOIN dim_classes -- Juntando para obter nomes de turmas
    ON fact_enrollments.class_id = dim_classes.class_id
    JOIN dim_schools -- Juntando para filtrar pela escola 'Science'
    ON dim_classes.school_id = dim_schools.school_id
    JOIN dim_date -- Juntando para restringir ao ano de 2023
    ON fact_enrollments.date_id = dim_date.date_id
WHERE dim_schools.school_name = 'Science' 
    AND dim_date.year = 2023;
Introdução à Modelagem de Dados no Snowflake

Visão geral de termos e funções

  • Modelagem dimensional: Técnica de estruturação de dados que separa medições (fatos) de detalhes descritivos (dimensões), otimizando relatórios e análise
  • Dimensões: Entidades com dados categóricos em um modelo dimensional
  • Fatos: Entidades que registram e quantificam atividades nas categorias das dimensões
  • ALTER TABLE: Comando SQL para modificar a estrutura de uma entidade existente
  • RENAME TO: Comando SQL, usado com ALTER TABLE, para renomear uma entidade
  • JOIN ON: Cláusula SQL para combinar linhas de tabelas com base em uma coluna relacionada
  • WHERE: Cláusula SQL para filtrar registros por uma condição
  • AND: Operador lógico usado com WHERE para combinar várias condições
Introdução à Modelagem de Dados no Snowflake

Visão geral de funções

-- Modificando uma entidade
ALTER TABLE table_name 
RENAME TO new_name;
-- Consultando dados de entidades unidas e filtradas por condições específicas
SELECT 
    table_name.column_name,
    other_name.*
FROM table_name
    JOIN other_table 
    ON table_name.FK = other_table.PK
WHERE column_name  condition  value
    AND column_name  condition  value;
Introdução à Modelagem de Dados no Snowflake

Vamos praticar!

Introdução à Modelagem de Dados no Snowflake

Preparing Video For Download...