Snowflake Complete Guide

Leer Snowflake Data Cloud van beginner tot gevorderde - Snowpark, Virtual Warehouses, Data Sharing, Security en meer

Master Snowflake in 10 Uur

De complete beginnersgids voor Snowflake Data Cloud. Leer virtual warehouses, zero-copy cloning, time travel, data sharing en enterprise security.

10+ uur
Video Content
15
Praktijk Oefeningen
Certificaat
Na Voltooiing
100%
Gratis

Les 1: Wat is Snowflake?

50 minuten Beginner Inclusief Demo

Snowflake Data Cloud: De Cloud-Native Data Warehouse

Snowflake is een volledig beheerde cloud data platform dat gebouwd is voor de cloud. Het combineert een data warehouse, data lake, en data sharing platform in één.

Key Insight

Traditionele data warehouses zijn duur en moeilijk te schalen. Snowflake's architectuur scheidt storage en compute, waardoor je onafhankelijk kunt schalen en alleen betaalt voor wat je gebruikt.

Snowflake's Multi-Cluster Architecture

Cloud Storage

Gecentraliseerde data opslag (S3, Azure Blob, GCS)

Virtual Warehouses

Elastische compute clusters voor query processing

Cloud Services

Beheer, security, metadata en query optimization

Data Sharing

Live data delen zonder kopiëren

Snowflake vs Traditionele Data Warehouses

Feature Snowflake Traditioneel Data Warehouse On-premise Warehouse
Architectuur Storage & Compute gescheiden Gekoppelde storage/compute Fysieke servers
Schaling ✅ Instant scaling (elastic) ❌ Manueel schalen ❌ Hardware upgrade nodig
Kosten Model Pay-per-use (secunde) Capaciteit/licentie gebaseerd CapEx + onderhoud
Maintenance ✅ Volledig beheerd ❌ Gedeeltelijk beheerd ❌ Volledig zelf
Data Sharing ✅ Live sharing (zero-copy) ❌ ETL/Export nodig ❌ Complexe integratie
Time Travel ✅ Tot 90 dagen historie ❌ Backup nodig ❌ Complex backup

Pro Tip: Wanneer Snowflake Kiezen?

Kies Snowflake wanneer je: (1) Onvoorspelbare workloads hebt, (2) Met meerdere cloud providers werkt, (3) Data wilt delen met externe partijen, (4) Geen database administrators wilt beheren, (5) Snelle time-to-value nodig hebt.

SnowSQL Voorbeeld: Eerste Verbinding met Snowflake

SQL - snowflake_connect.sql

-- Installeer SnowSQL: https://docs.snowflake.com/en/user-guide/snowsql-install-config

-- Verbind met Snowflake
!connect account=yz12345.eu-west-1
user=jansmit
password=************
warehouse=COMPUTE_WH
database=DEMO_DB
schema=PUBLIC
role=SYSADMIN;

-- Maak je eerste database
CREATE OR REPLACE DATABASE SALES_DB 
COMMENT = 'Productie database voor sales data';

-- Maak een nieuw schema
CREATE OR REPLACE SCHEMA SALES_DB.RAW 
COMMENT = 'Raw landing zone voor bron systemen';

-- Maak je eerste tabel
CREATE OR REPLACE TABLE SALES_DB.RAW.CUSTOMERS (
    CUSTOMER_ID NUMBER(38,0) AUTOINCREMENT START 1 INCREMENT 1,
    FIRST_NAME VARCHAR(100),
    LAST_NAME VARCHAR(100),
    EMAIL VARCHAR(255) UNIQUE,
    PHONE VARCHAR(20),
    ADDRESS VARCHAR(500),
    CITY VARCHAR(100),
    COUNTRY VARCHAR(100),
    CREATED_AT TIMESTAMP_NTZ(9) DEFAULT CURRENT_TIMESTAMP(),
    UPDATED_AT TIMESTAMP_NTZ(9) DEFAULT CURRENT_TIMESTAMP()
) 
COMMENT = 'Klant master data tabel';

-- Maak een stage voor data loading
CREATE OR REPLACE STAGE SALES_DB.RAW.CUSTOMER_STAGE
    URL = 's3://your-bucket/customer-data/'
    STORAGE_INTEGRATION = YOUR_S3_INTEGRATION
    FILE_FORMAT = (TYPE = 'CSV' SKIP_HEADER = 1);

-- Load data van S3
COPY INTO SALES_DB.RAW.CUSTOMERS
FROM @SALES_DB.RAW.CUSTOMER_STAGE
PATTERN = '.*customers.*\.csv'
ON_ERROR = 'CONTINUE';

-- Query data met Time Travel
SELECT * FROM SALES_DB.RAW.CUSTOMERS
AT(OFFSET => -60*5); -- Data van 5 minuten geleden

-- Toon alle databases
SHOW DATABASES;

-- Toon kosten van vandaag
SELECT 
    WAREHOUSE_NAME,
    SUM(CREDITS_USED) AS TOTAL_CREDITS,
    SUM(CREDITS_USED_COMPUTE) AS COMPUTE_CREDITS,
    SUM(CREDITS_USED_CLOUD_SERVICES) AS SERVICES_CREDITS
FROM INFORMATION_SCHEMA.WAREHOUSE_METERING_HISTORY
WHERE START_TIME >= CURRENT_DATE()
GROUP BY WAREHOUSE_NAME
ORDER BY TOTAL_CREDITS DESC;
        

Python Voorbeeld: Snowflake Connector met Snowpark

Python - snowpark_demo.py

# Installeer: pip install snowflake-connector-python snowflake-snowpark-python

from snowflake.snowpark import Session
from snowflake.snowpark.functions import col, sum as sum_, avg, count
import pandas as pd
import json

def create_snowflake_session():
    """Maak een Snowflake Snowpark sessie"""
    connection_params = {
        "account": "yz12345.eu-west-1",
        "user": "DATAPARTNER_USER",
        "password": "your_secure_password",
        "role": "DATA_ENGINEER",
        "warehouse": "COMPUTE_WH",
        "database": "ANALYTICS_DB",
        "schema": "PRODUCTION"
    }
    
    session = Session.builder.configs(connection_params).create()
    print("✅ Snowflake Snowpark sessie succesvol aangemaakt")
    return session

def demonstrate_snowpark_features(session):
    """Demonstreer Snowpark functionaliteiten"""
    
    # 1. Laad data in Snowpark DataFrame (lazy evaluation)
    sales_df = session.table("SALES_DB.RAW.SALES_TRANSACTIONS")
    
    print("Aantal rijen in sales:", sales_df.count())
    print("Schema van sales:", sales_df.schema)
    
    # 2. Data transformaties
    daily_sales = sales_df \
        .group_by("TRANSACTION_DATE") \
        .agg(
            sum_("AMOUNT").alias("TOTAL_SALES"),
            avg("AMOUNT").alias("AVG_TRANSACTION"),
            count("*").alias("TRANSACTION_COUNT")
        ) \
        .filter(col("TOTAL_SALES") > 10000) \
        .sort(col("TRANSACTION_DATE").desc())
    
    # 3. Toon SQL die gegenereerd wordt
    print("Generated SQL:")
    print(daily_sales.queries['queries'][0])
    
    # 4. Materialiseer de resultaten
    results = daily_sales.limit(10).collect()
    print("\nTop 10 verkoopdagen:")
    for row in results:
        print(f"{row.TRANSACTION_DATE}: €{row.TOTAL_SALES:,.2f}")
    
    # 5. Pandas integratie
    pandas_df = daily_sales.to_pandas()
    print(f"\nPandas DataFrame shape: {pandas_df.shape}")
    
    return pandas_df

def create_udf_for_calculations(session):
    """Maak een User Defined Function in Snowflake"""
    
    # Register een Python UDF
    @udf(name="calculate_discount", 
         input_types=[FloatType(), FloatType()], 
         return_type=FloatType(),
         is_permanent=True,
         stage_location="@PYTHON_UDFS",
         packages=["pandas"])
    def calculate_discount(price, discount_percentage):
        """Bereken de prijs na korting"""
        if discount_percentage > 50:
            discount_percentage = 50  # Max 50% korting
        return price * (1 - discount_percentage/100)
    
    print("✅ UDF succesvol geregistreerd in Snowflake")
    
    # Gebruik de UDF in een query
    result = session.sql("""
        SELECT 
            PRODUCT_ID,
            PRICE,
            DISCOUNT_PERCENTAGE,
            calculate_discount(PRICE, DISCOUNT_PERCENTAGE) as FINAL_PRICE
        FROM SALES_DB.RAW.PRODUCTS
        WHERE DISCOUNT_PERCENTAGE > 0
        LIMIT 10
    """).collect()
    
    return result

if __name__ == "__main__":
    # Maak Snowpark sessie
    session = create_snowflake_session()
    
    try:
        # Demo Snowpark features
        sales_data = demonstrate_snowpark_features(session)
        
        # Maak en gebruik UDF
        udf_results = create_udf_for_calculations(session)
        
        # Zero-copy cloning demo
        print("\n--- Zero-Copy Cloning Demo ---")
        session.sql("CREATE OR REPLACE DATABASE SALES_DB_CLONE CLONE SALES_DB").collect()
        print("Database succesvol gekloond zonder extra storage kosten!")
        
        # Time Travel demo
        print("\n--- Time Travel Demo ---")
        history = session.sql("""
            SELECT 
                MIN(CREATED) AS OLDEST_DATA,
                MAX(CREATED) AS NEWEST_DATA
            FROM SALES_DB.RAW.SALES_TRANSACTIONS
            AT(OFFSET => -3600) -- 1 uur geleden
        """).collect()
        print(f"Data van 1 uur geleden: {history[0]}")
        
    finally:
        session.close()
        print("\n✅ Sessie gesloten")
        

Oefening: Snowflake Architecture

Scenario: Je werkt voor een Nederlandse e-commerce bedrijf met:

  • 10TB aan historische order data in AWS S3
  • Real-time clickstream data via Kafka
  • Analytics team van 15 personen
  • Data science team die Python gebruikt
  • Noodzaak om data te delen met externe logistics partners

Opdracht: Ontwerp een Snowflake architectuur voor dit bedrijf:

  1. Hoeveel virtual warehouses heb je nodig?
  2. Welke size (XS, S, M, L, XL, XXL, XXXL)?
  3. Hoe organiseer je databases en schemas?
  4. Hoe implementeer je data sharing?
  5. Welke security features gebruik je?

Real-World Case: Bol.com

Uitdaging: Bol.com had data verspreid over meerdere on-premise data warehouses. Black Friday pieken zorgden voor performance issues.

Oplossing met Snowflake:

  • Geconsolideerde data in Snowflake Data Cloud
  • Auto-suspendeer warehouses tijdens daluren
  • Multi-cluster warehouses voor concurrente queries
  • Data Sharing met leveranciers voor real-time inventory
  • Snowpark voor Python/R machine learning

Resultaat: 60% kostenbesparing tov on-premise, 10x snellere queries tijdens piekmomenten, real-time data sharing met 200+ leveranciers.

Quick Knowledge Check

Vraag 1: Wat is het belangrijkste voordeel van Snowflake's architectuur?

A. Scheiding van storage en compute voor onafhankelijk schalen
B. Het werkt alleen op AWS
C. Het heeft geen SQL support nodig
D. Het is gratis voor kleine datasets

Vraag 2: Wat is Zero-Copy Cloning in Snowflake?

A. Het kopieert data naar een nieuwe locatie
B. Het maakt een instant clone zonder extra storage kosten
C. Het verwijdert oude data automatisch
D. Het comprimeert data zonder verlies

Vraag 3: Hoe lang kun je Time Travel gebruiken in Snowflake?

A. 7 dagen (standard)
B. Tot 90 dagen (afhankelijk van edition)
C. 30 dagen voor alle editions
D. Alleen 24 uur

Snowflake Carrière Kansen in Nederland

De vraag naar Snowflake experts groeit met 300% per jaar in Nederland. Gemiddelde salarissen (2024):

€50K - €65K
Junior Snowflake Engineer
€65K - €90K
Snowflake Data Engineer
€80K - €110K+
Senior Snowflake Architect
€95K - €130K+
Lead Cloud Data Engineer

Tip: Snowflake certificeringen verhogen je salaris met 20-30%. De SnowPro Core certificering is de beste start.

Snowflake Certificering Pad

Na het voltooien van deze cursus ben je klaar voor:

SnowPro Core

Fundamentele kennis van Snowflake Data Cloud

SnowPro Advanced: Architect

Geavanceerde architectuur en implementatie

SnowPro Advanced: Data Engineer

Data engineering en pipelines op Snowflake

SnowPro Advanced: Administrator

Security, governance en beheer

Snowflake Learning Resources

SQL Scripts & Templates

Starter scripts voor database setup, security, performance tuning en monitoring.

Download Scripts

Snowpark Python Examples

Complete Python notebooks voor data engineering en machine learning met Snowpark.

Download Notebooks

Sample Analytics Project

End-to-end analytics project met e-commerce data voor praktijkervaring.

Download Project

NL Snowflake Community

Sluit je aan bij de Nederlandse Snowflake gebruikers groep (meetups, workshops).

Word Lid

Jouw Snowflake Learning Journey

Na deze complete guide kun je door naar:

Actuele Snowflake Vacatures

Bekijk onze Snowflake vacatures voor de nieuwste kansen bij top bedrijven in Nederland zoals ING, ABN AMRO, KLM, en Philips.

Snowflake vs Andere Cloud Data Platforms

Platform Sterke Punten Zwakke Punten Best Voor Prijzen (Nederland)
Snowflake Zero-copy cloning, Data Sharing, Multi-cloud Kostbaar voor kleine workloads Enterprise, Data Sharing, Multi-cloud €2-€4 per credit
Databricks Machine Learning, Delta Lake, Spark Complexer voor pure SQL Data Science, ML, Streaming €0.40-€0.70 per DBU
Google BigQuery Serverless, Machine Learning, Google Cloud Vendor lock-in, minder multi-cloud Google Cloud ecosystem €4.80 per TB (on-demand)
Azure Synapse Azure integratie, T-SQL compatible Minder mature data sharing Microsoft ecosystem €1.20 per hour (DWU100)
Amazon Redshift AWS integratie, goed voor grote datasets Minder flexibel schalen AWS native workloads €0.85 per hour (dc2.large)

Let op: prijzen zijn indicatief en kunnen variëren per regio en gebruik.