Snowflake-gegevensobjecten

Introductie tot datamodellering in Snowflake

Nuno Rocha

Director of Engineering

Datawarehouse

Datawarehouse-weergave

Introductie tot datamodellering in Snowflake

Traditioneel vs. virtueel warehouse

Snowflake virtueel datawarehouse

Introductie tot datamodellering in Snowflake

Traditioneel vs. virtueel warehouse (1)

Snowflake virtueel datawarehouse vs. traditioneel datawarehouse

Introductie tot datamodellering in Snowflake

Traditioneel vs. virtueel warehouse (2)

  • CREATE WAREHOUSE: Snowflake-clausule die een virtuele compute-resource opzet voor dataverwerking.
  • USE WAREHOUSE: Snowflake-clausule die het actieve warehouse voor de sessie instelt.

Snowflake virtueel datawarehouse vs. traditioneel datawarehouse

Introductie tot datamodellering in Snowflake

Schema’s en tabellen

Database, schema’s, tabellen

Introductie tot datamodellering in Snowflake

Schema’s en tabellen (1)

Snowflake-interface

Introductie tot datamodellering in Snowflake

Schema’s en tabellen (2)

  • CREATE DATABASE: Snowflake-clausule om een nieuwe database te maken voor het organiseren van dataobjecten.
  • CREATE SCHEMA: Snowflake-clausule om een container te definiëren voor het groeperen van tabellen en views.
  • CREATE TABLE: Snowflake-opdracht om een nieuwe tabelstructuur en kolommen te maken binnen een schema.

Snowflake UI, elementen maken

Introductie tot datamodellering in Snowflake

Views

Weergavevisualisatie

  • VIEWS:
    • Werkt als een virtuele entiteit.
    • Voorkomt dataduplicatie.
    • Bespaart opslag en bewaakt consistentie.
    • Toont data dynamisch op basis van querylogica.
Introductie tot datamodellering in Snowflake

Views (1)

  • Voorbeeld-VIEW die urgente orders per klant samenvat
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;
Introductie tot datamodellering in Snowflake

Materialized views

Vooraf berekende view

  • MATERIALIZED VIEWS:
    • Slaat vooraf berekende resultaten op.
    • Verbetert queryprestaties door berekende uitkomsten te bewaren.
    • Verkort verwerkingstijd.
    • Houdt een ververst datasnapshot bij, altijd oproepbaar.
    • Verpakt complexe logica voor eenvoudiger datamodellering.
Introductie tot datamodellering in 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;
Introductie tot datamodellering in Snowflake

Terminologieoverzicht

  • Datawarehouse (traditioneel): Gecentraliseerd systeem voor opslag en analyse van grote hoeveelheden data op één server.
  • Virtueel datawarehouse (in Snowflake): Flexibele, schaalbare cloudcompute voor data­verwerking en -analyse.
  • Database: In Snowflake de hoofdcontainer voor data, met schema’s.
  • Schema: Verzameling logische structuren met tabellen, views, enz.
  • Tabel: Weergave van een entiteit; basisopslag in rijen en kolommen binnen schema’s.
  • View: Opgeslagen query die data virtueel toont zonder aparte opslag.
  • Materialized view: Opgeslagen versie van een view die het resultaat fysiek bewaart voor snellere toegang.
Introductie tot datamodellering in Snowflake

Functieoverzicht

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);
Introductie tot datamodellering in Snowflake

Sjabloon (gematerialiseerde) view

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;
Introductie tot datamodellering in Snowflake

Laten we oefenen!

Introductie tot datamodellering in Snowflake

Preparing Video For Download...