CREATE TABLE in Databricks: een complete gids voor het bouwen en beheren van tabellen
Ontdek hoe je tabellen maakt in Databricks met het commando CREATE TABLE. Leer verschillende methoden voor verschillende scenario’s, waaronder hoe je een tabel maakt op basis van bestaande data en hoe je CREATE TABLE AS SELECT gebruikt.
Databricks-tabellen zijn een kernonderdeel van het Databricks Lakehouse-platform, ontworpen voor grootschalige dataopslag en -verwerking. Deze tabellen maken samenwerking tussen teams mogelijk door gestructureerde en ongestructureerde data te verenigen en analytische workloads te ondersteunen.
In dit artikel neem ik je mee langs verschillende technieken om tabellen in Databricks te maken met het commando CREATE TABLE, met meerdere syntaxisvarianten voor uiteenlopende use-cases. Ook geef ik tips voor best practices bij het bouwen en beheren van tabellen in Databricks voor efficiëntie en betrouwbaarheid.
Als start raad ik je sterk aan om DataCamps blogpost How to Learn Databricks: A Beginner’s Guide to the Unified Data Platform te bekijken, zodat je de kernfuncties en toepassingen van Databricks begrijpt en een gestructureerd pad krijgt om te beginnen. Volg ook onze Introduction to Databricks-cursus. Zelfs als je ervaring hebt met SQL, zul je zien dat dingen er in het Databricks Lakehouse-platform anders uit kunnen zien. De interactieve oefeningen in onze cursus leiden je door SQL-queries, platformfuncties en koppelingen met externe systemen.
Introductie tot Databricks-tabellen
Om te beginnen: Databricks-tabellen zijn gestructureerde datasets die dataorganisatie en -toegang faciliteren binnen de Databricks Lakehouse-omgeving. Er zijn twee typen:
Beheerde tabellen (Managed Tables): Deze tabellen worden volledig door Databricks beheerd, dat zowel de opslag als de metadata regelt. Wanneer een beheerde tabel wordt aangemaakt, beheert Databricks de onderliggende databestanden, en als de tabel wordt verwijderd, worden de bijbehorende data ook verwijderd.
Externe tabellen: Externe tabellen verwijzen naar data die buiten Databricks staat, meestal in cloudopslag zoals AWS S3 of Azure Blob Storage. Hoewel Databricks de metadata voor deze tabellen beheert, blijft de daadwerkelijke data intact, zelfs als de tabel wordt gedropt. Ze staan ook bekend als onbeheerde tabellen (unmanaged).
Tabellen in Databricks gebruiken vaak standaard Delta Lake vanwege de geavanceerde functies en optimalisaties. Delta Lake biedt ACID-transacties, schaalbaarheid, prestatieverbeteringen zoals optimalisaties zoals caching en indexering, en geünificeerde batch- en streamingverwerking.
Ter info: de vroegere versies van Azure Databricks gebruikten de verouderde “Hive-format”-tabellen, die inmiddels zijn vervangen door moderne Delta-tabellen. Over het geheel genomen zijn moderne Delta-tabellen betrouwbaarder en presteren ze beter dan legacy Hive-tabellen, waardoor ze de standaardkeuze zijn voor Databricks-workflows.
Hier is een samenvatting die helpt om het verschil tussen de twee te zien:
Functie
Hive-formattabel
Delta-tabel
Dataformaat
Apache Hive (CSV, Parquet, ORC, enz.)
Delta Lake (gebaseerd op Parquet met metadata)
Transacties
Geen ACID-ondersteuning (eventual consistency)
Volledige ACID-transacties
Schemabeheer
Beperkte afdwinging
Strikte schema-afdwinging
Prestatie-optimalisatie
Handmatige tuning vereist
Ingebouwde optimalisaties (caching, compaction)
Time travel
Geen ingebouwde ondersteuning voor historische queries
Ondersteunt time travel voor het bevragen van eerdere versies van data
Gelijktijdigheid
Gevoelig voor conflicten bij updates of deletes
Gaat efficiënt om met gelijktijdige bewerkingen
Syntaxisvarianten van CREATE TABLE
Het commando CREATE TABLE in Databricks ondersteunt meerdere varianten voor verschillende gevallen. Elke variant heeft een eigen doel, met gerichte opties zoals bestandslocatie, klonen en metadatabeheer. Heb je een opfrisser nodig over Databricks SQL, lees dan onze tutorial Databricks SQL om onder meer te leren hoe je een Notebook gebruikt in een Databricks SQL-warehouse.
Hieronder staan de belangrijkste stijlen met voorbeelden en toelichting.
CREATE TABLE [USING]
Deze syntaxis maakt een nieuwe tabel met een opgegeven schema en dataformaat. De volgende query maakt een tabel sales_data door data te lezen uit Parquet-bestanden die op een specifieke locatie staan.
-- Create a table from files in a specific formatCREATETABLE sales_data
USING PARQUET
LOCATION '/mnt/data/sales';Mogelijk gemaakt door
CREATE TABLE (Hive-format)
Deze legacy syntaxis lijkt op het standaard SQL-commando CREATE TABLE, gebruikt wanneer je een tabel definieert met metadata beheerd door Databricks, zonder externe bestanden te refereren. De onderstaande query maakt een Hive-stijl tabel hive_table met een vooraf gedefinieerd schema en extra metadataproperties.
-- Hive-style table creation with schema definitionCREATETABLE hive_table (
id INT,
name STRING
)COMMENT'Hive format example'
TBLPROPERTIES ('created_by'='databricks');Mogelijk gemaakt door
In de bovenstaande query voegt de clausule COMMENT beschrijvende metadata toe, terwijl TBLPROPERTIES aangepaste eigenschappen over de tabel opslaat.
CREATE TABLE LIKE
Dit commando maakt een nieuwe tabel met het schema en de eigenschappen van een bestaande tabel. Gebruik deze syntaxis wanneer je de structuur van een bestaande tabel wilt repliceren zonder de data te kopiëren. Dit is handig voor testen of ontwikkeling.
-- Create a table with the same schema as another tableCREATETABLE new_table LIKE existing_table;Mogelijk gemaakt door
CREATE TABLE CLONE
Met deze syntaxis kun je een nieuwe tabel maken door een bestaande Delta Lake-tabel te klonen, als deep of shallow clone. Gebruik dus CREATE TABLE CLONE wanneer je een zelfstandige kopie van zowel data als metadata nodig hebt (deep clone), of alleen de metadata terwijl de oorspronkelijke data wordt gerefereerd (shallow clone). Denk hierbij aan versiebeheer of het maken van back-ups.
Het volgende voorbeeld toont de queries voor het maken van deep en shallow clones in Databricks.
-- Deep clone by defaultCREATETABLE cloned_table CLONE original_table;-- Shallow cloneCREATETABLE shallow_clone_table SHALLOW CLONE original_table;Mogelijk gemaakt door
CREATE OR REPLACE TABLE
Deze gecombineerde opdracht vervangt een bestaande tabel door een nieuwe, met behoud van dezelfde tabelnaam, in één handeling. Gebruik deze syntaxis wanneer je een bestaande tabel volledig wilt overschrijven terwijl de naam behouden blijft. Dit is vooral handig om de structuur of data van een tabel te updaten zonder deze eerst te droppen.
De onderstaande query maakt of vervangt de tabel sales met een nieuw schema.
-- Create or replace a sales table with a new schemaCREATEORREPLACETABLE sales (
sale_id INT,
amount FLOAT)USING DELTA
LOCATION '/mnt/delta/sales';Mogelijk gemaakt door
Er zijn meer relevante clausules die je met de CREATE TABLE-syntaxis in Databricks kunt gebruiken om je tabellen te beheren volgens specifieke vereisten. Hieronder staat een samenvatting van het gebruik van elk van deze clausules. Ik heb er al enkele als voorbeeld gebruikt, maar niet allemaal.
IF NOT EXISTS: Voorkomt fouten door het aanmaken over te slaan als de tabel al bestaat.
USING: Geeft het bestandsformaat op (bijv. Delta, Parquet, CSV).
EXTERNAL: Verklaart een tabel waarvan de data buiten de beheerde opslag van Databricks staat.
PARTITIONED BY: Definieert partities om grote datasets te optimaliseren.
LOCATION: Verwijst naar de map met tabeldata.
TBLPROPERTIES: Voegt metadata toe voor aangepaste tabelconfiguraties en optimalisaties.
Stapsgewijze demonstraties
In deze sectie laat ik verschillende manieren zien om tabellen in Databricks te maken en te beheren, met beknopte voorbeelden en uitleg van belangrijke clausules. Bekijk onze tutorial Databricks Tutorial: 7 Must-know Concepts For Any Data Specialist om te leren hoe je SQL-commando’s uitvoert in het Databricks-platform.
Hoe maak je een lege tabel
Om een lege Delta-tabel te maken, definieer je het schemas met kolomnamen en datatypes. Gebruik de clausule USING DELTA om het tabelformaat te bepalen en COMMENT om beschrijvende metadata toe te voegen.
Deze query maakt een lege Delta-tabel met de naam employees met een vooraf gedefinieerd schema, inclusief kolommen voor id, name, department en hire_date.
-- Create an empty Delta table with a defined schemaCREATETABLE employees (
id BIGINT,
name STRING,
department STRING,
hire_date DATE)USING DELTA
COMMENT'Table to store employee information';Mogelijk gemaakt door
Hoe maak je een tabel op basis van bestaande data
Om een tabel te maken op basis van bestaande data, koppel je de tabel aan externe databestanden in formaten zoals CSV, Parquet of JSON. Je kunt de clausule LOCATION gebruiken om het bestandspad te koppelen en USING om het dataformaat te specificeren.
De volgende query maakt bijvoorbeeld een tabel sales_data door te verwijzen naar Parquet-bestanden op /mnt/data/sales_data/.
-- Create a table from Parquet files in a specified locationCREATETABLE sales_data
USING PARQUET
LOCATION '/mnt/data/sales_data/';Mogelijk gemaakt door
Hoe maak je een table as select (CTAS)
Je kunt ook een tabel maken met een select door een query uit te voeren en het resultaat op te slaan. In dit scenario vult de clausule AS SELECT de tabel met het queryresultaat.
De onderstaande query maakt bijvoorbeeld een nieuwe tabel high_value_sales door data uit de bestaande tabel sales_data te selecteren en te transformeren. Er wordt gefilterd op rijen waar total_amount groter is dan 1000, waarbij alleen de kolommen sale_id, customer_id en total_amount behouden blijven.
-- Create a table by selecting and transforming data from another tableCREATETABLE high_value_sales ASSELECT
sale_id,
customer_id,
total_amount
FROM sales_data
WHERE total_amount >1000;Mogelijk gemaakt door
Hoe maak je een externe tabel
Een externe tabel maken betekent verwijzen naar data die buiten de beheerde opslag van Databricks staat. Gebruik de clausule LOCATION om de externe datalocatie op te geven.
De onderstaande query maakt een externe Delta-tabel external_table door te verwijzen naar data op /mnt/external_storage/external_table/.
-- Create an external table referencing data outside Databricks storageCREATETABLE external_table
USING DELTA
LOCATION '/mnt/external_storage/external_table/';Mogelijk gemaakt door
Hoe maak je een tabel LIKE
Om een tabel LIKE te maken, dupliceer je het schema van een bestaande tabel zonder de data te kopiëren. In het onderstaande voorbeeld maakt de query een nieuwe tabel sales_backup met hetzelfde schema als een bestaande sales-tabel.
-- Create a new sales table with the same schema as an existing tableCREATETABLE sales_backup LIKE sales;Mogelijk gemaakt door
Hoe maak je TABLE CLONE
Je kunt een tabelcloon maken met de clausule CLONE om een shallow of deep kopie van een Delta-tabel te maken voor back-ups of testen.
In het volgende voorbeeld maakt de query een nieuwe tabel, sales_shallow_clone, waarbij alleen de metadata (schema en tabeleigenschappen) wordt gekopieerd.
-- Shallow clone: Copies only metadata (references original data)CREATETABLE sales_shallow_clone CLONE sales_data;Mogelijk gemaakt door
Het onderstaande voorbeeld maakt een nieuwe tabel, sales_deep_clone, maar kopieert zowel metadata als daadwerkelijke data.
-- Deep clone: Copies both metadata and actual dataCREATETABLE sales_deep_clone CLONE sales_data DEEP;Mogelijk gemaakt door
Hoe maak je een tijdelijke tabel (temp table)
Gebruik de clausule TEMPORARY bij het maken van tijdelijke tabellen om ervoor te zorgen dat de tabel sessiespecifiek is.
De onderstaande query maakt een tijdelijke tabel temp_table die alleen in de huidige sessie bestaat. Er worden id, name en sales_amount geselecteerd uit sales_data, gefilterd op rijen waar region = 'US'.
-- Create a temporary table that exists only in the sessionCREATETEMPORARYTABLE temp_table ASSELECT
id,
name,
sales_amount
FROM sales_data
WHERE region ='US';Mogelijk gemaakt door
Hoe vervang je een tabel
Je kunt de clausule CREATE OR REPLACE gebruiken om de tabeldefinitie en -inhoud te vervangen. De onderstaande query vervangt de bestaande tabel updated_table door een nieuw schema en nieuwe data. De tabel wordt gedefinieerd met drie kolommen (id, name, total_sales).
-- Replace an existing table with a new schema or dataCREATEORREPLACETABLE updated_table (
id BIGINT,
name STRING,
total_sales DOUBLE)USING DELTA
LOCATION '/mnt/delta/updated_table/';Mogelijk gemaakt door
Geavanceerde onderwerpen
In deze sectie ga ik in op geavanceerde functies van Databricks-tabellen die functionaliteit, prestaties en security verbeteren.
Gegenereerde kolommen en identity-kolommen
Databricks ondersteunt identity-kolommen, die automatisch unieke waarden genereren voor elke nieuwe rij. Deze functie is handig voor surrogate keys in datawarehousing.
De onderstaande query maakt een tabel employees met drie kolommen: id, name en department. De kolom id is een identity-kolom die bij elke nieuwe rij automatisch oploopt.
-- Identity column: auto-incremented valueCREATETABLE employees (
id BIGINT GENERATED ALWAYS ASIDENTITY,-- Auto-incremented column
name STRING,
department STRING
);Mogelijk gemaakt door
Deze andere query maakt een tabel sales met drie kolommen: sale_id, sale_date en sale_year. De kolom sale_year is gegenereerd en wordt automatisch berekend op basis van de kolom sale_date met de functie YEAR(sale_date).
-- Generated column: derived from other columnsCREATETABLE sales (
sale_id BIGINT,
sale_date DATE,
sale_year INT GENERATED ALWAYS AS(YEAR(sale_date))-- Derived column);Mogelijk gemaakt door
Partitioneren en clusteren
Partitioneren verdeelt data in kleinere brokken en verbetert zo de queryprestaties, terwijl clusteren data binnen partities ordent voor snellere reads.
De onderstaande query maakt bijvoorbeeld een gepartitioneerde tabel waarbij data wordt opgesplitst in partities op basis van de kolom region, wat de queryprestaties bij filtering op regio verbetert.
-- Partitioned tableCREATETABLE partitioned_table (
id BIGINT,
region STRING,
sales_amount DOUBLE)USING DELTA
PARTITIONED BY(region);-- Querying by region will be fasterMogelijk gemaakt door
De onderstaande query optimaliseert de gepartitioneerde tabel door de data binnen elke partitie te clusteren op basis van de kolom sales_amount. Dit maakt queries op sales_amount sneller door de indeling van data te verbeteren voor efficiënte reads. De clausule ZORDER BY werkt binnen partities om leesprestaties te verbeteren door data binnen partities te clusteren, niet over partities heen.
-- Clustered tableOPTIMIZE partitioned_table
ZORDER BY(sales_amount);-- Clusters data within partitions for efficient readsMogelijk gemaakt door
Kolommaskering en rijfilters
Kolommaskering en rijfilters beperken de zichtbaarheid van data op basis van gebruikersrollen of voorwaarden en beschermen zo gevoelige informatie.
De onderstaande query maakt bijvoorbeeld een gemaskeerde view masked_table op basis van de tabel employees. De kolom salary wordt geredigeerd (vervangen door REDACTED) voor alle gebruikers behalve degenen met de rol manager. De CASE-instructie zorgt ervoor dat alleen managers het daadwerkelijke salaris zien, terwijl anderen de gemaskeerde data zien
-- Column masking: Redact sensitive dataCREATE MASKED VIEW masked_table ASSELECT
id,
name,CASEWHENcurrent_user()='manager'THEN salary
ELSE'REDACTED'ENDAS salary
FROM employees;Mogelijk gemaakt door
Op vergelijkbare wijze gebruikt de onderstaande query rijfilters om een view filtered_table te maken of te vervangen op basis van de tabel sales. De view filtert rijen zodat alleen data met region = 'US' is opgenomen, waardoor de toegang wordt beperkt tot alleen verkoopdata uit de VS.
-- Row filters: Fine-grained access controlCREATEORREPLACEVIEW filtered_table ASSELECT*FROM sales
WHERE region ='US';-- Limit data visibility to a specific regionMogelijk gemaakt door
Schema-evolutie
Databricks ondersteunt schema-evolutie via CREATE OR REPLACE TABLE en tabelwijzigingen. Gebruik de instructie CREATE OR REPLACE TABLE om schema en data te overschrijven en ALTER TABLE om het schema incrementeel te wijzigen zonder data te beïnvloeden.
De onderstaande query vervangt de bestaande tabel employees door een nieuw schema, waarbij een nieuwe kolom hire_date wordt toegevoegd terwijl de data in Delta-formaat blijft opgeslagen.
-- Schema evolution with CREATE OR REPLACE TABLECREATEORREPLACETABLE employees (
id BIGINT,
name STRING,
department STRING,
hire_date DATE-- New column added)USING DELTA;Mogelijk gemaakt door
Deze andere query wijzigt de tabel employees door een nieuwe kolom salary toe te voegen aan het bestaande schema.
-- Altering a table schemaALTERTABLE employees ADDCOLUMNS(salary DOUBLE);Mogelijk gemaakt door
Prestatieafstemming
Voor prestatieoptimalisatie van grootschalige tabellen kun je diverse tabeleigenschappen en technieken gebruiken, zoals auto-optimalisatie en Z-ordering.
In het volgende voorbeeld schakelt de query auto-optimalisatie in op de delta_table door eigenschappen te zetten die automatisch kleine bestanden compacteren en bestanden samenvoegen tijdens writes, wat de opslag efficiëntie verbetert.
-- Enable automatic optimizationsALTERTABLE delta_table
SET TBLPROPERTIES ('delta.autoOptimize.optimizeWrite'='true',-- Automatically compact small files'delta.autoOptimize.autoCompact'='true'-- Automatically merge files);Mogelijk gemaakt door
Op vergelijkbare wijze optimaliseert de onderstaande query de delta_table door data te clusteren op region en sales_date om de queryprestaties te verbeteren, vooral bij filters op deze kolommen.
-- Perform clustering for faster query performanceOPTIMIZE delta_table
ZORDER BY(region, sales_date);-- Improves query efficiency for frequent filtersMogelijk gemaakt door
Best practices en aandachtspunten
Hier zijn een paar zaken om rekening mee te houden bij het maken van tabellen in Databricks, zodat je het in één keer goed doet:
Naamgevingsconventies voor tabellen: Gebruik altijd duidelijke en consistente namen om vindbaarheid te verbeteren en fouten te verminderen. Vermijd speciale tekens of extreem lange namen om compatibiliteitsproblemen te voorkomen.
Beveiliging en permissies: Gebruik Unity Catalog voor gecentraliseerde toegangscontrole over alle data-assets. Pas Access Control Lists (ACL’s) toe om te beperken wie data kan bekijken of wijzigen. Maskeer daarnaast gevoelige data met kolommaskering of rijfilters.
Back-up en herstel: Maak gebruik van de versiegeschiedenis van Delta Lake voor eenvoudig herstel en time travel. Monitor en beheer regelmatig het behoud van historische versies om opslagkosten en herstelbehoeften in balans te houden.
Beheerde vs. externe tabellen: Het is ook belangrijk om het verschil tussen beheerde en externe tabellen te begrijpen. In beheerde tabellen beheert Databricks zowel metadata als data. Dit is ideaal wanneer je volledige controle wilt over de levenscyclus van data. In externe tabellen daarentegen staat de gerefereerde data buiten Databricks. Dit is nuttig om controle te behouden over data die mogelijk wordt gedeeld tussen verschillende platforms of systemen.
Veelvoorkomende valkuilen en troubleshooting
Nu we de best practices voor het beheren van tabellen in Databricks hebben besproken, behandel ik de meest voorkomende issues met Databricks-tabellen, hun typische foutmeldingen en de oplossingen.
Fouten bij niet-lege locaties bij gebruik van CREATE vs. CREATE OR REPLACE
Bij gebruik van CREATE TABLE met een opgegeven locatie (LOCATION-clausule), kun je een fout krijgen als de map niet leeg is, zoals:
Deze fout treedt op omdat het commando CREATE TABLE een lege map verwacht voor de opgegeven locatie, maar bestaande bestanden of metadata conflicteren met deze vereiste.
Om dit op te lossen gebruik je CREATE OR REPLACE TABLE om bestaande data en metadata te overschrijven. Of maak de map handmatig schoon voordat je CREATE TABLE gebruikt.
CREATEORREPLACETABLE delta_table
USING DELTA
LOCATION '/mnt/data/delta_table';-- Overwrites table and filesMogelijk gemaakt door
Schemamismatch of problemen met bepaalde datatypes
Bij het inserten of opvragen van data kunnen schemamismatch-fouten optreden, zoals:
Error: Schema mismatch: Expected columntype STRING, but found INT.Mogelijk gemaakt door
De fout kan worden veroorzaakt door een verschil tussen het tabelschema en inkomende datatypes. Ook niet-ondersteunde of ambigue datatypeconversies (bijv. complexe geneste types) kunnen een schemamismatch veroorzaken. Los dit op door schema-afdwinging toe te passen om het schema bij het aanmaken van de tabel te verifiëren of gebruik schema-afdwinging in Delta-tabellen.
-- Enforce schema matching during table creationCREATETABLE schema_table (
id INT,
name STRING
)USING DELTA
TBLPROPERTIES ('delta.schema.enforce'='true');-- Enforces strict schemaMogelijk gemaakt door
Sta ook schema-evolutie toe bij het toevoegen van nieuwe kolommen of het wijzigen van datatypes.
Identity-kolommen zijn stateful en kunnen conflicten krijgen wanneer meerdere transacties gelijktijdig data proberen te inserten. Los dit op door surrogate keys te gebruiken ter vervanging van identity-kolommen, met deterministische surrogate keys die worden gegenereerd met functies als uuid() of monotonically_increasing_id().
CREATETABLE better_table ASSELECT
monotonically_increasing_id()AS id,-- Replaces identity column
name, department
FROM source_data;Mogelijk gemaakt door
Je kunt ook Delta Lake’s MERGE gebruiken voor complexe insert- en update-workflows zonder te vertrouwen op identity-kolommen.
MERGEINTO target_table AS t
USING source_table AS s
ON t.id = s.id
WHENMATCHEDTHENUPDATESET*WHENNOTMATCHEDTHENINSERT*;Mogelijk gemaakt door
Conclusie
In Databricks is het commando CREATE TABLE een veelzijdig hulpmiddel voor het definiëren van datastructuren, het koppelen aan externe data en het afleiden van nieuwe datasets via queries. Het is belangrijk om de verschillende syntaxisopties te begrijpen voor het maken en beheren van tabellen in Databricks, afgestemd op jouw behoeften. Zoals je hebt gezien, zijn er meerdere methoden om tabellen te maken.
Wil je de basisconcepten van Databricks verder verkennen, volg dan zeker DataCamps Introduction to Databricks-cursus om te leren over Databricks als datawarehousing-oplossing voor Business Intelligence (BI). Bekijk ook onze blogpost Databricks Certifications In 2025 om te leren hoe je Databricks-certificeringen behaalt, carrièremogelijkheden verkent en de juiste certificering kiest voor jouw doelen.
Technical writer voor data science met praktische ervaring in data-analyse, business intelligence en data science. Ik schrijf praktische, op de industrie gerichte content over SQL, Python, Power BI, Databricks en data engineering, gebaseerd op analytisch werk in de echte wereld. Mijn schrijfwerk slaat een brug tussen technische diepgang en zakelijke impact, en helpt professionals om data om te zetten in onderbouwde beslissingen.
\n
\n
\n
\n
Databricks CREATE TABLE - veelgestelde vragen
Wat is het doel van het commando CREATE TABLE in Databricks?⌄
Het commando CREATE TABLE wordt gebruikt om een nieuwe tabel in Databricks te definiëren, waarbij je het schema, het dataformaat en de opslaglocatie van de tabel kunt opgeven.
Wat is het verschil tussen beheerde en externe tabellen?⌄
Beheerde tabellen slaan zowel metadata als data op in Databricks, terwijl externe tabellen alleen metadata opslaan en de data op een externe locatie laten staan.
Is een externe tabel hetzelfde als een onbeheerde tabel? ⌄
Ja, externe tabellen en onbeheerde tabellen verwijzen naar hetzelfde concept in Databricks. Ze slaan metadata op in Databricks maar houden de feitelijke data op een externe locatie, zodat je de levenscyclus van de data onafhankelijk kunt beheren.
Wat is een shallow versus deep clone?⌄
Een shallow clone kopieert alleen metadata, terwijl een deep clone zowel data als metadata dupliceert.
Wat zijn tijdelijke tabellen?⌄
Tijdelijke tabellen bestaan alleen binnen de huidige sessie en worden automatisch verwijderd nadat de sessie is beëindigd.
Wat is schema-evolutie in Databricks?⌄
Schema-evolutie maakt het mogelijk het schema van een bestaande tabel te wijzigen (bijv. kolommen toevoegen of aanpassen) zonder de hele tabel opnieuw te hoeven maken, wat vooral gunstig is voor Delta-tabellen.
Databricks-tabellen zijn een kernonderdeel van het Databricks Lakehouse-platform, ontworpen voor grootschalige dataopslag en -verwerking. Deze tabellen maken samenwerking tussen teams mogelijk door gestructureerde en ongestructureerde data te verenigen en analytische workloads te ondersteunen.
In dit artikel neem ik je mee langs verschillende technieken om tabellen in Databricks te maken met het commando
CREATE TABLE, met meerdere syntaxisvarianten voor uiteenlopende use-cases. Ook geef ik tips voor best practices bij het bouwen en beheren van tabellen in Databricks voor efficiëntie en betrouwbaarheid.Als start raad ik je sterk aan om DataCamps blogpost How to Learn Databricks: A Beginner’s Guide to the Unified Data Platform te bekijken, zodat je de kernfuncties en toepassingen van Databricks begrijpt en een gestructureerd pad krijgt om te beginnen. Volg ook onze Introduction to Databricks-cursus. Zelfs als je ervaring hebt met SQL, zul je zien dat dingen er in het Databricks Lakehouse-platform anders uit kunnen zien. De interactieve oefeningen in onze cursus leiden je door SQL-queries, platformfuncties en koppelingen met externe systemen.
Introductie tot Databricks-tabellen
Om te beginnen: Databricks-tabellen zijn gestructureerde datasets die dataorganisatie en -toegang faciliteren binnen de Databricks Lakehouse-omgeving. Er zijn twee typen:
Tabellen in Databricks gebruiken vaak standaard Delta Lake vanwege de geavanceerde functies en optimalisaties. Delta Lake biedt ACID-transacties, schaalbaarheid, prestatieverbeteringen zoals optimalisaties zoals caching en indexering, en geünificeerde batch- en streamingverwerking.
Ter info: de vroegere versies van Azure Databricks gebruikten de verouderde “Hive-format”-tabellen, die inmiddels zijn vervangen door moderne Delta-tabellen. Over het geheel genomen zijn moderne Delta-tabellen betrouwbaarder en presteren ze beter dan legacy Hive-tabellen, waardoor ze de standaardkeuze zijn voor Databricks-workflows.
Hier is een samenvatting die helpt om het verschil tussen de twee te zien:
Syntaxisvarianten van CREATE TABLE
Het commando
CREATE TABLEin Databricks ondersteunt meerdere varianten voor verschillende gevallen. Elke variant heeft een eigen doel, met gerichte opties zoals bestandslocatie, klonen en metadatabeheer. Heb je een opfrisser nodig over Databricks SQL, lees dan onze tutorial Databricks SQL om onder meer te leren hoe je een Notebook gebruikt in een Databricks SQL-warehouse.Hieronder staan de belangrijkste stijlen met voorbeelden en toelichting.
CREATE TABLE [USING]
Deze syntaxis maakt een nieuwe tabel met een opgegeven schema en dataformaat. De volgende query maakt een tabel
sales_datadoor data te lezen uit Parquet-bestanden die op een specifieke locatie staan.CREATE TABLE (Hive-format)
Deze legacy syntaxis lijkt op het standaard SQL-commando
CREATE TABLE, gebruikt wanneer je een tabel definieert met metadata beheerd door Databricks, zonder externe bestanden te refereren. De onderstaande query maakt een Hive-stijl tabelhive_tablemet een vooraf gedefinieerd schema en extra metadataproperties.In de bovenstaande query voegt de clausule
COMMENTbeschrijvende metadata toe, terwijlTBLPROPERTIESaangepaste eigenschappen over de tabel opslaat.CREATE TABLE LIKE
Dit commando maakt een nieuwe tabel met het schema en de eigenschappen van een bestaande tabel. Gebruik deze syntaxis wanneer je de structuur van een bestaande tabel wilt repliceren zonder de data te kopiëren. Dit is handig voor testen of ontwikkeling.
CREATE TABLE CLONE
Met deze syntaxis kun je een nieuwe tabel maken door een bestaande Delta Lake-tabel te klonen, als deep of shallow clone. Gebruik dus
CREATE TABLE CLONEwanneer je een zelfstandige kopie van zowel data als metadata nodig hebt (deep clone), of alleen de metadata terwijl de oorspronkelijke data wordt gerefereerd (shallow clone). Denk hierbij aan versiebeheer of het maken van back-ups.Het volgende voorbeeld toont de queries voor het maken van deep en shallow clones in Databricks.
CREATE OR REPLACE TABLE
Deze gecombineerde opdracht vervangt een bestaande tabel door een nieuwe, met behoud van dezelfde tabelnaam, in één handeling. Gebruik deze syntaxis wanneer je een bestaande tabel volledig wilt overschrijven terwijl de naam behouden blijft. Dit is vooral handig om de structuur of data van een tabel te updaten zonder deze eerst te droppen.
De onderstaande query maakt of vervangt de tabel
salesmet een nieuw schema.Er zijn meer relevante clausules die je met de
CREATE TABLE-syntaxis in Databricks kunt gebruiken om je tabellen te beheren volgens specifieke vereisten. Hieronder staat een samenvatting van het gebruik van elk van deze clausules. Ik heb er al enkele als voorbeeld gebruikt, maar niet allemaal.IF NOT EXISTS: Voorkomt fouten door het aanmaken over te slaan als de tabel al bestaat.USING: Geeft het bestandsformaat op (bijv. Delta, Parquet, CSV).EXTERNAL: Verklaart een tabel waarvan de data buiten de beheerde opslag van Databricks staat.PARTITIONED BY: Definieert partities om grote datasets te optimaliseren.LOCATION: Verwijst naar de map met tabeldata.TBLPROPERTIES: Voegt metadata toe voor aangepaste tabelconfiguraties en optimalisaties.Stapsgewijze demonstraties
In deze sectie laat ik verschillende manieren zien om tabellen in Databricks te maken en te beheren, met beknopte voorbeelden en uitleg van belangrijke clausules. Bekijk onze tutorial Databricks Tutorial: 7 Must-know Concepts For Any Data Specialist om te leren hoe je SQL-commando’s uitvoert in het Databricks-platform.
Hoe maak je een lege tabel
Om een lege Delta-tabel te maken, definieer je het schemas met kolomnamen en datatypes. Gebruik de clausule
USING DELTAom het tabelformaat te bepalen enCOMMENTom beschrijvende metadata toe te voegen.Deze query maakt een lege Delta-tabel met de naam
employeesmet een vooraf gedefinieerd schema, inclusief kolommen voorid,name,departmentenhire_date.Hoe maak je een tabel op basis van bestaande data
Om een tabel te maken op basis van bestaande data, koppel je de tabel aan externe databestanden in formaten zoals CSV, Parquet of JSON. Je kunt de clausule
LOCATIONgebruiken om het bestandspad te koppelen enUSINGom het dataformaat te specificeren.De volgende query maakt bijvoorbeeld een tabel
sales_datadoor te verwijzen naar Parquet-bestanden op/mnt/data/sales_data/.Hoe maak je een table as select (CTAS)
Je kunt ook een tabel maken met een select door een query uit te voeren en het resultaat op te slaan. In dit scenario vult de clausule
AS SELECTde tabel met het queryresultaat.De onderstaande query maakt bijvoorbeeld een nieuwe tabel
high_value_salesdoor data uit de bestaande tabelsales_datate selecteren en te transformeren. Er wordt gefilterd op rijen waartotal_amountgroter is dan 1000, waarbij alleen de kolommensale_id,customer_identotal_amountbehouden blijven.Hoe maak je een externe tabel
Een externe tabel maken betekent verwijzen naar data die buiten de beheerde opslag van Databricks staat. Gebruik de clausule
LOCATIONom de externe datalocatie op te geven.De onderstaande query maakt een externe Delta-tabel
external_tabledoor te verwijzen naar data op/mnt/external_storage/external_table/.Hoe maak je een tabel LIKE
Om een tabel
LIKEte maken, dupliceer je het schema van een bestaande tabel zonder de data te kopiëren. In het onderstaande voorbeeld maakt de query een nieuwe tabelsales_backupmet hetzelfde schema als een bestaandesales-tabel.Hoe maak je TABLE CLONE
Je kunt een tabelcloon maken met de clausule
CLONEom een shallow of deep kopie van een Delta-tabel te maken voor back-ups of testen.In het volgende voorbeeld maakt de query een nieuwe tabel,
sales_shallow_clone,waarbij alleen de metadata (schema en tabeleigenschappen) wordt gekopieerd.Het onderstaande voorbeeld maakt een nieuwe tabel,
sales_deep_clone, maar kopieert zowel metadata als daadwerkelijke data.Hoe maak je een tijdelijke tabel (temp table)
Gebruik de clausule
TEMPORARYbij het maken van tijdelijke tabellen om ervoor te zorgen dat de tabel sessiespecifiek is.De onderstaande query maakt een tijdelijke tabel
temp_tabledie alleen in de huidige sessie bestaat. Er wordenid,nameensales_amountgeselecteerd uitsales_data, gefilterd op rijen waarregion = 'US'.Hoe vervang je een tabel
Je kunt de clausule
CREATE OR REPLACEgebruiken om de tabeldefinitie en -inhoud te vervangen. De onderstaande query vervangt de bestaande tabelupdated_tabledoor een nieuw schema en nieuwe data. De tabel wordt gedefinieerd met drie kolommen (id,name,total_sales).Geavanceerde onderwerpen
In deze sectie ga ik in op geavanceerde functies van Databricks-tabellen die functionaliteit, prestaties en security verbeteren.
Gegenereerde kolommen en identity-kolommen
Databricks ondersteunt identity-kolommen, die automatisch unieke waarden genereren voor elke nieuwe rij. Deze functie is handig voor surrogate keys in datawarehousing.
De onderstaande query maakt een tabel
employeesmet drie kolommen:id,nameendepartment. De kolomidis een identity-kolom die bij elke nieuwe rij automatisch oploopt.Deze andere query maakt een tabel
salesmet drie kolommen:sale_id,sale_dateensale_year. De kolomsale_yearis gegenereerd en wordt automatisch berekend op basis van de kolomsale_datemet de functieYEAR(sale_date).Partitioneren en clusteren
Partitioneren verdeelt data in kleinere brokken en verbetert zo de queryprestaties, terwijl clusteren data binnen partities ordent voor snellere reads.
De onderstaande query maakt bijvoorbeeld een gepartitioneerde tabel waarbij data wordt opgesplitst in partities op basis van de kolom
region, wat de queryprestaties bij filtering op regio verbetert.De onderstaande query optimaliseert de gepartitioneerde tabel door de data binnen elke partitie te clusteren op basis van de kolom
sales_amount. Dit maakt queries opsales_amountsneller door de indeling van data te verbeteren voor efficiënte reads. De clausuleZORDER BYwerkt binnen partities om leesprestaties te verbeteren door data binnen partities te clusteren, niet over partities heen.Kolommaskering en rijfilters
Kolommaskering en rijfilters beperken de zichtbaarheid van data op basis van gebruikersrollen of voorwaarden en beschermen zo gevoelige informatie.
De onderstaande query maakt bijvoorbeeld een gemaskeerde view
masked_tableop basis van de tabelemployees. De kolomsalarywordt geredigeerd (vervangen doorREDACTED) voor alle gebruikers behalve degenen met de rolmanager. DeCASE-instructie zorgt ervoor dat alleen managers het daadwerkelijke salaris zien, terwijl anderen de gemaskeerde data zienOp vergelijkbare wijze gebruikt de onderstaande query rijfilters om een view
filtered_tablete maken of te vervangen op basis van de tabelsales. De view filtert rijen zodat alleen data metregion = 'US'is opgenomen, waardoor de toegang wordt beperkt tot alleen verkoopdata uit de VS.Schema-evolutie
Databricks ondersteunt schema-evolutie via
CREATE OR REPLACE TABLEen tabelwijzigingen. Gebruik de instructieCREATE OR REPLACE TABLEom schema en data te overschrijven enALTER TABLEom het schema incrementeel te wijzigen zonder data te beïnvloeden.De onderstaande query vervangt de bestaande tabel
employeesdoor een nieuw schema, waarbij een nieuwe kolomhire_datewordt toegevoegd terwijl de data in Delta-formaat blijft opgeslagen.Deze andere query wijzigt de tabel
employeesdoor een nieuwe kolomsalarytoe te voegen aan het bestaande schema.Prestatieafstemming
Voor prestatieoptimalisatie van grootschalige tabellen kun je diverse tabeleigenschappen en technieken gebruiken, zoals auto-optimalisatie en Z-ordering.
In het volgende voorbeeld schakelt de query auto-optimalisatie in op de
delta_tabledoor eigenschappen te zetten die automatisch kleine bestanden compacteren en bestanden samenvoegen tijdens writes, wat de opslag efficiëntie verbetert.Op vergelijkbare wijze optimaliseert de onderstaande query de
delta_tabledoor data te clusteren opregionensales_dateom de queryprestaties te verbeteren, vooral bij filters op deze kolommen.Best practices en aandachtspunten
Hier zijn een paar zaken om rekening mee te houden bij het maken van tabellen in Databricks, zodat je het in één keer goed doet:
Veelvoorkomende valkuilen en troubleshooting
Nu we de best practices voor het beheren van tabellen in Databricks hebben besproken, behandel ik de meest voorkomende issues met Databricks-tabellen, hun typische foutmeldingen en de oplossingen.
Fouten bij niet-lege locaties bij gebruik van CREATE vs. CREATE OR REPLACE
Bij gebruik van
CREATE TABLEmet een opgegeven locatie (LOCATION-clausule), kun je een fout krijgen als de map niet leeg is, zoals:Deze fout treedt op omdat het commando
CREATE TABLEeen lege map verwacht voor de opgegeven locatie, maar bestaande bestanden of metadata conflicteren met deze vereiste.Om dit op te lossen gebruik je
CREATE OR REPLACE TABLEom bestaande data en metadata te overschrijven. Of maak de map handmatig schoon voordat jeCREATE TABLEgebruikt.Schemamismatch of problemen met bepaalde datatypes
Bij het inserten of opvragen van data kunnen schemamismatch-fouten optreden, zoals:
De fout kan worden veroorzaakt door een verschil tussen het tabelschema en inkomende datatypes. Ook niet-ondersteunde of ambigue datatypeconversies (bijv. complexe geneste types) kunnen een schemamismatch veroorzaken. Los dit op door schema-afdwinging toe te passen om het schema bij het aanmaken van de tabel te verifiëren of gebruik schema-afdwinging in Delta-tabellen.
Sta ook schema-evolutie toe bij het toevoegen van nieuwe kolommen of het wijzigen van datatypes.
Expliciet typecasten bij het inserten van data helpt ook bij het oplossen van dit soort fouten.
Beperkingen bij gelijktijdige transacties met identity-kolommen
Bij gebruik van identity-kolommen kun je issues tegenkomen met gelijktijdige transacties, zoals:
Identity-kolommen zijn stateful en kunnen conflicten krijgen wanneer meerdere transacties gelijktijdig data proberen te inserten. Los dit op door surrogate keys te gebruiken ter vervanging van identity-kolommen, met deterministische surrogate keys die worden gegenereerd met functies als
uuid()ofmonotonically_increasing_id().Je kunt ook Delta Lake’s
MERGEgebruiken voor complexe insert- en update-workflows zonder te vertrouwen op identity-kolommen.Conclusie
In Databricks is het commando
CREATE TABLEeen veelzijdig hulpmiddel voor het definiëren van datastructuren, het koppelen aan externe data en het afleiden van nieuwe datasets via queries. Het is belangrijk om de verschillende syntaxisopties te begrijpen voor het maken en beheren van tabellen in Databricks, afgestemd op jouw behoeften. Zoals je hebt gezien, zijn er meerdere methoden om tabellen te maken.Wil je de basisconcepten van Databricks verder verkennen, volg dan zeker DataCamps Introduction to Databricks-cursus om te leren over Databricks als datawarehousing-oplossing voor Business Intelligence (BI). Bekijk ook onze blogpost Databricks Certifications In 2025 om te leren hoe je Databricks-certificeringen behaalt, carrièremogelijkheden verkent en de juiste certificering kiest voor jouw doelen.