SQL ile Python arasında seçim yapma

Lakeflow işlem hatları, toplu işlem hatlarını ve akış işlem hatlarını tanımlamak için hem SQL hem de Python arabirimlerini destekler. Her iki arabirim de aynı temel veri akışı grafiğini oluşturur, bu nedenle çoğu veri işleme için eşdeğer işlevler sağlar. Esneklik, erişilebilirlik ve özellik kapsamı açısından farklılık gösterir.

Hangi arabirimin kullanılacağına karar vermek için bu kılavuzu kullanın:

  • Mantığınızı SQL'de ifade edebilirseniz SQL kullanın.
  • Programlı denetime veya yalnızca Python bir özelliğe ihtiyacınız varsa Python kullanın.
  • Python konusunda daha rahatsanız Python kullanın. Uçtan uca işlem hattının tüm özelliklerini kapsar; bu nedenle, ona aşina olmak tek başına yeterli bir gerekçedir. Aynı durum tersten de geçerli değildir: SQL her özelliği kapsamaz, bu nedenle yalnızca tanıdık bir şekilde seçmeyin.

Ayrıca her iki arabirimi de aynı işlem hattında birleştirebilirsiniz. Bkz. SQL ve Python karıştırma.

SQL ne zaman kullanılır?

SQL, istediğiniz zaman uygundur:

  • Okunabilir, bildirimsel tanımlar: Veri mühendislerinin ve analistlerin sürdürebileceği açık mantık.
  • Standart tablo türleri: Çoğunlukla akış tabloları ve somutlaştırılmış görünümlerden oluşan işlem hatları.
  • Doğrusal dönüşüm zincirleri: Prosedürel mantık içermeyen, bronzdan gümüşe, ardından altına uzanan akış gibi doğrudan veri alımı ve dönüştürme.
  • Tek başına tablolar: SQL'de oluşturduğunuz tek başına akış tabloları veya gerçekleştirilmiş görünümler.

SQL'de işlem hatları geliştirmeye genel bakış için bkz. SQL ile Lakeflow işlem hatları kodu geliştirme.

Python ne zaman kullanılır?

Python ihtiyacınız olduğunda uygundur:

  • Programlı denetim: İşlem hattı tanımlarını dinamik olarak oluşturmak için döngüler, koşullular ve meta programlama.
  • Dış kitaplıklar: veya fakergibi boto3 Python paketleri. Bkz. İşlem hatları için Python bağımlılıklarını yönetme.
  • Kullanıcı tanımlı işlevler (UDF): UDF'leri Python tanımlarsınız ve bunları hem Python hem de SQL kaynak dosyalarından çağırabilirsiniz. Bkz. Python skaler kullanıcı tanımlı işlevler (UDF).
  • Yalnızca Python özellikler:
    • create_auto_cdc_from_snapshot_flow() veritabanı anlık görüntüsünden değişiklik veri yakalaması uygulamak için.
    • create_sink() ve foreach_batch_sink(), harici olay akışına veya Delta hedeflerine yazmak için.

Python'da işlem hattı geliştirmeye genel bakış için bkz. Python ile işlem hattı kodu geliştirme.

SQL ve Python'ı birleştirin

Tek bir işlem hattı SQL ve Python tanımlarını birleştirebilir, ancak her dil ayrı bir kaynak dosyada olmalıdır. Örneğin, bronz ve gümüş tablolarınızı Python ve altın tablolarınızı SQL'de tanımlayabilirsiniz.

Özellik kullanılabilirliği

Aşağıdaki tablo, her arabirimin ortak işlem hattı özelliklerini nasıl desteklediğini karşılaştırır:

Özellik SQL Python
akış tablosu CREATE STREAMING TABLE create_streaming_table(), table()
maddileştirilmiş görünüm CREATE MATERIALIZED VIEW materialized_view()
Apache Iceberg uyumlu somutlaştırılmış görünüm (Genel Önizleme) CREATE MATERIALIZED VIEW ... USING ICEBERG. Bkz. harici Iceberg okuyucularıyla uyumlu bir somutlaştırılmış görünüm oluşturma. Desteklenmiyor
Geçici görünüm CREATE TEMPORARY VIEW temporary_view()
Özel tablo CREATE PRIVATE STREAMING TABLE, CREATE PRIVATE MATERIALIZED VIEW table(private=True)
Otomatik CDC AUTO CDC ... INTO create_auto_cdc_flow()
Anlık görüntüden otomatik CDC Desteklenmiyor create_auto_cdc_from_snapshot_flow()
Flow CREATE FLOW append_flow()
Sink Desteklenmiyor create_sink(), foreach_batch_sink()
Expectations CONSTRAINT ... EXPECT expect(), expect_or_drop(), expect_or_fail()ve expect_all varyantları

Karar özeti

Gerekirse...

Goal Önerilen arabirim
Basitlik ve okunabilirlik SQL
Hızlı deklaratif kurulum SQL
Bağımsız akış tablosu veya somutlaştırılmış görünüm SQL
Koşullu veya döngü mantığı Python
UDF'ler veya dış Python kitaplıkları Python
Anlık görüntüden veya havuzlardan otomatik CDC Python
Tam programlı kontrol ve modülerlik Python