Objetos de dados do Snowflake

Introdução à Modelagem de Dados no Snowflake

Nuno Rocha

Director of Engineering

Data warehouse

Representação de data warehouse

Introdução à Modelagem de Dados no Snowflake

Tradicional vs. virtual warehouse

Snowflake: data warehouse virtual

Introdução à Modelagem de Dados no Snowflake

Tradicional vs. virtual warehouse (1)

Snowflake: data warehouse virtual vs. tradicional

Introdução à Modelagem de Dados no Snowflake

Tradicional vs. virtual warehouse (2)

  • CREATE WAREHOUSE: cláusula do Snowflake que cria um recurso de computação virtual para processamento de dados.
  • USE WAREHOUSE: cláusula do Snowflake que define o data warehouse ativo para a sessão atual.

Snowflake: data warehouse virtual vs. tradicional

Introdução à Modelagem de Dados no Snowflake

Schemas e tabelas

Banco de dados, Schemas, Tabelas

Introdução à Modelagem de Dados no Snowflake

Schemas e tabelas (1)

UI do Snowflake

Introdução à Modelagem de Dados no Snowflake

Schemas e tabelas (2)

  • CREATE DATABASE: cláusula do Snowflake para criar um novo banco de dados e organizar objetos de dados.
  • CREATE SCHEMA: cláusula do Snowflake para definir um contêiner que agrupa tabelas e views.
  • CREATE TABLE: comando do Snowflake para criar uma nova estrutura de tabela e colunas de dados em um schema.

UI do Snowflake, criando elementos

Introdução à Modelagem de Dados no Snowflake

Views

Visualização de view

  • VIEWS:
    • Funcionam como entidade virtual.
    • Evitam duplicidade de dados.
    • Economizam espaço e garantem consistência.
    • Apresentam dados dinamicamente com base na consulta.
Introdução à Modelagem de Dados no Snowflake

Views (1)

  • Exemplo de VIEW que resume pedidos urgentes de clientes
CREATE OR REPLACE VIEW customer_urgent_orders AS
SELECT c.c_name AS customer_name, 
    COUNT(DISTINCT o_orderkey) AS order_count,
    SUM(o_totalprice) AS total_price
FROM customer AS c
    JOIN orders AS o 
    ON c.c_custkey = o.o_custkey
WHERE o.o_orderpriority = '1-URGENT'
GROUP BY c.c_name;
ORDER BY total_price DESC;
Introdução à Modelagem de Dados no Snowflake

Materialized views

View pré-calculada

  • MATERIALIZED VIEWS:
    • Armazenam resultados pré-calculados.
    • Melhoram o desempenho ao guardar operações computadas.
    • Reduzem o tempo de processamento de consultas.
    • Mantêm um snapshot atualizado para acesso a qualquer momento.
    • Encapsulam operações complexas para modelagem de dados mais simples.
Introdução à Modelagem de Dados no Snowflake

Materialized views (1)

CREATE OR REPLACE MATERIALIZED VIEW top_customers AS
SELECT o.o_custkey AS customer_id,
    c.c_name AS customer_name,
    CASE 
        WHEN SUM(o.o_totalprice) > 5000000 THEN 'Over Price'
        WHEN SUM(o.o_totalprice) > 3000000 THEN 'Top Price'
        WHEN SUM(o.o_totalprice) > 2000000 THEN 'Average Price'
        ELSE 'Review Price'
    END AS total_price
FROM customer AS c
    JOIN orders AS o ON c.c_custkey = o.o_custkey
GROUP BY o.o_custkey, c.c_name
HAVING total_price > 2000000;
Introdução à Modelagem de Dados no Snowflake

Visão geral da terminologia

  • Data warehouse (tradicional): sistema centralizado para armazenar e analisar grandes volumes de dados em um único servidor.
  • Virtual data warehouse (no Snowflake): conjunto flexível e escalável de recursos de computação em nuvem para processar e analisar dados.
  • Database: no Snowflake, é o contêiner principal de dados, que abriga schemas.
  • Schema: coleção de estruturas lógicas que contêm tabelas, views etc.
  • Table: representação de uma entidade no banco; estrutura fundamental de armazenamento, em linhas e colunas dentro de schemas.
  • View: consulta salva que apresenta dados como entidade virtual sem armazená-los separadamente.
  • Materialized View: versão armazenada de uma view que salva fisicamente o resultado da consulta para acesso mais rápido.
Introdução à Modelagem de Dados no Snowflake

Visão geral de funções

CREATE OR REPLACE WAREHOUSE data_warehouse_name;
USE WAREHOUSE data_warehouse_name;
CREATE OR REPLACE DATABASE database_name;
CREATE OR REPLACE SCHEMA schema_name;
CREATE OR REPLACE TABLE table_name(
    column_name datatype,
    other_columns datatype);
Introdução à Modelagem de Dados no Snowflake

Modelo de view (materializada) exemplar

CREATE OR REPLACE VIEW view_name AS
SELECT column_name, 
    SUM(column_name2) AS sum_alias,
    CASE WHEN column_name5   condition   value THEN assigned_value
        ELSE another_assigned_value
    END AS case_alias
FROM table_name AS table_alias
    JOIN other_table AS other_alias ON table_alias.FK = other_alias.PK
    LEFT JOIN another_table AS another_alias ON table_alias.FK = other_alias.PK
GROUP BY column_name;
Introdução à Modelagem de Dados no Snowflake

Vamos praticar!

Introdução à Modelagem de Dados no Snowflake

Preparing Video For Download...