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.
Les 1: Wat is Snowflake?
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
-- 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
# 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:
- Hoeveel virtual warehouses heb je nodig?
- Welke size (XS, S, M, L, XL, XXL, XXXL)?
- Hoe organiseer je databases en schemas?
- Hoe implementeer je data sharing?
- 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?
Vraag 2: Wat is Zero-Copy Cloning in Snowflake?
Vraag 3: Hoe lang kun je Time Travel gebruiken in Snowflake?
Snowflake Carrière Kansen in Nederland
De vraag naar Snowflake experts groeit met 300% per jaar in Nederland. Gemiddelde salarissen (2024):
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 ScriptsSnowpark Python Examples
Complete Python notebooks voor data engineering en machine learning met Snowpark.
Download NotebooksSample Analytics Project
End-to-end analytics project met e-commerce data voor praktijkervaring.
Download ProjectNL Snowflake Community
Sluit je aan bij de Nederlandse Snowflake gebruikers groep (meetups, workshops).
Word LidJouw Snowflake Learning Journey
Na deze complete guide kun je door naar:
- Advanced Snowflake Performance Tuning - Query optimization, clustering keys, materialized views
- Snowflake for Data Science - Snowpark ML, time series analysis, geospatial data
- Snowflake Security & Governance - RBAC, data masking, tagging, compliance
- Snowflake Data Engineering - Streams, tasks, Snowpipe, orchestration
- Snowflake Ecosystem Integration - dbt, Airflow, Fivetran, Tableau
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.