Lewati ke konten utama

Membuat Tabel di Snowflake: Jenis, Contoh & Praktik Terbaik

Pelajari cara membuat berbagai jenis tabel di Snowflake, termasuk tabel permanen, sementara, eksternal, dan dinamis. Termasuk contoh langkah demi langkah dan praktik terbaik.
· 9 mnt Baca

Jelajahi bersama AI

Snowflake adalah platform gudang data berbasis cloud yang andal untuk membantu organisasi menyimpan, mengelola, dan menganalisis data secara efisien. Berbeda dengan gudang data tradisional yang memerlukan penyiapan perangkat keras yang kompleks, Snowflake berjalan sepenuhnya di cloud, sehingga memudahkan bisnis untuk meningkatkan skala operasi data sesuai kebutuhan.

Membuat tabel di Snowflake adalah keterampilan mendasar yang menjadi fondasi manajemen data. Tabel adalah tempat Anda menyimpan data terstruktur, sehingga memungkinkan menjalankan kueri, menghasilkan laporan, dan mendapatkan wawasan berharga dari informasi Anda. Baik Anda bekerja dengan data pelanggan, angka penjualan, atau hasil analitik, memahami cara membuat dan mengelola tabel di Snowflake itu penting.

Dalam tutorial ini, Anda akan mempelajari semua yang perlu diketahui tentang pembuatan tabel di Snowflake. Kami akan membahas berbagai jenis tabel, menunjukkan contoh langkah demi langkah, dan membagikan praktik terbaik untuk desain tabel. Pada akhirnya, Anda akan percaya diri dalam memilih jenis tabel yang tepat untuk kebutuhan Anda dan membuat tabel yang mengikuti standar industri untuk kinerja dan kemudahan pemeliharaan.

Memahami Jenis Tabel di Snowflake

Sebelum kita masuk ke contoh kode tentang cara membuat tabel, mari jelajahi berbagai jenis tabel di Snowflake karena masing-masing memiliki tujuan yang unik serta karakteristik berbeda terkait persistensi data, aksesibilitas, dan lokasi penyimpanan.

Tabel permanen

Tabel permanen adalah jenis tabel standar di Snowflake. Tabel ini bertahan hingga dihapus secara eksplisit dan disimpan di penyimpanan internal Snowflake. Tabel ini ideal untuk menyimpan data bisnis inti yang perlu dipertahankan jangka panjang dan diakses lintas banyak sesi. Data dalam tabel permanen tetap utuh antar sesi dan dapat diakses oleh pengguna berwenang mana pun.

Tabel sementara

Tabel sementara adalah tabel khusus sesi yang otomatis dihapus saat sesi Anda berakhir. Tabel ini berfungsi sebagai ruang kerja untuk langkah pemrosesan intermediate, membantu mengatur transformasi data yang kompleks tanpa membuat penyimpanan permanen Anda berantakan. Data dalam tabel sementara hanya terlihat oleh sesi yang membuatnya dan dibersihkan secara otomatis saat sesi ditutup.

Tabel eksternal

Tabel eksternal menyediakan cara untuk mengkueri data yang berada di luar penyimpanan Snowflake. Tabel ini bertindak sebagai lapisan metadata yang memetakan ke data di lokasi penyimpanan eksternal seperti AWS S3 atau Azure Blob Storage. Alih-alih mengimpor data, tabel eksternal membuat referensi ke data tersebut, memungkinkan Anda mengkueri data eksternal secara langsung. Pendekatan ini sangat berguna saat bekerja dengan data yang perlu tetap berada di lokasi sumbernya atau memerlukan pembaruan berkala dari sistem eksternal.

Tabel dinamis

Tabel dinamis adalah fitur canggih di Snowflake yang secara otomatis mempertahankan hasil kueri yang selalu mutakhir. Tabel ini bertindak seperti materialized view yang menyegarkan diri secara otomatis berdasarkan perubahan pada tabel sumber di bawahnya. Saat Anda membuat tabel dinamis, Anda mendefinisikannya menggunakan pernyataan SELECT, dan Snowflake secara otomatis mengelola proses penyegaran untuk memastikan data tetap terbaru.

Tabel dinamis sangat berguna untuk:

  • Membangun dasbor real-time yang memerlukan data segar tanpa penyegaran manual
  • Mempertahankan versi teragregasi atau tertransformasi dari data sumber yang diperbarui secara otomatis
  • Menciptakan model data yang saling bergantung di mana tabel hilir perlu mencerminkan perubahan hulu
  • Mengoptimalkan performa kueri dengan pra-komputasi transformasi kompleks

Fitur utama tabel dinamis meliputi:

  • Interval penyegaran yang dapat dikonfigurasi (dari 1 menit hingga 24 jam)
  • Pelacakan ketergantungan sumber secara otomatis
  • Pengaturan target lag time untuk mengontrol kesegaran data
  • Pemrosesan inkremental untuk meminimalkan biaya komputasi
  • Kemampuan pemantauan dan optimalisasi bawaan

Setiap jenis tabel memiliki tujuan berbeda dalam arsitektur data. Tabel permanen membentuk fondasi gudang data Anda, tabel sementara memfasilitasi alur kerja pemrosesan data, tabel eksternal memungkinkan integrasi dengan sumber data eksternal, dan tabel dinamis menyediakan transformasi data otomatis secara real-time.

Membandingkan tabel Snowflake 

Pada tabel di bawah, kami merangkum berbagai jenis tabel Snowflake sebagai panduan referensi cepat:

Jenis Tabel

Persistensi

Visibilitas

Terbaik Untuk

Permanen

Hingga dihapus

Sesi mana pun

Data bisnis inti

Sementara

Khusus sesi

Sesi yang sama

Transformasi intermediate

Eksternal

Penyimpanan eksternal

Sesi mana pun

Mengkueri data eksternal (mis., S3)

Dinamis

Penyegaran otomatis

Sesi mana pun

Analitik real-time

Membuat Tabel: Menyiapkan Snowflake

Sebelum menjalankan contoh dalam tutorial ini, Anda memerlukan akses ke lingkungan Snowflake. Berikut beberapa cara untuk terhubung dan menjalankan perintah Snowflake:

1. Antarmuka web Snowflake (Snowsight)

Cara termudah untuk memulai adalah melalui antarmuka web Snowflake:

  1. Masuk ke akun Snowflake Anda
  2. Buka Worksheets
  3. Buat worksheet baru untuk menjalankan perintah SQL

2. Snowflake CLI (alat baris perintah)

Untuk akses baris perintah:

  1. Instal Snowflake CLI
  2. Terhubung menggunakan:
snowsql -a <account> -u <username> -d <database> -w <warehouse>

Anda dapat menemukan kredensial akun Snowflake Anda di tempat berikut:

  1. URL Akun: Lihat pada email sambutan atau pengaturan akun Anda
  2. Nama pengguna: Diberikan saat penyiapan akun
  3. Database: Dibuat atau ditetapkan oleh admin Anda
  4. Warehouse: Dibuat atau ditetapkan oleh admin Anda

Demi keamanan, jangan pernah membagikan atau meng-commit kredensial ini. Simpan dengan aman di variabel lingkungan atau berkas konfigurasi.

3. Koneksi Python

Jika Anda menggunakan Python, Anda dapat menggunakan pustaka snowflake-connector-python:

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()")

Catatan Keamanan Penting:

  • Jangan pernah menyimpan kredensial langsung di kode Anda
  • Gunakan variabel lingkungan atau pengelolaan secret yang aman
  • Untuk produksi, pertimbangkan menggunakan autentikasi key pair
  • Ikuti kebijakan keamanan organisasi Anda

Sekarang penyiapan sudah siap, mari kita buat tabel!

Membuat Tabel di Snowflake: Contoh Langkah demi Langkah

Contoh 1: Membuat tabel Snowflake sederhana

Mari buat tabel untuk menyimpan informasi pelanggan. Contoh ini menunjukkan pembuatan tabel dasar dengan berbagai tipe data dan constraint.

-- Create a permanent table for customer data
CREATE OR REPLACE TABLE customers (
   customer_id INTEGER PRIMARY KEY,
   first_name VARCHAR(50) NOT NULL,
   last_name VARCHAR(50) NOT NULL,
   email VARCHAR(100) UNIQUE,
   date_of_birth DATE,
   created_at TIMESTAMP_NTZ DEFAULT CURRENT_TIMESTAMP()
);

Poin penting dari contoh ini:

  • CREATE OR REPLACE TABLE - Membuat tabel baru atau menggantinya jika sudah ada
  • PRIMARY KEY - Memastikan identifikasi unik untuk setiap rekaman
  • NOT NULL - Mencegah nilai null pada kolom yang wajib diisi
  • UNIQUE - Memastikan alamat email tidak duplikat
  • TIMESTAMP_NTZ - Timestamp tanpa zona waktu
  • DEFAULT - Secara otomatis mengisi cap waktu pembuatan

Contoh 2: Membuat tabel sementara

Tabel sementara sangat cocok untuk pemrosesan data intermediate. Berikut contoh yang membuat tabel sementara untuk menganalisis pesanan pelanggan:

-- Create a temporary table for order analysis
CREATE OR REPLACE TEMPORARY TABLE temp_order_analysis (
   order_date DATE,
   total_orders INTEGER,
   total_revenue DECIMAL(18,2)
)
AS
SELECT
   DATE_TRUNC('day', order_date) as order_date,
   COUNT(*) as total_orders,
   SUM(order_amount) as total_revenue
FROM orders
GROUP BY 1;

Poin penting tentang tabel sementara:

  • Kata kunci TEMPORARY menunjukkan bahwa tabel ini hanya ada dalam sesi saat ini. Artinya pengguna lain tidak dapat melihat atau mengakses tabel ini.
  • Menggunakan CREATE TABLE AS (CTAS) memungkinkan Anda membuat dan mengisi tabel dalam satu langkah dengan menggabungkan definisi tabel dengan pernyataan SELECT.
  • Tabel sementara otomatis dihapus saat sesi Anda berakhir, membantu menjaga database tetap bersih tanpa pembersihan manual.
  • Tabel sementara berguna untuk menyimpan hasil intermediate selama transformasi data yang kompleks atau alur kerja analisis.

Contoh 3: Membuat tabel eksternal di Snowflake 

Contoh ini menunjukkan cara membuat tabel eksternal yang membaca data dari berkas yang disimpan di bucket penyimpanan cloud:

-- Create file format for CSV files
CREATE OR REPLACE FILE FORMAT my_csv_format
   TYPE = CSV
   FIELD_DELIMITER = ','
   SKIP_HEADER = 1
   NULL_IF = ('NULL', 'null');

-- Create external stage
CREATE OR REPLACE STAGE my_external_stage
   URL = 's3://my-bucket/data/'
   CREDENTIALS = (AWS_KEY_ID = 'xxx' AWS_SECRET_KEY = 'xxx');

-- Create external table
CREATE OR REPLACE EXTERNAL TABLE ext_customer_data (
   customer_id VARCHAR AS (VALUE:c1::VARCHAR),
   purchase_date DATE AS (VALUE:c2::DATE),
   product_id VARCHAR AS (VALUE:c3::VARCHAR),
   amount DECIMAL(10,2) AS (VALUE:c4::DECIMAL(10,2))
)
WITH LOCATION = @my_external_stage/customers/
FILE_FORMAT = my_csv_format
PATTERN = '.*[.]csv';

Pernyataan pertama mendefinisikan spesifikasi format berkas yang memberi tahu Snowflake cara mengurai berkas CSV eksternal, termasuk pemisah kolom, penanganan header, dan representasi nilai NULL.

Pernyataan kedua membuat objek stage yang membangun koneksi ke penyimpanan cloud eksternal (dalam hal ini, S3) menggunakan kredensial yang diberikan. Stage ini bertindak sebagai titik referensi untuk mengakses berkas data eksternal.

Pernyataan ketiga membuat tabel eksternal itu sendiri, menggunakan definisi kolom dengan klausa AS untuk secara eksplisit mengubah data string mentah dari CSV menjadi tipe data Snowflake yang tepat. Klausa WITH LOCATION menunjuk ke jalur spesifik dalam stage tempat berkas berada.

Parameter PATTERN memfilter berkas mana yang harus disertakan menggunakan pencocokan regex, memastikan hanya berkas CSV yang diproses.

Prasyarat untuk menjalankan kueri pembuatan tabel eksternal ini:

1. Akses ke akun Snowflake dengan izin untuk:

  • Membuat file format
  • Membuat stage
  • Membuat tabel eksternal

2. Kredensial AWS yang valid (AWS_KEY_ID dan AWS_SECRET_KEY) dengan izin untuk:

  • Membaca dari bucket S3
  • Melihat daftar objek dalam bucket

3. Persyaratan data sumber:

  • Berkas CSV yang disimpan di bucket S3
  • Berkas mengikuti format konsisten dengan empat kolom
  • Data kolom sesuai tipe yang ditentukan:
  • customer_id sebagai string
  • purchase_date sebagai date
  • product_id sebagai string
  • amount sebagai decimal

4. Konektivitas jaringan:

  • Akses jaringan ke AWS S3
  • Pengaturan security group dan firewall yang tepat

5. Sumber daya komputasi:

  • Warehouse aktif dengan kapasitas komputasi yang memadai
  • Kredit/kuota pengguna yang cukup

Contoh 4: Membuat tabel dinamis

Contoh ini membuat tabel dinamis yang mempertahankan ringkasan data penjualan yang selalu mutakhir:

-- Create a dynamic table for real-time sales analytics
CREATE OR REPLACE DYNAMIC TABLE daily_sales_summary
TARGET_LAG = '20 minutes'
WAREHOUSE = 'COMPUTE_WH'
AS
SELECT
   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
GROUP BY 1, 2;

Parameter TARGET_LAG sebesar '20 minutes' mendefinisikan jeda maksimum yang diizinkan antara pembaruan pada tabel sumber dan saat perubahan tersebut tercermin di tabel dinamis. Ini memastikan kesegaran data dalam jendela waktu tersebut.

Parameter WAREHOUSE menentukan sumber daya komputasi (dalam hal ini COMPUTE_WH) yang akan digunakan untuk menyegarkan tabel dinamis secara berkala. Warehouse ini harus memiliki kapasitas yang memadai untuk menangani operasi penyegaran.

Tabel dinamis secara otomatis memperbarui isinya ketika tabel sales_transactions yang mendasarinya berubah tanpa memerlukan intervensi manual. Ini menyediakan kemampuan analitik hampir real-time.

Dengan mempertahankan ringkasan penjualan harian yang telah diagregasi berdasarkan kategori produk, tabel dinamis memungkinkan kueri lebih cepat dibanding menghitung metrik tersebut saat dibutuhkan dari data transaksi mentah. Ini meningkatkan performa kueri untuk keperluan pelaporan dan analitik.

Setiap contoh ini menunjukkan skenario pembuatan tabel berbeda yang mungkin Anda temui dalam aplikasi dunia nyata. Ingat untuk menyesuaikan nama kolom, tipe data, dan parameter lain sesuai kebutuhan spesifik Anda.

Praktik Terbaik untuk Membuat Tabel di Snowflake

Mari jelajahi beberapa praktik terbaik yang perlu diikuti saat membuat tabel di Snowflake untuk memastikan kemudahan pemeliharaan, performa, dan kualitas data.

1. Konvensi penamaan

Selalu gunakan nama yang jelas dan konsisten untuk tabel dan kolom Anda:

-- Good naming examples
CREATE TABLE customer_orders (
   order_id INTEGER,
   customer_email VARCHAR,
   order_date DATE
);

-- Bad naming examples
CREATE TABLE Orders123 (
   ID INTEGER,
   email VARCHAR,
   dt DATE
);

Tips penamaan:

  • Gunakan huruf kecil dan garis bawah (snake_case)
  • Hindari spasi dan karakter khusus
  • Buat nama deskriptif namun tidak terlalu panjang
  • Gunakan bentuk tunggal untuk nama tabel (customer bukan customers)
  • Tambahkan prefiks untuk lingkungan yang berbeda (dev_, test_, prod_)

2. Tipe data kolom

Pilih tipe data yang tepat untuk menghemat penyimpanan dan meningkatkan performa:

-- Good data type choices
CREATE TABLE 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
);

Tipe data umum untuk digunakan:

  • NUMBER/INTEGER: Untuk bilangan bulat
  • DECIMAL/NUMERIC: Untuk bilangan desimal presisi (terutama uang)
  • VARCHAR: Untuk teks dengan panjang maksimum yang diketahui
  • TEXT: Untuk teks dengan panjang tak terbatas
  • TIMESTAMP_NTZ: Untuk tanggal dan waktu (tanpa zona waktu)
  • BOOLEAN: Untuk nilai benar/salah

3. Menggunakan clustering key

Tambahkan clustering key untuk meningkatkan performa kueri:

CREATE TABLE sales (
   sale_date DATE,
   store_id INTEGER,
   product_id INTEGER,
   amount DECIMAL(10,2)
)
CLUSTER BY (sale_date, store_id);

Kapan menggunakan clustering:

  • Untuk tabel besar (lebih dari 1 juta baris)
  • Pada kolom yang sering Anda filter atau gabungkan
  • Biasanya kolom tanggal ditambah 1–2 kolom lain
  • Jangan melakukan clustering pada kolom dengan terlalu banyak nilai unik

4. Menambahkan constraint tabel

Gunakan constraint untuk menjaga kebersihan data Anda:

CREATE TABLE users (
   user_id INTEGER PRIMARY KEY,  -- Ensures unique IDs
   email VARCHAR(255) UNIQUE,    -- No duplicate emails
   username VARCHAR(50) NOT NULL, -- Must have a value
   age INTEGER CHECK (age >= 18) -- Must be 18 or older
);

Constraint penting:

  • PRIMARY KEY: Untuk pengidentifikasi unik
  • FOREIGN KEY: Untuk menautkan tabel satu sama lain
  • NOT NULL: Untuk kolom wajib
  • UNIQUE: Untuk kolom yang tidak boleh duplikat
  • CHECK: Untuk validasi data sederhana

5. Kesalahan umum yang harus dihindari

Jangan lakukan ini:

-- Bad practice: No primary key
CREATE TABLE orders (
   date VARCHAR,           -- Wrong data type for dates
   amount VARCHAR(10),     -- Wrong data type for numbers
   status text            -- Inconsistent case with other columns
);

Lakukan ini sebagai gantinya:

-- Good practice
CREATE TABLE orders (
   order_id INTEGER PRIMARY KEY,
   order_date DATE,
   amount DECIMAL(10,2),
   status VARCHAR(20)
);

Versi yang ditingkatkan memastikan integritas data dengan primary key, menggunakan tipe data yang benar untuk tanggal dan angka agar memungkinkan pemfilteran dan perhitungan yang efisien, serta mempertahankan konsistensi definisi kolom untuk keterbacaan dan kompatibilitas yang lebih baik.

6. Tips performa

Mengoptimalkan performa tabel di Snowflake dapat secara signifikan meningkatkan kecepatan kueri dan mengurangi biaya penyimpanan. Ikuti praktik terbaik berikut untuk memastikan tabel Anda efisien dan dapat diskalakan.

  • Buat tabel yang lebih kecil alih-alih satu tabel yang sangat besar
  • Tambahkan deskripsi kolom menggunakan COMMENT
  • Siapkan aturan pembersihan data otomatis
  • Uji desain tabel Anda dengan data nyata
  • Pantau penggunaan tabel dan sesuaikan sesuai kebutuhan

7. Praktik terbaik keamanan

Langkah keamanan yang tepat sangat penting untuk melindungi data sensitif dan mengontrol akses. Terapkan praktik terbaik ini untuk menjaga lingkungan Snowflake Anda dari akses tidak sah dan pelanggaran data.

  • Selalu tetapkan izin akses yang tepat
  • Gunakan keamanan tingkat baris bila diperlukan
  • Enkripsi kolom sensitif
  • Lacak siapa yang dapat mengakses apa
  • Tinjau pola akses secara berkala

Ingat: Tabel yang dirancang dengan baik akan memudahkan pekerjaan Anda ke depannya. Luangkan waktu untuk merencanakan struktur tabel sebelum membuatnya!

Kesimpulan

Dalam tutorial ini, kami telah membahas hal-hal penting dalam membuat tabel di Snowflake, termasuk:

  • Jenis tabel yang berbeda (permanen, sementara, eksternal, dan dinamis)
  • Contoh langkah demi langkah untuk membuat masing-masing jenis
  • Praktik terbaik untuk desain dan manajemen tabel
  • Jebakan umum yang harus dihindari

Pengetahuan ini menjadi fondasi untuk membangun solusi data yang efisien dan dapat diskalakan di Snowflake.

Langkah Berikutnya

Untuk memperdalam keahlian Snowflake Anda, lihat sumber daya berharga berikut:

1. Kursus interaktif:

2. Tutorial komprehensif:

3. Sumber daya karier:

Jangan lupa, cara terbaik untuk belajar adalah dengan praktik. Mulailah membuat tabel, bereksperimen dengan berbagai jenis, dan bangun proyek nyata. Saat menghadapi tantangan, rujuk kembali ke sumber daya ini dan terus jelajahi fitur Snowflake yang baru.

Snowflake Create Table FAQs

Apa saja jenis tabel di Snowflake?

Snowflake mendukung empat jenis tabel utama: tabel permanen untuk penyimpanan data jangka panjang, tabel sementara untuk penggunaan khusus sesi, tabel eksternal untuk mengkueri sumber data eksternal, dan tabel dinamis untuk pemeliharaan hasil kueri secara otomatis.

Bagaimana cara membuat tabel dasar di Snowflake?

Gunakan perintah CREATE TABLE dengan skema yang Anda inginkan. Contoh: "CREATE TABLE customers (customer_id INTEGER PRIMARY KEY, first_name VARCHAR(50), last_name VARCHAR(50))". Sertakan tipe data dan constraint yang sesuai.

Apa itu tabel dinamis di Snowflake dan kapan harus menggunakannya?

Tabel dinamis secara otomatis mempertahankan hasil kueri yang selalu mutakhir, mirip dengan materialized view. Tabel ini ideal untuk dasbor real-time, transformasi data otomatis, dan mempertahankan data teragregasi yang memerlukan pembaruan sering.

Apa praktik terbaik untuk penamaan tabel di Snowflake?

Gunakan huruf kecil dengan garis bawah (snake_case), hindari spasi dan karakter khusus, buat nama deskriptif namun ringkas, gunakan bentuk tunggal untuk nama tabel, dan pertimbangkan penambahan prefiks lingkungan (dev_, test_, prod_).

Bagaimana cara meningkatkan performa tabel di Snowflake?

Tingkatkan performa dengan menggunakan clustering key yang sesuai, memilih tipe data yang benar, menetapkan constraint yang tepat, membuat tabel yang lebih kecil dan terfokus alih-alih yang besar, serta secara berkala memantau pola penggunaan tabel.

Bexruz (Bex) Tuychiev

Penulis

Bexruz (Bex) Tuychiev

Saya adalah kreator konten data science dengan pengalaman lebih dari 2 tahun dan salah satu dengan jumlah pengikut terbesar di Medium. Saya suka menulis artikel mendalam tentang AI dan ML dengan sedikit gaya sarkastik—karena harus ada sesuatu untuk membuatnya tidak terlalu membosankan. Saya telah menghasilkan lebih dari 130 artikel dan satu kursus di DataCamp, dengan satu lagi sedang dalam proses. Konten saya telah dilihat oleh lebih dari 5 juta pasang mata, dan 20 ribu di antaranya menjadi pengikut di Medium dan LinkedIn. 

Topik

Terkait

blogs

40 Pertanyaan Wawancara DBMS Teratas di 2026

blogs

Spaghetti Plot dan Jalur Badai

blogs

Tutorial Korelasi di R