Tabellen maken in Snowflake: typen, voorbeelden & best practices
Leer hoe je verschillende soorten tabellen in Snowflake maakt, waaronder permanente, tijdelijke, externe en dynamische tabellen. Inclusief stapsgewijze voorbeelden en best practices.
Snowflake is een krachtig, cloudgebaseerd datawarehouseplatform dat organisaties helpt hun data efficiënt op te slaan, te beheren en te analyseren. In tegenstelling tot traditionele datawarehouses die complexe hardware vereisen, draait Snowflake volledig in de cloud, waardoor bedrijven hun data-operaties naar behoefte eenvoudiger kunnen opschalen.
Tabellen maken in Snowflake is een essentiële vaardigheid en vormt de basis van databeheer. Tabellen zijn de plek waar je gestructureerde data bewaart, zodat je queries kunt uitvoeren, rapporten kunt genereren en waardevolle inzichten uit je informatie kunt halen. Of je nu met klantdata, verkoopcijfers of analytische resultaten werkt: begrijpen hoe je tabellen maakt en beheert in Snowflake is cruciaal.
In deze tutorial leer je alles wat je moet weten over het maken van tabellen in Snowflake. We behandelen de verschillende typen tabellen, laten stapsgewijze voorbeelden zien en delen best practices voor tabelontwerp. Aan het eind kun je met vertrouwen het juiste tabeltype kiezen voor jouw behoeften en tabellen maken volgens industriestandaarden voor prestaties en onderhoudbaarheid.
Inzicht in tabeltypen in Snowflake
Voordat we in codevoorbeelden duiken over hoe je tabellen maakt, bekijken we de verschillende tabeltypen in Snowflake. Elk type heeft een eigen doel en specifieke eigenschappen op het gebied van datapersistentie, toegankelijkheid en opslaglocatie.
Permanente tabellen
Permanente tabellen zijn het standaard tabeltype in Snowflake. Ze blijven bestaan totdat ze expliciet worden verwijderd en worden opgeslagen in de interne opslag van Snowflake. Deze tabellen zijn ideaal voor het opslaan van kernbedrijfsdata die je langdurig wilt bewaren en in meerdere sessies wilt kunnen benaderen. De data in permanente tabellen blijft intact tussen sessies en is toegankelijk voor elke geautoriseerde gebruiker.
Tijdelijke tabellen
Tijdelijke tabellen zijn sessiespecifieke tabellen die automatisch worden verwijderd wanneer je huidige sessie eindigt. Ze fungeren als werkruimtetabellen voor tussentijdse verwerkingsstappen en helpen complexe datatransformaties te organiseren zonder je permanente opslag te vervuilen. De data in tijdelijke tabellen is alleen zichtbaar voor de sessie die ze heeft aangemaakt en wordt automatisch opgeruimd wanneer de sessie sluit.
Externe tabellen
Externe tabellen bieden een manier om data te bevragen die buiten de opslag van Snowflake staat. Ze fungeren als een metadatalayer die verwijst naar data op externe opslaglocaties zoals AWS S3 of Azure Blob Storage. In plaats van de data in te laden, maken externe tabellen er een verwijzing naar, zodat je externe data direct kunt bevragen. Deze aanpak is vooral waardevol wanneer je met data werkt die in de bronsystemen moet blijven of die vaak wordt bijgewerkt vanuit externe systemen.
Dynamische tabellen
Dynamische tabellen zijn een krachtige functie in Snowflake die automatisch up-to-date resultaten van een query bijhouden. Ze werken als gematerialiseerde views die automatisch verversen op basis van wijzigingen in de onderliggende brontabellen. Wanneer je een dynamische tabel maakt, definieer je die met een SELECT-statement, en Snowflake beheert automatisch het verversingsproces zodat de data actueel blijft.
Dynamische tabellen zijn vooral handig voor:
Realtime dashboards bouwen die verse data nodig hebben zonder handmatige refresh
Geaggregeerde of getransformeerde versies van brondata bijhouden die automatisch worden bijgewerkt
Afhankelijke datamodellen creëren waarbij downstream-tabellen upstream-wijzigingen moeten weerspiegelen
Queryprestaties optimaliseren door complexe transformaties vooraf te berekenen
Belangrijke kenmerken van dynamische tabellen zijn onder meer:
Configureerbare verversingsintervallen (van 1 minuut tot 24 uur)
Automatische afhankelijkheidsopvolging van brontabellen
Instellingen voor target-lag om de actualiteit te sturen
Incrementele verwerking om compute-kosten te minimaliseren
Ingebouwde monitoring- en optimalisatiecapaciteiten
Elk tabeltype heeft een eigen rol in je data-architectuur. Permanente tabellen vormen de basis van je datawarehouse, tijdelijke tabellen faciliteren datapijplijnen, externe tabellen maken integratie met externe bronnen mogelijk, en dynamische tabellen zorgen voor geautomatiseerde, realtime datatransformaties.
Snowflake-tabellen vergelijken
In de onderstaande tabel hebben we de verschillende typen Snowflake-tabellen samengevat in een beknopte, snelle referentiegids:
Tabeltype
Persistentie
Zichtbaarheid
Het beste voor
Permanent
Tot verwijdering
Elke sessie
Kernbedrijfsdata
Tijdelijk
Alleen sessie
Zelfde sessie
Tussentijdse transformaties
Extern
Externe opslag
Elke sessie
Externe data bevragen (bijv. S3)
Dynamisch
Automatisch verversend
Elke sessie
Realtime analytics
Tabellen maken: Snowflake instellen
Voordat je de voorbeelden in deze tutorial uitvoert, heb je toegang tot een Snowflake-omgeving nodig. Dit zijn verschillende manieren om verbinding te maken en Snowflake-commando's uit te voeren:
1. Snowflake-webinterface (Snowsight)
De eenvoudigste manier om te beginnen is via de webinterface van Snowflake:
Je vindt je Snowflake-accountgegevens op de volgende plekken:
Account-URL: Kijk in je welkomstmail of accountinstellingen
Gebruikersnaam: Opgegeven tijdens het aanmaken van het account
Database: Aangemaakt of toegewezen door je admin
Warehouse: Aangemaakt of toegewezen door je admin
Deel of commit deze inloggegevens om veiligheidsredenen nooit. Sla ze veilig op in omgevingsvariabelen of een configuratiebestand.
3. Python-verbinding
Als je Python gebruikt, kun je de bibliotheek snowflake-connector-python gebruiken:
import snowflake.connector
conn = snowflake.connector.connect(
user='your_username',
password='your_password',
account='your_account',
warehouse='your_warehouse',
database='your_database',
schema='your_schema')
cur = conn.cursor()
cur.execute("SELECT current_version()")Mogelijk gemaakt door
Belangrijke beveiligingsopmerking:
Sla inloggegevens nooit direct in je code op
Gebruik omgevingsvariabelen of veilige secret management
Overweeg voor productie keypair-authenticatie
Volg de beveiligingsrichtlijnen van je organisatie
Nu de setup klaar is, gaan we tabellen maken!
Tabellen maken in Snowflake: stapsgewijze voorbeelden
Voorbeeld 1: Een eenvoudige Snowflake-tabel maken
Laten we een tabel maken om klantinformatie op te slaan. Dit voorbeeld laat basis-tabelcreatie zien met verschillende datatypes en constraints.
-- Create a permanent table for customer dataCREATEORREPLACETABLE customers (
customer_id INTEGERPRIMARYKEY,
first_name VARCHAR(50)NOTNULL,
last_name VARCHAR(50)NOTNULL,
email VARCHAR(100)UNIQUE,
date_of_birth DATE,
created_at TIMESTAMP_NTZ DEFAULTCURRENT_TIMESTAMP());Mogelijk gemaakt door
Belangrijke punten bij dit voorbeeld:
CREATE OR REPLACE TABLE - Maakt een nieuwe tabel of vervangt deze als hij al bestaat
PRIMARY KEY - Zorgt voor unieke identificatie van elk record
NOT NULL - Voorkomt null-waarden in vereiste velden
UNIQUE - Zorgt dat e-mailadressen niet dubbel voorkomen
TIMESTAMP_NTZ - Timestamp zonder tijdzone
DEFAULT - Stelt automatisch het aanmaaktijdstip in
Voorbeeld 2: Een tijdelijke tabel maken
Tijdelijke tabellen zijn perfect voor tussentijdse dataverwerking. Hier is een voorbeeld dat een tijdelijke tabel maakt voor analyse van klantorders:
-- Create a temporary table for order analysisCREATEORREPLACETEMPORARYTABLE temp_order_analysis (
order_date DATE,
total_orders INTEGER,
total_revenue DECIMAL(18,2))ASSELECT
DATE_TRUNC('day', order_date)as order_date,COUNT(*)as total_orders,SUM(order_amount)as total_revenue
FROM orders
GROUPBY1;Mogelijk gemaakt door
Belangrijke punten over tijdelijke tabellen:
Het sleutelwoord TEMPORARY geeft aan dat deze tabel alleen binnen de huidige sessie bestaat. Dit betekent dat andere gebruikers deze tabel niet kunnen zien of benaderen.
Met CREATE TABLE AS (CTAS) kun je in één stap een tabel creëren en vullen door de tabeldefinitie te combineren met een SELECT-statement.
De tijdelijke tabel wordt automatisch verwijderd wanneer je sessie eindigt, waardoor de database schoon blijft zonder handmatige opschoning.
Tijdelijke tabellen zijn handig voor het opslaan van tussenresultaten tijdens complexe datatransformaties of analysestromen.
Voorbeeld 3: Een externe tabel maken in Snowflake
Dit voorbeeld laat zien hoe je een externe tabel maakt die data leest uit bestanden die in een cloudopslagbucket zijn opgeslagen:
De eerste instructie definieert een bestandsformaatspecificatie die Snowflake vertelt hoe externe CSV-bestanden te parsen, inclusief de scheidingsteken, headerafhandeling en weergaven van NULL-waarden.
De tweede instructie maakt een stage-object dat een verbinding legt met externe cloudopslag (in dit geval S3) met de opgegeven inloggegevens. Deze stage fungeert als referentiepunt voor toegang tot de externe databestanden.
De derde instructie maakt de externe tabel zelf, met kolomdefinities met AS-clausules om de ruwe tekenreeksdata uit de CSV expliciet te casten naar de juiste Snowflake-datatypen. De WITH LOCATION-clausule wijst naar het specifieke pad binnen de stage waar de bestanden zich bevinden.
De parameter PATTERN filtert met behulp van regex welke bestanden moeten worden opgenomen, zodat alleen CSV-bestanden worden verwerkt.
Vereisten om deze query voor het aanmaken van een externe tabel uit te voeren:
1. Toegang tot een Snowflake-account met rechten om:
Bestandsformaten te maken
Stages te maken
Externe tabellen te maken
2. Geldige AWS-inloggegevens (AWS_KEY_ID en AWS_SECRET_KEY) met rechten om:
Uit de S3-bucket te lezen
Objecten in de bucket te lijstten
3. Eisen aan brondata:
CSV-bestanden opgeslagen in een S3-bucket
Bestanden volgen een consistent formaat met vier kolommen
Kolomdata komt overeen met gespecificeerde typen:
customer_id als string
purchase_date als date
product_id als string
amount als decimal
4. Netwerkconnectiviteit:
Netwerktoegang tot AWS S3
Juiste security group- en firewallinstellingen
5. Compute-resources:
Actief warehouse met voldoende rekenkracht
Voldoende gebruikerscredits/-quota
Voorbeeld 4: Een dynamische tabel maken
Dit voorbeeld maakt een dynamische tabel die een actuele samenvatting van verkoopdata bijhoudt:
-- Create a dynamic table for real-time sales analyticsCREATEORREPLACE DYNAMIC TABLE daily_sales_summary
TARGET_LAG ='20 minutes'
WAREHOUSE ='COMPUTE_WH'ASSELECT
DATE_TRUNC('day', sale_timestamp)as sale_date,
product_category,SUM(sale_amount)as total_sales,COUNT(DISTINCT customer_id)as unique_customers
FROM sales_transactions
GROUPBY1,2;Mogelijk gemaakt door
De parameter TARGET_LAG van '20 minutes' definieert de maximaal toegestane vertraging tussen updates in de brontabel en het moment waarop die wijzigingen in de dynamische tabel zichtbaar worden. Dit borgt de actualiteit binnen dat tijdsvenster.
De parameter WAREHOUSE specificeert welke compute-resources (in dit geval COMPUTE_WH) periodiek worden gebruikt om de dynamische tabel te verversen. Dit warehouse moet voldoende capaciteit hebben om de verversingen aan te kunnen.
De dynamische tabel werkt zijn inhoud automatisch bij wanneer de onderliggende tabel sales_transactions verandert, zonder handmatige tussenkomst. Dit biedt mogelijkheden voor near-realtime analytics.
Door vooraf geaggregeerde dagelijkse verkoopsamenvattingen per productcategorie bij te houden, maakt de dynamische tabel snellere query's mogelijk dan wanneer je deze statistieken on demand uit de ruwe transactiedata zou berekenen. Dit verbetert de queryprestaties voor rapportage- en analytics-doeleinden.
Elk van deze voorbeelden laat verschillende scenario's voor tabelcreatie zien die je in praktijktoepassingen kunt tegenkomen. Pas kolomnamen, datatypes en andere parameters altijd aan jouw specifieke behoeften aan.
Best practices voor het maken van tabellen in Snowflake
Laten we enkele best practices doornemen die je kunt volgen bij het maken van tabellen in Snowflake om onderhoudbaarheid, prestaties en datakwaliteit te waarborgen.
1. Naamgevingsconventies
Gebruik altijd duidelijke, consistente namen voor je tabellen en kolommen:
-- Good naming examplesCREATETABLE customer_orders (
order_id INTEGER,
customer_email VARCHAR,
order_date DATE);-- Bad naming examplesCREATETABLE Orders123 (
ID INTEGER,
email VARCHAR,
dt DATE);Mogelijk gemaakt door
Tips voor naamgeving:
Gebruik kleine letters en underscores (snake_case)
Vermijd spaties en speciale tekens
Maak namen beschrijvend maar niet te lang
Gebruik enkelvoud voor tabelnamen (customer in plaats van customers)
Voeg prefixen toe voor verschillende omgevingen (dev_, test_, prod_)
2. Kolomdatatypen
Kies het juiste datatype om opslag te besparen en prestaties te verbeteren:
-- Good data type choicesCREATETABLE products (
product_id INTEGER,
price DECIMAL(10,2),-- For money values
name VARCHAR(100),-- Set a reasonable limit
description TEXT,-- For very long text
is_active BOOLEAN-- Instead of VARCHAR or INTEGER);Mogelijk gemaakt door
Veelgebruikte datatypen:
NUMBER/INTEGER: Voor gehele getallen
DECIMAL/NUMERIC: Voor precieze decimale getallen (vooral geld)
VARCHAR: Voor tekst met een bekende maximumlengte
TEXT: Voor tekst met onbeperkte lengte
TIMESTAMP_NTZ: Voor datum en tijd (zonder tijdzone)
BOOLEAN: Voor waar/onwaar-waarden
3. Clustering keys gebruiken
Voeg clustering keys toe om queryprestaties te verbeteren:
CREATETABLE sales (
sale_date DATE,
store_id INTEGER,
product_id INTEGER,
amount DECIMAL(10,2))
CLUSTER BY(sale_date, store_id);Mogelijk gemaakt door
Wanneer clustering gebruiken:
Voor grote tabellen (meer dan 1 miljoen rijen)
Op kolommen waarop je vaak filtert of joinet
Meestal datumkolommen plus 1–2 andere kolommen
Cluster niet op kolommen met te veel unieke waarden
4. Tabelconstraints toevoegen
Gebruik constraints om je data schoon te houden:
CREATETABLE users (
user_id INTEGERPRIMARYKEY,-- Ensures unique IDs
email VARCHAR(255)UNIQUE,-- No duplicate emails
username VARCHAR(50)NOTNULL,-- Must have a value
age INTEGERCHECK(age >=18)-- Must be 18 or older);Mogelijk gemaakt door
Belangrijke constraints:
PRIMARY KEY: Voor unieke identifiers
FOREIGN KEY: Voor het koppelen van tabellen
NOT NULL: Voor verplichte velden
UNIQUE: Voor velden die geen duplicaten mogen hebben
CHECK: Voor eenvoudige datavalidatie
5. Veelgemaakte fouten om te vermijden
Doe dit niet:
-- Bad practice: No primary keyCREATETABLE orders (dateVARCHAR,-- Wrong data type for dates
amount VARCHAR(10),-- Wrong data type for numbersstatustext-- Inconsistent case with other columns);Mogelijk gemaakt door
Doe dit in plaats daarvan:
-- Good practiceCREATETABLE orders (
order_id INTEGERPRIMARYKEY,
order_date DATE,
amount DECIMAL(10,2),statusVARCHAR(20));Mogelijk gemaakt door
De verbeterde versie borgt dataintegriteit met een primary key, gebruikt de juiste datatypen voor datums en getallen om efficiënt te kunnen filteren en rekenen, en houdt kolomdefinities consistent voor betere leesbaarheid en compatibiliteit.
6. Prestatie-tips
Het optimaliseren van tabelprestaties in Snowflake kan de querysnelheid aanzienlijk verbeteren en opslagkosten verlagen. Volg deze best practices om je tabellen efficiënt en schaalbaar te houden.
Maak kleinere tabellen in plaats van één enorme tabel
Voeg kolombeschrijvingen toe met COMMENT
Stel automatische regels voor dataclean-up in
Test je tabelontwerp met echte data
Monitor tabelgebruik en stel bij waar nodig
7. Beveiligingsbest practices
Goede beveiligingsmaatregelen zijn essentieel om gevoelige data te beschermen en toegang te beheersen. Implementeer deze best practices om je Snowflake-omgeving te beveiligen tegen ongeautoriseerde toegang en datalekken.
Stel altijd de juiste toegangsrechten in
Gebruik row-level security waar nodig
Versleutel gevoelige kolommen
Houd bij wie waartoe toegang heeft
Evalueer toegangspatronen regelmatig
Onthoud: een goed ontworpen tabel maakt je werk later makkelijker. Neem de tijd om je tabelstructuur te plannen voordat je deze maakt!
Conclusie
In deze tutorial hebben we de basis behandeld van het maken van tabellen in Snowflake, inclusief:
Verschillende typen tabellen (permanent, tijdelijk, extern en dynamisch)
Stapsgewijze voorbeelden voor elk type
Best practices voor tabelontwerp en -beheer
Veelvoorkomende valkuilen om te vermijden
Deze kennis vormt de basis voor het bouwen van efficiënte en schaalbare datasolutions in Snowflake.
Volgende stappen
Wil je je Snowflake-expertise verdiepen? Bekijk dan deze waardevolle bronnen:
Vergeet niet: de beste manier om te leren is door te doen. Begin met tabellen maken, experimenteer met verschillende typen en bouw echte projecten. Als je uitdagingen tegenkomt, raadpleeg dan deze bronnen en blijf nieuwe functies van Snowflake verkennen.
Snowflake Create Table FAQs
Wat zijn de verschillende typen tabellen in Snowflake?⌄
Snowflake ondersteunt vier hoofdtypen tabellen: permanente tabellen voor langdurige opslag, tijdelijke tabellen voor sessiespecifiek gebruik, externe tabellen voor het bevragen van externe databronnen en dynamische tabellen voor het automatisch bijhouden van queryresultaten.
Hoe maak ik een basistabel in Snowflake?⌄
Gebruik het commando CREATE TABLE met je gewenste schema. Bijvoorbeeld: "CREATE TABLE customers (customer_id INTEGER PRIMARY KEY, first_name VARCHAR(50), last_name VARCHAR(50))". Voeg passende datatypen en constraints toe.
Wat is een dynamische tabel in Snowflake en wanneer gebruik ik die?⌄
Dynamische tabellen houden automatisch up-to-date resultaten van een query bij, vergelijkbaar met gematerialiseerde views. Ze zijn ideaal voor realtime dashboards, geautomatiseerde datatransformaties en het bijhouden van geaggregeerde data die vaak moet worden bijgewerkt.
Wat zijn de best practices voor het benoemen van tabellen in Snowflake?⌄
Gebruik kleine letters met underscores (snake_case), vermijd spaties en speciale tekens, maak namen beschrijvend maar beknopt, gebruik enkelvoud voor tabelnamen en overweeg omgevingsprefixen (dev_, test_, prod_).
Hoe kan ik de tabelprestaties in Snowflake verbeteren?⌄
Verbeter prestaties door geschikte clustering keys te gebruiken, de juiste datatypen te kiezen, de juiste constraints in te stellen, kleinere gefocuste tabellen te maken in plaats van grote, en het gebruikspatroon van tabellen regelmatig te monitoren.
Ik ben een contentmaker op het gebied van data science met meer dan 2 jaar ervaring en een van de grootste achterbannen op Medium. Ik schrijf graag uitgebreide artikelen over AI en ML met een vleugje sarcastische stijl, want je moet toch íets doen om ze wat minder saai te maken. Ik heb meer dan 130 artikelen en een DataCamp-cursus gemaakt, en er is nog een nieuwe in de maak. Mijn content is door meer dan 5 miljoen paar ogen gezien, van wie 20k volgers werden op zowel Medium als LinkedIn.
Snowflake is een krachtig, cloudgebaseerd datawarehouseplatform dat organisaties helpt hun data efficiënt op te slaan, te beheren en te analyseren. In tegenstelling tot traditionele datawarehouses die complexe hardware vereisen, draait Snowflake volledig in de cloud, waardoor bedrijven hun data-operaties naar behoefte eenvoudiger kunnen opschalen.
Tabellen maken in Snowflake is een essentiële vaardigheid en vormt de basis van databeheer. Tabellen zijn de plek waar je gestructureerde data bewaart, zodat je queries kunt uitvoeren, rapporten kunt genereren en waardevolle inzichten uit je informatie kunt halen. Of je nu met klantdata, verkoopcijfers of analytische resultaten werkt: begrijpen hoe je tabellen maakt en beheert in Snowflake is cruciaal.
In deze tutorial leer je alles wat je moet weten over het maken van tabellen in Snowflake. We behandelen de verschillende typen tabellen, laten stapsgewijze voorbeelden zien en delen best practices voor tabelontwerp. Aan het eind kun je met vertrouwen het juiste tabeltype kiezen voor jouw behoeften en tabellen maken volgens industriestandaarden voor prestaties en onderhoudbaarheid.
Inzicht in tabeltypen in Snowflake
Voordat we in codevoorbeelden duiken over hoe je tabellen maakt, bekijken we de verschillende tabeltypen in Snowflake. Elk type heeft een eigen doel en specifieke eigenschappen op het gebied van datapersistentie, toegankelijkheid en opslaglocatie.
Permanente tabellen
Permanente tabellen zijn het standaard tabeltype in Snowflake. Ze blijven bestaan totdat ze expliciet worden verwijderd en worden opgeslagen in de interne opslag van Snowflake. Deze tabellen zijn ideaal voor het opslaan van kernbedrijfsdata die je langdurig wilt bewaren en in meerdere sessies wilt kunnen benaderen. De data in permanente tabellen blijft intact tussen sessies en is toegankelijk voor elke geautoriseerde gebruiker.
Tijdelijke tabellen
Tijdelijke tabellen zijn sessiespecifieke tabellen die automatisch worden verwijderd wanneer je huidige sessie eindigt. Ze fungeren als werkruimtetabellen voor tussentijdse verwerkingsstappen en helpen complexe datatransformaties te organiseren zonder je permanente opslag te vervuilen. De data in tijdelijke tabellen is alleen zichtbaar voor de sessie die ze heeft aangemaakt en wordt automatisch opgeruimd wanneer de sessie sluit.
Externe tabellen
Externe tabellen bieden een manier om data te bevragen die buiten de opslag van Snowflake staat. Ze fungeren als een metadatalayer die verwijst naar data op externe opslaglocaties zoals AWS S3 of Azure Blob Storage. In plaats van de data in te laden, maken externe tabellen er een verwijzing naar, zodat je externe data direct kunt bevragen. Deze aanpak is vooral waardevol wanneer je met data werkt die in de bronsystemen moet blijven of die vaak wordt bijgewerkt vanuit externe systemen.
Dynamische tabellen
Dynamische tabellen zijn een krachtige functie in Snowflake die automatisch up-to-date resultaten van een query bijhouden. Ze werken als gematerialiseerde views die automatisch verversen op basis van wijzigingen in de onderliggende brontabellen. Wanneer je een dynamische tabel maakt, definieer je die met een SELECT-statement, en Snowflake beheert automatisch het verversingsproces zodat de data actueel blijft.
Dynamische tabellen zijn vooral handig voor:
Belangrijke kenmerken van dynamische tabellen zijn onder meer:
Elk tabeltype heeft een eigen rol in je data-architectuur. Permanente tabellen vormen de basis van je datawarehouse, tijdelijke tabellen faciliteren datapijplijnen, externe tabellen maken integratie met externe bronnen mogelijk, en dynamische tabellen zorgen voor geautomatiseerde, realtime datatransformaties.
Snowflake-tabellen vergelijken
In de onderstaande tabel hebben we de verschillende typen Snowflake-tabellen samengevat in een beknopte, snelle referentiegids:
Tabeltype
Persistentie
Zichtbaarheid
Het beste voor
Permanent
Tot verwijdering
Elke sessie
Kernbedrijfsdata
Tijdelijk
Alleen sessie
Zelfde sessie
Tussentijdse transformaties
Extern
Externe opslag
Elke sessie
Externe data bevragen (bijv. S3)
Dynamisch
Automatisch verversend
Elke sessie
Realtime analytics
Tabellen maken: Snowflake instellen
Voordat je de voorbeelden in deze tutorial uitvoert, heb je toegang tot een Snowflake-omgeving nodig. Dit zijn verschillende manieren om verbinding te maken en Snowflake-commando's uit te voeren:
1. Snowflake-webinterface (Snowsight)
De eenvoudigste manier om te beginnen is via de webinterface van Snowflake:
2. Snowflake CLI (commandlinetool)
Voor toegang via de commandline:
Je vindt je Snowflake-accountgegevens op de volgende plekken:
Deel of commit deze inloggegevens om veiligheidsredenen nooit. Sla ze veilig op in omgevingsvariabelen of een configuratiebestand.
3. Python-verbinding
Als je Python gebruikt, kun je de bibliotheek
snowflake-connector-pythongebruiken:Belangrijke beveiligingsopmerking:
Nu de setup klaar is, gaan we tabellen maken!
Tabellen maken in Snowflake: stapsgewijze voorbeelden
Voorbeeld 1: Een eenvoudige Snowflake-tabel maken
Laten we een tabel maken om klantinformatie op te slaan. Dit voorbeeld laat basis-tabelcreatie zien met verschillende datatypes en constraints.
Belangrijke punten bij dit voorbeeld:
CREATE OR REPLACE TABLE- Maakt een nieuwe tabel of vervangt deze als hij al bestaatPRIMARY KEY- Zorgt voor unieke identificatie van elk recordNOT NULL- Voorkomt null-waarden in vereiste veldenUNIQUE- Zorgt dat e-mailadressen niet dubbel voorkomenTIMESTAMP_NTZ- Timestamp zonder tijdzoneDEFAULT- Stelt automatisch het aanmaaktijdstip inVoorbeeld 2: Een tijdelijke tabel maken
Tijdelijke tabellen zijn perfect voor tussentijdse dataverwerking. Hier is een voorbeeld dat een tijdelijke tabel maakt voor analyse van klantorders:
Belangrijke punten over tijdelijke tabellen:
TEMPORARYgeeft aan dat deze tabel alleen binnen de huidige sessie bestaat. Dit betekent dat andere gebruikers deze tabel niet kunnen zien of benaderen.CREATE TABLE AS(CTAS) kun je in één stap een tabel creëren en vullen door de tabeldefinitie te combineren met een SELECT-statement.Voorbeeld 3: Een externe tabel maken in Snowflake
Dit voorbeeld laat zien hoe je een externe tabel maakt die data leest uit bestanden die in een cloudopslagbucket zijn opgeslagen:
De eerste instructie definieert een bestandsformaatspecificatie die Snowflake vertelt hoe externe CSV-bestanden te parsen, inclusief de scheidingsteken, headerafhandeling en weergaven van NULL-waarden.
De tweede instructie maakt een stage-object dat een verbinding legt met externe cloudopslag (in dit geval S3) met de opgegeven inloggegevens. Deze stage fungeert als referentiepunt voor toegang tot de externe databestanden.
De derde instructie maakt de externe tabel zelf, met kolomdefinities met AS-clausules om de ruwe tekenreeksdata uit de CSV expliciet te casten naar de juiste Snowflake-datatypen. De WITH LOCATION-clausule wijst naar het specifieke pad binnen de stage waar de bestanden zich bevinden.
De parameter PATTERN filtert met behulp van regex welke bestanden moeten worden opgenomen, zodat alleen CSV-bestanden worden verwerkt.
Vereisten om deze query voor het aanmaken van een externe tabel uit te voeren:
1. Toegang tot een Snowflake-account met rechten om:
2. Geldige AWS-inloggegevens (
AWS_KEY_IDenAWS_SECRET_KEY) met rechten om:3. Eisen aan brondata:
customer_idals stringpurchase_dateals dateproduct_idals stringamountals decimal4. Netwerkconnectiviteit:
5. Compute-resources:
Voorbeeld 4: Een dynamische tabel maken
Dit voorbeeld maakt een dynamische tabel die een actuele samenvatting van verkoopdata bijhoudt:
De parameter
TARGET_LAGvan '20 minutes' definieert de maximaal toegestane vertraging tussen updates in de brontabel en het moment waarop die wijzigingen in de dynamische tabel zichtbaar worden. Dit borgt de actualiteit binnen dat tijdsvenster.De parameter
WAREHOUSEspecificeert welke compute-resources (in dit gevalCOMPUTE_WH) periodiek worden gebruikt om de dynamische tabel te verversen. Dit warehouse moet voldoende capaciteit hebben om de verversingen aan te kunnen.De dynamische tabel werkt zijn inhoud automatisch bij wanneer de onderliggende tabel
sales_transactionsverandert, zonder handmatige tussenkomst. Dit biedt mogelijkheden voor near-realtime analytics.Door vooraf geaggregeerde dagelijkse verkoopsamenvattingen per productcategorie bij te houden, maakt de dynamische tabel snellere query's mogelijk dan wanneer je deze statistieken on demand uit de ruwe transactiedata zou berekenen. Dit verbetert de queryprestaties voor rapportage- en analytics-doeleinden.
Elk van deze voorbeelden laat verschillende scenario's voor tabelcreatie zien die je in praktijktoepassingen kunt tegenkomen. Pas kolomnamen, datatypes en andere parameters altijd aan jouw specifieke behoeften aan.
Best practices voor het maken van tabellen in Snowflake
Laten we enkele best practices doornemen die je kunt volgen bij het maken van tabellen in Snowflake om onderhoudbaarheid, prestaties en datakwaliteit te waarborgen.
1. Naamgevingsconventies
Gebruik altijd duidelijke, consistente namen voor je tabellen en kolommen:
Tips voor naamgeving:
dev_,test_,prod_)2. Kolomdatatypen
Kies het juiste datatype om opslag te besparen en prestaties te verbeteren:
Veelgebruikte datatypen:
NUMBER/INTEGER: Voor gehele getallenDECIMAL/NUMERIC: Voor precieze decimale getallen (vooral geld)VARCHAR: Voor tekst met een bekende maximumlengteTEXT: Voor tekst met onbeperkte lengteTIMESTAMP_NTZ: Voor datum en tijd (zonder tijdzone)BOOLEAN: Voor waar/onwaar-waarden3. Clustering keys gebruiken
Voeg clustering keys toe om queryprestaties te verbeteren:
Wanneer clustering gebruiken:
4. Tabelconstraints toevoegen
Gebruik constraints om je data schoon te houden:
Belangrijke constraints:
PRIMARY KEY: Voor unieke identifiersFOREIGN KEY: Voor het koppelen van tabellenNOT NULL: Voor verplichte veldenUNIQUE: Voor velden die geen duplicaten mogen hebbenCHECK: Voor eenvoudige datavalidatie5. Veelgemaakte fouten om te vermijden
Doe dit niet:
Doe dit in plaats daarvan:
De verbeterde versie borgt dataintegriteit met een primary key, gebruikt de juiste datatypen voor datums en getallen om efficiënt te kunnen filteren en rekenen, en houdt kolomdefinities consistent voor betere leesbaarheid en compatibiliteit.
6. Prestatie-tips
Het optimaliseren van tabelprestaties in Snowflake kan de querysnelheid aanzienlijk verbeteren en opslagkosten verlagen. Volg deze best practices om je tabellen efficiënt en schaalbaar te houden.
7. Beveiligingsbest practices
Goede beveiligingsmaatregelen zijn essentieel om gevoelige data te beschermen en toegang te beheersen. Implementeer deze best practices om je Snowflake-omgeving te beveiligen tegen ongeautoriseerde toegang en datalekken.
Onthoud: een goed ontworpen tabel maakt je werk later makkelijker. Neem de tijd om je tabelstructuur te plannen voordat je deze maakt!
Conclusie
In deze tutorial hebben we de basis behandeld van het maken van tabellen in Snowflake, inclusief:
Deze kennis vormt de basis voor het bouwen van efficiënte en schaalbare datasolutions in Snowflake.
Volgende stappen
Wil je je Snowflake-expertise verdiepen? Bekijk dan deze waardevolle bronnen:
1. Interactieve cursussen:
2. Uitgebreide tutorials:
3. Carrièrebronnen:
Vergeet niet: de beste manier om te leren is door te doen. Begin met tabellen maken, experimenteer met verschillende typen en bouw echte projecten. Als je uitdagingen tegenkomt, raadpleeg dan deze bronnen en blijf nieuwe functies van Snowflake verkennen.