Pilih antara SQL dan Python

Alur Lakeflow mendukung antarmuka SQL dan Python untuk menentukan alur batch dan streaming. Kedua antarmuka menghasilkan grafik aliran data yang mendasar yang sama, sehingga menyediakan fungsionalitas yang setara untuk sebagian besar pemrosesan data. Mereka berbeda dalam fleksibilitas, aksesibilitas, dan cakupan fitur.

Gunakan panduan ini untuk memutuskan antarmuka mana yang akan digunakan:

  • Jika Anda dapat mengekspresikan logika Anda di SQL, gunakan SQL.
  • Jika Anda memerlukan kontrol terprogram atau fitur khusus Python, gunakan Python.
  • Jika Anda lebih nyaman dengan Python, gunakan Python. Ini mencakup seluruh rangkaian fitur pipeline, jadi fakta bahwa Anda sudah familier dengannya saja sudah cukup menjadi alasan. Hal yang sama tidak berlaku secara terbalik: SQL tidak mencakup setiap fitur, jadi jangan memilihnya pada keakraban saja.

Anda juga dapat menggabungkan kedua antarmuka dalam alur yang sama. Lihat Mencampur SQL dan Python.

Kapan menggunakan SQL

SQL cocok jika Anda ingin:

  • Definisi deklaratif yang dapat dibaca: Logika yang jelas yang dapat dipertahankan oleh teknisi dan analis data.
  • Jenis tabel standar: Alur yang sebagian besar dibangun dari tabel streaming dan tampilan materialisasi.
  • Rantai transformasi linier: Penyerapan dan transformasi langsung, seperti aliran perunggu ke perak ke emas, tanpa logika prosedural.
  • Tabel mandiri: Tabel streaming mandiri atau tampilan materialisasi, yang Anda buat di SQL.

Untuk gambaran umum pengembangan alur di SQL, lihat Mengembangkan kode alur Lakeflow dengan SQL.

Kapan menggunakan Python

Python cocok ketika Anda membutuhkan:

  • Kontrol terprogram: Perulangan, kondisional, dan metaprogram untuk menghasilkan definisi alur secara dinamis.
  • Pustaka eksternal: paket Python seperti faker atau boto3. Lihat Mengelola dependensi Python untuk alur.
  • Fungsi yang ditentukan pengguna (UDF): Anda menentukan UDF di Python dan dapat memanggilnya dari file sumber Python dan SQL. Lihat fungsi skalar Python yang ditentukan pengguna (UDF).
  • fitur khusus Python:
    • create_auto_cdc_from_snapshot_flow() untuk menerapkan perubahan pengambilan data dari rekam jepret database.
    • create_sink() dan foreach_batch_sink() untuk menulis ke tujuan streaming peristiwa eksternal atau tujuan Delta.

Untuk gambaran umum pengembangan alur di Python, lihat Mengembangkan kode alur dengan Python.

Mencampur SQL dan Python

Satu alur dapat menggabungkan definisi SQL dan Python, tetapi setiap bahasa harus dalam file sumber terpisah. Misalnya, Anda dapat mendefinisikan tabel bronze dan silver Anda di Python, serta tabel gold Anda di SQL.

Ketersediaan fitur

Tabel berikut membandingkan bagaimana setiap antarmuka mendukung fitur alur umum:

Fitur SQL Python
tabel streaming CREATE STREAMING TABLE create_streaming_table(), table()
tampilan terwujud CREATE MATERIALIZED VIEW materialized_view()
Tampilan materialisasi yang kompatibel dengan Iceberg (Pratinjau Umum) CREATE MATERIALIZED VIEW ... USING ICEBERG. Lihat Membuat tampilan termaterialisasi yang kompatibel dengan pembaca Iceberg eksternal. Tidak didukung
Tampilan sementara CREATE TEMPORARY VIEW temporary_view()
Tabel pribadi CREATE PRIVATE STREAMING TABLE, CREATE PRIVATE MATERIALIZED VIEW table(private=True)
CDC Otomatis AUTO CDC ... INTO create_auto_cdc_flow()
CDC Otomatis dari rekam jepret Tidak didukung create_auto_cdc_from_snapshot_flow()
Flow CREATE FLOW append_flow()
Sink Tidak didukung create_sink(), foreach_batch_sink()
Expectations CONSTRAINT ... EXPECT expect(), expect_or_drop(), expect_or_fail(), dan expect_all varian

Ringkasan keputusan

Jika Anda membutuhkan...

Maksud Antarmuka yang direkomendasikan
Kesederhanaan dan keterbacaan SQL
Penyiapan deklaratif cepat SQL
Tabel streaming mandiri atau tampilan materialisasi SQL
Logika kondisi atau perulangan Python
UDF atau pustaka Python eksternal Python
CDC otomatis dari rekam jepret atau sink Python
Kontrol dan modularitas terprogram penuh Python