CREATE TABLE di Databricks: Panduan Lengkap untuk Membangun dan Mengelola Tabel
Pelajari cara membuat tabel di Databricks menggunakan perintah CREATE TABLE. Pelajari metode berbeda untuk berbagai skenario, termasuk cara membuat tabel dari data yang sudah ada dan cara CREATE TABLE as SELECT.
Tabel Databricks adalah komponen inti dari platform Databricks Lakehouse, yang dirancang untuk menangani penyimpanan dan pemrosesan data skala besar. Tabel ini memungkinkan kolaborasi lintas tim dengan menyatukan data terstruktur dan tidak terstruktur sekaligus mendukung beban kerja analitik.
Dalam artikel ini, saya akan memandu Anda melalui berbagai teknik untuk membuat tabel di Databricks menggunakan perintah CREATE TABLE dengan beberapa variasi sintaks untuk menyesuaikan beragam kasus penggunaan. Saya juga akan memberikan kiat praktik terbaik saat membangun dan mengelola tabel di Databricks agar efisien dan andal.
Saat kita mulai, saya sangat merekomendasikan membaca artikel blog DataCamp How to Learn Databricks: A Beginner’s Guide to the Unified Data Platform untuk membantu Anda memahami fitur inti dan aplikasi Databricks serta menyediakan jalur terstruktur untuk memulai pembelajaran. Saya juga menyarankan mengikuti kursus Introduction to Databricks kami. Bahkan jika Anda memiliki pengalaman SQL, Anda akan melihat bahwa beberapa hal tampak berbeda di platform Databricks Lakehouse. Latihan interaktif dalam kursus kami akan memandu Anda menjalankan kueri SQL serta fitur platform dan koneksi ke sistem eksternal.
Pengantar Tabel Databricks
Sebagai awal, perlu disebutkan bahwa tabel Databricks adalah himpunan data terstruktur yang memudahkan pengorganisasian dan akses data dalam lingkungan Databricks Lakehouse. Ada dua jenis:
Managed Tables: Tabel ini sepenuhnya dikendalikan oleh Databricks, yang mengelola baik penyimpanan maupun metadata. Saat tabel terkelola dibuat, Databricks menangani file data yang mendasarinya, dan jika tabel dihapus, data terkait juga ikut dihapus.
External Tables: Tabel eksternal mereferensikan data yang berada di luar Databricks, biasanya di penyimpanan cloud seperti AWS S3 atau Azure Blob Storage. Databricks mengelola metadata untuk tabel ini, tetapi data sebenarnya tetap utuh meskipun tabel di-drop. Ini juga dikenal sebagai tabel tidak terkelola (unmanaged).
Tabel di Databricks sering kali menggunakan Delta Lake secara baku karena fitur dan optimasinya yang canggih. Delta Lake menyediakan transaksi ACID, skalabilitas, peningkatan kinerja seperti optimasi seperti caching dan pengindeksan, serta proses data batch dan streaming yang terpadu.
Sebagai catatan, versi awal Azure Databricks menggunakan tabel “format Hive” lama, yang kini telah digantikan oleh tabel Delta modern. Secara keseluruhan, tabel Delta modern melampaui tabel Hive lama dalam hal keandalan dan kinerja, menjadikannya pilihan default untuk alur kerja Databricks.
Berikut ringkasan yang saya rasa dapat membantu Anda melihat perbedaannya:
Fitur
Tabel format Hive
Tabel Delta
Format data
Apache Hive (CSV, Parquet, ORC, dll.)
Delta Lake (berbasis Parquet dengan metadata)
Transaksi
Tidak ada dukungan ACID (eventual consistency)
Transaksi ACID penuh
Manajemen skema
Penegakan terbatas
Penegakan skema yang ketat
Optimasi kinerja
Perlu penyetelan manual
Optimasi bawaan (caching, kompaksi)
Time travel
Tidak ada dukungan bawaan untuk kueri historis
Mendukung time travel untuk mengkueri versi data sebelumnya
Konkurensi
Rentan konflik saat pembaruan atau penghapusan
Menangani operasi konkuren secara efisien
Variasi Sintaks CREATE TABLE
Perintah CREATE TABLE di Databricks mendukung banyak variasi untuk menyesuaikan beragam kasus. Setiap variasi memiliki tujuannya, dengan opsi khusus seperti lokasi file, kloning, dan manajemen metadata. Jika Anda perlu menyegarkan kembali pengetahuan tentang Databricks SQL, saya sarankan membaca tutorial Databricks SQL kami untuk mempelajari, antara lain, cara menggunakan Notebook di gudang Databricks SQL.
Di bawah ini adalah gaya sintaks utama beserta contoh dan penjelasannya.
CREATE TABLE [USING]
Sintaks ini membuat tabel baru dengan skema dan format data tertentu. Kueri berikut membuat tabel bernama sales_data dengan membaca data dari file Parquet yang disimpan di lokasi tertentu.
-- Create a table from files in a specific formatCREATETABLE sales_data
USING PARQUET
LOCATION '/mnt/data/sales';Didukung oleh
CREATE TABLE (format Hive)
Sintaks lama ini mirip dengan perintah SQL standar CREATE TABLE, digunakan saat mendefinisikan tabel dengan metadata yang dikelola oleh Databricks tanpa perlu mereferensikan file eksternal. Kueri di bawah membuat tabel bergaya Hive bernama hive_table dengan skema yang telah ditentukan dan properti metadata tambahan.
-- Hive-style table creation with schema definitionCREATETABLE hive_table (
id INT,
name STRING
)COMMENT'Hive format example'
TBLPROPERTIES ('created_by'='databricks');Didukung oleh
Pada kueri di atas, klausa COMMENT menambahkan metadata deskriptif sementara TBLPROPERTIES menyimpan properti kustom tentang tabel.
CREATE TABLE LIKE
Perintah ini membuat tabel baru dengan menggunakan skema dan properti dari tabel yang sudah ada. Gunakan sintaks ini saat Anda ingin mereplikasi struktur tabel yang ada tanpa menyalin datanya. Ini berguna untuk tujuan pengujian atau pengembangan.
-- Create a table with the same schema as another tableCREATETABLE new_table LIKE existing_table;Didukung oleh
CREATE TABLE CLONE
Sintaks ini memungkinkan Anda membuat tabel baru dengan mengkloning tabel Delta Lake yang sudah ada, baik sebagai klon mendalam (deep) maupun dangkal (shallow). Jadi, Anda sebaiknya menggunakan sintaks CREATE TABLE CLONE saat membutuhkan salinan mandiri dari data dan metadata tabel (deep clone) atau hanya metadata sambil mereferensikan data asli (shallow clone). Pertimbangkan ini untuk versi atau membuat cadangan.
Contoh berikut menunjukkan kueri untuk membuat tabel klon mendalam dan dangkal di Databricks.
-- Deep clone by defaultCREATETABLE cloned_table CLONE original_table;-- Shallow cloneCREATETABLE shallow_clone_table SHALLOW CLONE original_table;Didukung oleh
CREATE OR REPLACE TABLE
Perintah gabungan tunggal ini mengganti tabel yang ada dengan yang baru, mempertahankan nama tabel yang sama, dalam satu operasi. Gunakan sintaks ini saat Anda ingin menimpa sepenuhnya tabel yang ada sambil mempertahankan namanya. Ini sangat berguna untuk memperbarui struktur atau data tabel tanpa perlu drop terlebih dahulu.
Contoh kueri di bawah membuat atau mengganti tabel sales dengan skema baru.
-- Create or replace a sales table with a new schemaCREATEORREPLACETABLE sales (
sale_id INT,
amount FLOAT)USING DELTA
LOCATION '/mnt/delta/sales';Didukung oleh
Ada klausa relevan lain yang dapat Anda gunakan dengan sintaks CREATE TABLE di Databricks untuk mengelola tabel sesuai kebutuhan spesifik. Berikut ringkasan penggunaan masing-masing klausa ini. Saya telah menggunakan beberapa namun tidak semuanya sebagai contoh.
IF NOT EXISTS: Menghindari error dengan melewati pembuatan tabel jika sudah ada.
USING: Menentukan format file (misalnya Delta, Parquet, CSV).
EXTERNAL: Menyatakan tabel yang datanya berada di luar penyimpanan terkelola Databricks.
PARTITIONED BY: Mendefinisikan partisi untuk mengoptimalkan himpunan data besar.
LOCATION: Menunjuk ke direktori yang berisi data tabel.
TBLPROPERTIES: Menambahkan metadata untuk konfigurasi dan optimasi tabel kustom.
Demonstrasi Langkah demi Langkah
Pada bagian ini, saya akan mendemonstrasikan berbagai cara untuk membuat dan mengelola tabel di Databricks, dengan contoh ringkas dan penjelasan klausa kunci. Saya sarankan membaca tutorial Databricks Tutorial: 7 Must-know Concepts For Any Data Specialist untuk mempelajari cara menjalankan perintah SQL di platform Databricks.
Cara membuat tabel kosong
Untuk membuat tabel Delta kosong, definisikan skema tabel dengan nama kolom dan tipe data. Gunakan klausa USING DELTA untuk mendefinisikan format tabel dan COMMENT untuk menambahkan metadata deskriptif.
Kueri ini membuat tabel Delta kosong bernama employees dengan skema yang telah ditentukan, termasuk kolom id, name, department, dan 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';Didukung oleh
Cara membuat tabel dari data yang sudah ada
Untuk membuat tabel dari data yang sudah ada, tautkan tabel ke file data eksternal dalam format seperti CSV, Parquet, atau JSON. Anda dapat menggunakan klausa LOCATION untuk menautkan tabel ke jalur file dan klausa USING untuk menentukan format data.
Sebagai contoh, kueri berikut membuat tabel bernama sales_data dengan mereferensikan file Parquet yang disimpan di /mnt/data/sales_data/.
-- Create a table from Parquet files in a specified locationCREATETABLE sales_data
USING PARQUET
LOCATION '/mnt/data/sales_data/';Didukung oleh
Cara membuat table as select (CTAS)
Anda juga dapat membuat tabel as select dengan mengeksekusi kueri dan menyimpan hasilnya. Untuk skenario ini, klausa AS SELECT mengisikan tabel dengan hasil kueri.
Sebagai contoh, kueri di bawah ini membuat tabel baru bernama high_value_sales dengan memilih dan mentransformasi data dari tabel sales_data yang sudah ada. Kueri memfilter baris di mana total_amount lebih besar dari 1000, hanya mempertahankan kolom sale_id, customer_id, dan total_amount.
-- 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;Didukung oleh
Cara membuat tabel eksternal
Membuat tabel eksternal melibatkan perujukan data yang disimpan di luar penyimpanan terkelola Databricks. Anda sebaiknya menggunakan klausa LOCATION untuk menentukan lokasi data eksternal.
Kueri di bawah membuat tabel Delta eksternal bernama external_table dengan mereferensikan data yang disimpan di /mnt/external_storage/external_table/.
-- Create an external table referencing data outside Databricks storageCREATETABLE external_table
USING DELTA
LOCATION '/mnt/external_storage/external_table/';Didukung oleh
Cara membuat tabel LIKE
Untuk membuat tabel LIKE, duplikasi skema dari tabel yang sudah ada tanpa menyalin datanya. Pada contoh di bawah, kueri membuat tabel baru bernama sales_backup dengan skema yang sama seperti tabel sales yang sudah ada.
-- Create a new sales table with the same schema as an existing tableCREATETABLE sales_backup LIKE sales;Didukung oleh
Cara membuat TABLE CLONE
Anda dapat membuat klon tabel dengan menggunakan klausa CLONE untuk membuat salinan dangkal atau mendalam dari tabel Delta untuk cadangan atau pengujian.
Pada contoh berikut, kueri membuat tabel baru, sales_shallow_clone, yang menyalin hanya metadata (skema dan properti tabel).
-- Shallow clone: Copies only metadata (references original data)CREATETABLE sales_shallow_clone CLONE sales_data;Didukung oleh
Contoh di bawah membuat tabel baru, sales_deep_clone, namun menyalin baik metadata maupun data aktual.
-- Deep clone: Copies both metadata and actual dataCREATETABLE sales_deep_clone CLONE sales_data DEEP;Didukung oleh
Cara membuat tabel sementara (temp table)
Gunakan klausa TEMPORARY saat membuat tabel sementara untuk memastikan tabel bersifat khusus sesi.
Kueri di bawah membuat tabel sementara bernama temp_table yang hanya ada untuk sesi saat ini. Kueri memilih id, name, dan sales_amount dari sales_data, memfilter baris di mana 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';Didukung oleh
Cara mengganti tabel
Anda dapat menggunakan klausa CREATE OR REPLACE untuk mengganti definisi dan konten tabel. Kueri di bawah mengganti tabel updated_table yang ada dengan skema dan data baru. Kueri mendefinisikan tabel dengan tiga kolom (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/';Didukung oleh
Topik Lanjutan
Pada bagian ini, saya akan membahas fitur tabel Databricks tingkat lanjut yang meningkatkan fungsionalitas, kinerja, dan keamanan.
Kolom terbangkit (generated) dan kolom identitas
Databricks mendukung kolom identitas, yang secara otomatis menghasilkan nilai unik untuk setiap baris baru. Fitur ini berguna untuk membuat surrogate key dalam data warehousing.
Kueri di bawah membuat tabel employees dengan tiga kolom: id, name, dan department. Kolom id adalah kolom identitas yang bertambah otomatis pada setiap baris baru.
-- Identity column: auto-incremented valueCREATETABLE employees (
id BIGINT GENERATED ALWAYS ASIDENTITY,-- Auto-incremented column
name STRING,
department STRING
);Didukung oleh
Kueri lainnya ini membuat tabel sales dengan tiga kolom: sale_id, sale_date, dan sale_year. Kolom sale_year dibangkitkan dan dihitung otomatis berdasarkan kolom sale_date menggunakan fungsi 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);Didukung oleh
Partisi dan clustering
Partisi membagi data menjadi potongan yang lebih kecil, meningkatkan kinerja kueri, sementara clustering mengatur data dalam partisi untuk pembacaan yang lebih cepat.
Sebagai contoh, kueri di bawah membuat tabel berpartisi di mana data dipecah menjadi partisi berdasarkan kolom region, meningkatkan kinerja kueri saat memfilter berdasarkan region.
-- Partitioned tableCREATETABLE partitioned_table (
id BIGINT,
region STRING,
sales_amount DOUBLE)USING DELTA
PARTITIONED BY(region);-- Querying by region will be fasterDidukung oleh
Kueri di bawah mengoptimalkan tabel berpartisi dengan melakukan clustering data di dalam setiap partisi berdasarkan kolom sales_amount. Ini membuat kueri pada sales_amount lebih cepat dengan memperbaiki tata letak data untuk pembacaan yang efisien. Klausa ZORDER BY bekerja di dalam partisi untuk meningkatkan kinerja baca dengan melakukan clustering data dalam partisi, bukan lintas partisi.
-- Clustered tableOPTIMIZE partitioned_table
ZORDER BY(sales_amount);-- Clusters data within partitions for efficient readsDidukung oleh
Penyamaran kolom dan filter baris
Penyamaran kolom dan filter baris membatasi visibilitas data berdasarkan peran pengguna atau kondisi tertentu, melindungi informasi sensitif.
Sebagai contoh, kueri di bawah membuat masked view bernama masked_table berdasarkan tabel employees. Kolom salary disamarkan (diganti dengan REDACTED) untuk semua pengguna kecuali yang berperan sebagai manager. Pernyataan CASE memastikan bahwa hanya manajer yang dapat melihat gaji sebenarnya, sementara yang lain melihat data tersamarkan
-- Column masking: Redact sensitive dataCREATE MASKED VIEW masked_table ASSELECT
id,
name,CASEWHENcurrent_user()='manager'THEN salary
ELSE'REDACTED'ENDAS salary
FROM employees;Didukung oleh
Demikian pula, kueri di bawah menggunakan filter baris untuk membuat atau mengganti view bernama filtered_table berdasarkan tabel sales. View memfilter baris untuk hanya menyertakan data di mana region = 'US', membatasi akses hanya ke data penjualan dari AS.
-- Row filters: Fine-grained access controlCREATEORREPLACEVIEW filtered_table ASSELECT*FROM sales
WHERE region ='US';-- Limit data visibility to a specific regionDidukung oleh
Evolusi skema
Databricks mendukung evolusi skema melalui CREATE OR REPLACE TABLE dan perubahan tabel. Anda sebaiknya menggunakan pernyataan CREATE OR REPLACE TABLE untuk menimpa skema dan data serta pernyataan ALTER TABLE untuk memodifikasi skema secara bertahap tanpa memengaruhi data.
Kueri di bawah mengganti tabel employees yang ada dengan skema baru, menambahkan kolom hire_date baru sambil tetap menyimpan data dalam format Delta.
-- Schema evolution with CREATE OR REPLACE TABLECREATEORREPLACETABLE employees (
id BIGINT,
name STRING,
department STRING,
hire_date DATE-- New column added)USING DELTA;Didukung oleh
Kueri lainnya ini memodifikasi tabel employees dengan menambahkan kolom salary baru ke skema yang ada.
-- Altering a table schemaALTERTABLE employees ADDCOLUMNS(salary DOUBLE);Didukung oleh
Penyetelan kinerja
Untuk mengoptimalkan kinerja tabel berskala besar, Anda dapat memanfaatkan berbagai properti tabel dan teknik seperti auto-optimization dan Z-ordering.
Pada contoh berikut, kueri mengaktifkan auto-optimization pada delta_table dengan menetapkan properti untuk secara otomatis memadatkan file kecil dan menggabungkan file saat penulisan, meningkatkan efisiensi penyimpanan.
-- Enable automatic optimizationsALTERTABLE delta_table
SET TBLPROPERTIES ('delta.autoOptimize.optimizeWrite'='true',-- Automatically compact small files'delta.autoOptimize.autoCompact'='true'-- Automatically merge files);Didukung oleh
Demikian pula, kueri di bawah mengoptimalkan delta_table dengan melakukan clustering data berdasarkan region dan sales_date untuk meningkatkan kinerja kueri, terutama untuk filter pada kolom-kolom tersebut.
-- Perform clustering for faster query performanceOPTIMIZE delta_table
ZORDER BY(region, sales_date);-- Improves query efficiency for frequent filtersDidukung oleh
Praktik Terbaik dan Pertimbangan
Berikut beberapa hal yang perlu dipertimbangkan saat membuat tabel di Databricks, agar Anda melakukannya dengan benar:
Konvensi penamaan tabel: Selalu gunakan nama yang jelas dan konsisten untuk meningkatkan ketercapaian dan mengurangi kesalahan. Hindari karakter khusus atau nama yang terlalu panjang untuk mencegah masalah kompatibilitas.
Keamanan dan perizinan: Manfaatkan Unity Catalog untuk kontrol akses terpusat di seluruh aset data. Gunakan Access Control Lists (ACL) untuk membatasi siapa yang dapat melihat atau memodifikasi data. Juga, samarkan data sensitif dengan penyamaran kolom atau filter baris.
Pencadangan dan pemulihan: Andalkan riwayat versi Delta Lake untuk pemulihan dan time travel yang mudah. Pantau dan kelola retensi versi historis secara berkala untuk menyeimbangkan biaya penyimpanan dan kebutuhan pemulihan.
Tabel terkelola vs. eksternal: Penting juga untuk memahami perbedaan tabel terkelola dan eksternal. Pada tabel terkelola, Databricks menangani metadata dan data sekaligus. Ini ideal untuk skenario di mana Anda menginginkan kendali penuh atas siklus hidup data. Namun, pada tabel eksternal, data yang dirujuk disimpan di luar Databricks. Ini berguna untuk mempertahankan kendali atas data yang mungkin dibagikan lintas platform atau sistem.
Jebakan Umum dan Pemecahan Masalah
Setelah membahas praktik terbaik untuk mengelola tabel di Databricks, kini saya bahas masalah yang sering Anda temui pada tabel Databricks, pesan error yang khas, dan solusinya.
Error lokasi tidak kosong saat menggunakan CREATE vs. CREATE OR REPLACE
Saat menggunakan CREATE TABLE dengan lokasi tertentu (klausa LOCATION), jika direktori tidak kosong, Anda mungkin menemui error seperti:
Error: Cannot createtable because the location isnot empty.Didukung oleh
Error ini terjadi karena perintah CREATE TABLE mengharapkan direktori kosong untuk lokasi yang ditentukan, namun file atau metadata yang ada bertentangan dengan persyaratan ini.
Untuk mengatasinya, gunakan pernyataan CREATE OR REPLACE TABLE untuk menimpa data dan metadata yang ada. Atau, bersihkan direktori secara manual sebelum menggunakan pernyataan CREATE TABLE.
CREATEORREPLACETABLE delta_table
USING DELTA
LOCATION '/mnt/data/delta_table';-- Overwrites table and filesDidukung oleh
Ketidaksesuaian skema atau masalah dengan tipe data tertentu
Menyisipkan atau mengkueri data menghasilkan error ketidaksesuaian skema seperti:
Error: Schema mismatch: Expected columntype STRING, but found INT.Didukung oleh
Error ini bisa disebabkan oleh ketidaksesuaian antara skema tabel dan tipe data yang masuk. Juga, konversi tipe data yang tidak didukung atau ambigu (misalnya tipe bertingkat kompleks) dapat menyebabkan ketidaksesuaian skema. Untuk mengatasi error ini, terapkan penegakan skema guna memverifikasi skema saat pembuatan tabel atau gunakan penegakan skema di tabel Delta.
-- Enforce schema matching during table creationCREATETABLE schema_table (
id INT,
name STRING
)USING DELTA
TBLPROPERTIES ('delta.schema.enforce'='true');-- Enforces strict schemaDidukung oleh
Selain itu, Anda sebaiknya mengizinkan evolusi skema saat menambahkan kolom baru atau mengubah tipe data.
ALTERTABLE schema_table ADDCOLUMNS(new_column DOUBLE);Didukung oleh
Menggunakan casting tipe eksplisit saat menyisipkan data juga akan membantu menelusuri masalah jenis error ini.
INSERTINTO schema_table SELECT CAST(id ASINT), CAST(name AS STRING)FROM source_table;Didukung oleh
Batasan transaksi konkuren dengan kolom identitas
Saat menggunakan kolom identitas, Anda mungkin menemui masalah terkait transaksi konkuren, seperti:
Error: Concurrent transactions detected onidentitycolumntableDidukung oleh
Kolom identitas bersifat stateful dan dapat mengalami konflik saat beberapa transaksi mencoba menyisipkan data secara bersamaan. Untuk menelusuri error ini, gunakan surrogate key untuk mengganti kolom identitas dengan surrogate key deterministik yang dihasilkan menggunakan fungsi seperti uuid() atau monotonically_increasing_id().
CREATETABLE better_table ASSELECT
monotonically_increasing_id()AS id,-- Replaces identity column
name, department
FROM source_data;Didukung oleh
Anda juga dapat menggunakan MERGE Delta Lake untuk alur kerja insert dan update yang kompleks tanpa bergantung pada kolom identitas.
MERGEINTO target_table AS t
USING source_table AS s
ON t.id = s.id
WHENMATCHEDTHENUPDATESET*WHENNOTMATCHEDTHENINSERT*;Didukung oleh
Kesimpulan
Di Databricks, perintah CREATE TABLE adalah alat serbaguna untuk mendefinisikan struktur data, menautkan ke data eksternal, dan menurunkan himpunan data baru melalui kueri. Penting untuk memahami berbagai sintaks untuk membuat dan mengelola tabel di Databricks sesuai kebutuhan Anda. Seperti yang telah Anda lihat, ada beberapa metode pembuatan tabel yang dapat dipilih.
Jika Anda ingin mengeksplorasi konsep dasar Databricks, saya sangat merekomendasikan mengikuti kursus DataCamp Introduction to Databricks untuk mempelajari Databricks sebagai solusi data warehousing untuk Business Intelligence (BI). Saya juga menyarankan membaca artikel blog Databricks Certifications In 2025 kami untuk mempelajari cara memperoleh sertifikasi Databricks, mengeksplorasi manfaat karier, dan memilih sertifikasi yang tepat untuk tujuan karier Anda.
Penulis teknis Data Science dengan pengalaman langsung dalam analitik data, business intelligence, dan data science. Saya menulis konten praktis berfokus industri tentang SQL, Python, Power BI, Databricks, dan rekayasa data, yang berakar pada pekerjaan analitik dunia nyata. Tulisan saya menjembatani kedalaman teknis dan dampak bisnis, membantu para profesional mengubah data menjadi keputusan yang meyakinkan.
FAQ CREATE TABLE di Databricks
Apa tujuan perintah CREATE TABLE di Databricks?⌄
Perintah CREATE TABLE digunakan untuk mendefinisikan tabel baru di Databricks, memungkinkan pengguna menentukan skema tabel, format data, dan lokasi penyimpanan.
Apa perbedaan antara tabel terkelola dan tabel eksternal?⌄
Tabel terkelola menyimpan metadata dan data di Databricks, sedangkan tabel eksternal hanya menyimpan metadata, sementara data tetap berada di lokasi eksternal.
Apakah tabel eksternal sama dengan tabel tidak terkelola?⌄
Ya, tabel eksternal dan tabel tidak terkelola merujuk pada konsep yang sama di Databricks. Keduanya menyimpan metadata di Databricks tetapi menyimpan data sebenarnya di lokasi eksternal, sehingga Anda dapat mengelola siklus hidup data secara mandiri.
Apa itu shallow vs. deep clone?⌄
Klon dangkal menyalin metadata saja, sedangkan klon mendalam menduplikasi data dan metadata.
Apa itu tabel sementara?⌄
Tabel sementara hanya ada dalam sesi saat ini dan dihapus otomatis setelah sesi berakhir.
Apa itu evolusi skema di Databricks?⌄
Evolusi skema memungkinkan Anda memodifikasi skema tabel yang ada (misalnya menambah atau memodifikasi kolom) tanpa perlu membuat ulang seluruh tabel, yang sangat bermanfaat untuk tabel Delta.
Kuasai pertanyaan wawancara basis data, dari konsep SQL dasar hingga skenario desain sistem tingkat lanjut. Panduan mendalam ini mencakup semua yang Anda perlukan untuk sukses di wawancara DBMS dan meraih peran berikutnya.
Temukan alasan mengapa Anda sebaiknya (tidak) menggunakan spaghetti plot untuk menyampaikan ketidakpastian jalur prediksi badai serta dampaknya terhadap interpretasi.
Pelajari tentang platform Databricks Lakehouse dan bagaimana platform ini dapat memodernisasi arsitektur data serta meningkatkan proses manajemen data.
Tabel Databricks adalah komponen inti dari platform Databricks Lakehouse, yang dirancang untuk menangani penyimpanan dan pemrosesan data skala besar. Tabel ini memungkinkan kolaborasi lintas tim dengan menyatukan data terstruktur dan tidak terstruktur sekaligus mendukung beban kerja analitik.
Dalam artikel ini, saya akan memandu Anda melalui berbagai teknik untuk membuat tabel di Databricks menggunakan perintah
CREATE TABLEdengan beberapa variasi sintaks untuk menyesuaikan beragam kasus penggunaan. Saya juga akan memberikan kiat praktik terbaik saat membangun dan mengelola tabel di Databricks agar efisien dan andal.Saat kita mulai, saya sangat merekomendasikan membaca artikel blog DataCamp How to Learn Databricks: A Beginner’s Guide to the Unified Data Platform untuk membantu Anda memahami fitur inti dan aplikasi Databricks serta menyediakan jalur terstruktur untuk memulai pembelajaran. Saya juga menyarankan mengikuti kursus Introduction to Databricks kami. Bahkan jika Anda memiliki pengalaman SQL, Anda akan melihat bahwa beberapa hal tampak berbeda di platform Databricks Lakehouse. Latihan interaktif dalam kursus kami akan memandu Anda menjalankan kueri SQL serta fitur platform dan koneksi ke sistem eksternal.
Pengantar Tabel Databricks
Sebagai awal, perlu disebutkan bahwa tabel Databricks adalah himpunan data terstruktur yang memudahkan pengorganisasian dan akses data dalam lingkungan Databricks Lakehouse. Ada dua jenis:
Tabel di Databricks sering kali menggunakan Delta Lake secara baku karena fitur dan optimasinya yang canggih. Delta Lake menyediakan transaksi ACID, skalabilitas, peningkatan kinerja seperti optimasi seperti caching dan pengindeksan, serta proses data batch dan streaming yang terpadu.
Sebagai catatan, versi awal Azure Databricks menggunakan tabel “format Hive” lama, yang kini telah digantikan oleh tabel Delta modern. Secara keseluruhan, tabel Delta modern melampaui tabel Hive lama dalam hal keandalan dan kinerja, menjadikannya pilihan default untuk alur kerja Databricks.
Berikut ringkasan yang saya rasa dapat membantu Anda melihat perbedaannya:
Variasi Sintaks CREATE TABLE
Perintah
CREATE TABLEdi Databricks mendukung banyak variasi untuk menyesuaikan beragam kasus. Setiap variasi memiliki tujuannya, dengan opsi khusus seperti lokasi file, kloning, dan manajemen metadata. Jika Anda perlu menyegarkan kembali pengetahuan tentang Databricks SQL, saya sarankan membaca tutorial Databricks SQL kami untuk mempelajari, antara lain, cara menggunakan Notebook di gudang Databricks SQL.Di bawah ini adalah gaya sintaks utama beserta contoh dan penjelasannya.
CREATE TABLE [USING]
Sintaks ini membuat tabel baru dengan skema dan format data tertentu. Kueri berikut membuat tabel bernama
sales_datadengan membaca data dari file Parquet yang disimpan di lokasi tertentu.CREATE TABLE (format Hive)
Sintaks lama ini mirip dengan perintah SQL standar
CREATE TABLE, digunakan saat mendefinisikan tabel dengan metadata yang dikelola oleh Databricks tanpa perlu mereferensikan file eksternal. Kueri di bawah membuat tabel bergaya Hive bernamahive_tabledengan skema yang telah ditentukan dan properti metadata tambahan.Pada kueri di atas, klausa
COMMENTmenambahkan metadata deskriptif sementaraTBLPROPERTIESmenyimpan properti kustom tentang tabel.CREATE TABLE LIKE
Perintah ini membuat tabel baru dengan menggunakan skema dan properti dari tabel yang sudah ada. Gunakan sintaks ini saat Anda ingin mereplikasi struktur tabel yang ada tanpa menyalin datanya. Ini berguna untuk tujuan pengujian atau pengembangan.
CREATE TABLE CLONE
Sintaks ini memungkinkan Anda membuat tabel baru dengan mengkloning tabel Delta Lake yang sudah ada, baik sebagai klon mendalam (deep) maupun dangkal (shallow). Jadi, Anda sebaiknya menggunakan sintaks
CREATE TABLE CLONEsaat membutuhkan salinan mandiri dari data dan metadata tabel (deep clone) atau hanya metadata sambil mereferensikan data asli (shallow clone). Pertimbangkan ini untuk versi atau membuat cadangan.Contoh berikut menunjukkan kueri untuk membuat tabel klon mendalam dan dangkal di Databricks.
CREATE OR REPLACE TABLE
Perintah gabungan tunggal ini mengganti tabel yang ada dengan yang baru, mempertahankan nama tabel yang sama, dalam satu operasi. Gunakan sintaks ini saat Anda ingin menimpa sepenuhnya tabel yang ada sambil mempertahankan namanya. Ini sangat berguna untuk memperbarui struktur atau data tabel tanpa perlu drop terlebih dahulu.
Contoh kueri di bawah membuat atau mengganti tabel
salesdengan skema baru.Ada klausa relevan lain yang dapat Anda gunakan dengan sintaks
CREATE TABLEdi Databricks untuk mengelola tabel sesuai kebutuhan spesifik. Berikut ringkasan penggunaan masing-masing klausa ini. Saya telah menggunakan beberapa namun tidak semuanya sebagai contoh.IF NOT EXISTS: Menghindari error dengan melewati pembuatan tabel jika sudah ada.USING: Menentukan format file (misalnya Delta, Parquet, CSV).EXTERNAL: Menyatakan tabel yang datanya berada di luar penyimpanan terkelola Databricks.PARTITIONED BY: Mendefinisikan partisi untuk mengoptimalkan himpunan data besar.LOCATION: Menunjuk ke direktori yang berisi data tabel.TBLPROPERTIES: Menambahkan metadata untuk konfigurasi dan optimasi tabel kustom.Demonstrasi Langkah demi Langkah
Pada bagian ini, saya akan mendemonstrasikan berbagai cara untuk membuat dan mengelola tabel di Databricks, dengan contoh ringkas dan penjelasan klausa kunci. Saya sarankan membaca tutorial Databricks Tutorial: 7 Must-know Concepts For Any Data Specialist untuk mempelajari cara menjalankan perintah SQL di platform Databricks.
Cara membuat tabel kosong
Untuk membuat tabel Delta kosong, definisikan skema tabel dengan nama kolom dan tipe data. Gunakan klausa
USING DELTAuntuk mendefinisikan format tabel danCOMMENTuntuk menambahkan metadata deskriptif.Kueri ini membuat tabel Delta kosong bernama
employeesdengan skema yang telah ditentukan, termasuk kolomid,name,department, danhire_date.Cara membuat tabel dari data yang sudah ada
Untuk membuat tabel dari data yang sudah ada, tautkan tabel ke file data eksternal dalam format seperti CSV, Parquet, atau JSON. Anda dapat menggunakan klausa
LOCATIONuntuk menautkan tabel ke jalur file dan klausaUSINGuntuk menentukan format data.Sebagai contoh, kueri berikut membuat tabel bernama
sales_datadengan mereferensikan file Parquet yang disimpan di/mnt/data/sales_data/.Cara membuat table as select (CTAS)
Anda juga dapat membuat tabel as select dengan mengeksekusi kueri dan menyimpan hasilnya. Untuk skenario ini, klausa
AS SELECTmengisikan tabel dengan hasil kueri.Sebagai contoh, kueri di bawah ini membuat tabel baru bernama
high_value_salesdengan memilih dan mentransformasi data dari tabelsales_datayang sudah ada. Kueri memfilter baris di manatotal_amountlebih besar dari 1000, hanya mempertahankan kolomsale_id,customer_id, dantotal_amount.Cara membuat tabel eksternal
Membuat tabel eksternal melibatkan perujukan data yang disimpan di luar penyimpanan terkelola Databricks. Anda sebaiknya menggunakan klausa
LOCATIONuntuk menentukan lokasi data eksternal.Kueri di bawah membuat tabel Delta eksternal bernama
external_tabledengan mereferensikan data yang disimpan di/mnt/external_storage/external_table/.Cara membuat tabel LIKE
Untuk membuat tabel
LIKE, duplikasi skema dari tabel yang sudah ada tanpa menyalin datanya. Pada contoh di bawah, kueri membuat tabel baru bernamasales_backupdengan skema yang sama seperti tabelsalesyang sudah ada.Cara membuat TABLE CLONE
Anda dapat membuat klon tabel dengan menggunakan klausa
CLONEuntuk membuat salinan dangkal atau mendalam dari tabel Delta untuk cadangan atau pengujian.Pada contoh berikut, kueri membuat tabel baru,
sales_shallow_clone,yang menyalin hanya metadata (skema dan properti tabel).Contoh di bawah membuat tabel baru,
sales_deep_clone, namun menyalin baik metadata maupun data aktual.Cara membuat tabel sementara (temp table)
Gunakan klausa
TEMPORARYsaat membuat tabel sementara untuk memastikan tabel bersifat khusus sesi.Kueri di bawah membuat tabel sementara bernama
temp_tableyang hanya ada untuk sesi saat ini. Kueri memilihid,name, dansales_amountdarisales_data, memfilter baris di manaregion = 'US'.Cara mengganti tabel
Anda dapat menggunakan klausa
CREATE OR REPLACEuntuk mengganti definisi dan konten tabel. Kueri di bawah mengganti tabelupdated_tableyang ada dengan skema dan data baru. Kueri mendefinisikan tabel dengan tiga kolom (id,name,total_sales).Topik Lanjutan
Pada bagian ini, saya akan membahas fitur tabel Databricks tingkat lanjut yang meningkatkan fungsionalitas, kinerja, dan keamanan.
Kolom terbangkit (generated) dan kolom identitas
Databricks mendukung kolom identitas, yang secara otomatis menghasilkan nilai unik untuk setiap baris baru. Fitur ini berguna untuk membuat surrogate key dalam data warehousing.
Kueri di bawah membuat tabel
employeesdengan tiga kolom:id,name, dandepartment. Kolomidadalah kolom identitas yang bertambah otomatis pada setiap baris baru.Kueri lainnya ini membuat tabel
salesdengan tiga kolom:sale_id,sale_date, dansale_year. Kolomsale_yeardibangkitkan dan dihitung otomatis berdasarkan kolomsale_datemenggunakan fungsiYEAR(sale_date).Partisi dan clustering
Partisi membagi data menjadi potongan yang lebih kecil, meningkatkan kinerja kueri, sementara clustering mengatur data dalam partisi untuk pembacaan yang lebih cepat.
Sebagai contoh, kueri di bawah membuat tabel berpartisi di mana data dipecah menjadi partisi berdasarkan kolom
region, meningkatkan kinerja kueri saat memfilter berdasarkan region.Kueri di bawah mengoptimalkan tabel berpartisi dengan melakukan clustering data di dalam setiap partisi berdasarkan kolom
sales_amount. Ini membuat kueri padasales_amountlebih cepat dengan memperbaiki tata letak data untuk pembacaan yang efisien. KlausaZORDER BYbekerja di dalam partisi untuk meningkatkan kinerja baca dengan melakukan clustering data dalam partisi, bukan lintas partisi.Penyamaran kolom dan filter baris
Penyamaran kolom dan filter baris membatasi visibilitas data berdasarkan peran pengguna atau kondisi tertentu, melindungi informasi sensitif.
Sebagai contoh, kueri di bawah membuat masked view bernama
masked_tableberdasarkan tabelemployees. Kolomsalarydisamarkan (diganti denganREDACTED) untuk semua pengguna kecuali yang berperan sebagaimanager. PernyataanCASEmemastikan bahwa hanya manajer yang dapat melihat gaji sebenarnya, sementara yang lain melihat data tersamarkanDemikian pula, kueri di bawah menggunakan filter baris untuk membuat atau mengganti view bernama
filtered_tableberdasarkan tabelsales. View memfilter baris untuk hanya menyertakan data di manaregion = 'US', membatasi akses hanya ke data penjualan dari AS.Evolusi skema
Databricks mendukung evolusi skema melalui
CREATE OR REPLACE TABLEdan perubahan tabel. Anda sebaiknya menggunakan pernyataanCREATE OR REPLACE TABLEuntuk menimpa skema dan data serta pernyataanALTER TABLEuntuk memodifikasi skema secara bertahap tanpa memengaruhi data.Kueri di bawah mengganti tabel
employeesyang ada dengan skema baru, menambahkan kolomhire_datebaru sambil tetap menyimpan data dalam format Delta.Kueri lainnya ini memodifikasi tabel
employeesdengan menambahkan kolomsalarybaru ke skema yang ada.Penyetelan kinerja
Untuk mengoptimalkan kinerja tabel berskala besar, Anda dapat memanfaatkan berbagai properti tabel dan teknik seperti auto-optimization dan Z-ordering.
Pada contoh berikut, kueri mengaktifkan auto-optimization pada
delta_tabledengan menetapkan properti untuk secara otomatis memadatkan file kecil dan menggabungkan file saat penulisan, meningkatkan efisiensi penyimpanan.Demikian pula, kueri di bawah mengoptimalkan
delta_tabledengan melakukan clustering data berdasarkanregiondansales_dateuntuk meningkatkan kinerja kueri, terutama untuk filter pada kolom-kolom tersebut.Praktik Terbaik dan Pertimbangan
Berikut beberapa hal yang perlu dipertimbangkan saat membuat tabel di Databricks, agar Anda melakukannya dengan benar:
Jebakan Umum dan Pemecahan Masalah
Setelah membahas praktik terbaik untuk mengelola tabel di Databricks, kini saya bahas masalah yang sering Anda temui pada tabel Databricks, pesan error yang khas, dan solusinya.
Error lokasi tidak kosong saat menggunakan CREATE vs. CREATE OR REPLACE
Saat menggunakan
CREATE TABLEdengan lokasi tertentu (klausaLOCATION), jika direktori tidak kosong, Anda mungkin menemui error seperti:Error ini terjadi karena perintah
CREATE TABLEmengharapkan direktori kosong untuk lokasi yang ditentukan, namun file atau metadata yang ada bertentangan dengan persyaratan ini.Untuk mengatasinya, gunakan pernyataan
CREATE OR REPLACE TABLEuntuk menimpa data dan metadata yang ada. Atau, bersihkan direktori secara manual sebelum menggunakan pernyataanCREATE TABLE.Ketidaksesuaian skema atau masalah dengan tipe data tertentu
Menyisipkan atau mengkueri data menghasilkan error ketidaksesuaian skema seperti:
Error ini bisa disebabkan oleh ketidaksesuaian antara skema tabel dan tipe data yang masuk. Juga, konversi tipe data yang tidak didukung atau ambigu (misalnya tipe bertingkat kompleks) dapat menyebabkan ketidaksesuaian skema. Untuk mengatasi error ini, terapkan penegakan skema guna memverifikasi skema saat pembuatan tabel atau gunakan penegakan skema di tabel Delta.
Selain itu, Anda sebaiknya mengizinkan evolusi skema saat menambahkan kolom baru atau mengubah tipe data.
Menggunakan casting tipe eksplisit saat menyisipkan data juga akan membantu menelusuri masalah jenis error ini.
Batasan transaksi konkuren dengan kolom identitas
Saat menggunakan kolom identitas, Anda mungkin menemui masalah terkait transaksi konkuren, seperti:
Kolom identitas bersifat stateful dan dapat mengalami konflik saat beberapa transaksi mencoba menyisipkan data secara bersamaan. Untuk menelusuri error ini, gunakan surrogate key untuk mengganti kolom identitas dengan surrogate key deterministik yang dihasilkan menggunakan fungsi seperti
uuid()ataumonotonically_increasing_id().Anda juga dapat menggunakan
MERGEDelta Lake untuk alur kerja insert dan update yang kompleks tanpa bergantung pada kolom identitas.Kesimpulan
Di Databricks, perintah
CREATE TABLEadalah alat serbaguna untuk mendefinisikan struktur data, menautkan ke data eksternal, dan menurunkan himpunan data baru melalui kueri. Penting untuk memahami berbagai sintaks untuk membuat dan mengelola tabel di Databricks sesuai kebutuhan Anda. Seperti yang telah Anda lihat, ada beberapa metode pembuatan tabel yang dapat dipilih.Jika Anda ingin mengeksplorasi konsep dasar Databricks, saya sangat merekomendasikan mengikuti kursus DataCamp Introduction to Databricks untuk mempelajari Databricks sebagai solusi data warehousing untuk Business Intelligence (BI). Saya juga menyarankan membaca artikel blog Databricks Certifications In 2025 kami untuk mempelajari cara memperoleh sertifikasi Databricks, mengeksplorasi manfaat karier, dan memilih sertifikasi yang tepat untuk tujuan karier Anda.