Kiezen tussen SQL en Python

Lakeflow Spark-declaratieve pijplijnen (SDP) ondersteunt zowel SQL- als Python-interfaces voor het definiëren van batch- en streamingpijplijnen. Beide interfaces produceren dezelfde onderliggende gegevensstroomgrafiek, zodat ze gelijkwaardige functionaliteit bieden voor de meeste gegevensverwerking. Ze verschillen in flexibiliteit, toegankelijkheid en functiedekking.

Gebruik deze richtlijnen om te bepalen welke interface u wilt gebruiken:

  • Als u uw logica in SQL kunt uitdrukken, gebruikt u SQL.
  • Als u programmatisch beheer of een functie alleen-Python nodig hebt, gebruikt u Python.
  • Als u vertrouwd bent met Python, gebruikt u Python. Het omvat de volledige pijplijnfunctieset, dus bekendheid is reden genoeg. Hetzelfde geldt niet omgekeerd: SQL behandelt niet elke functie, dus kies deze niet alleen voor vertrouwdheid.

U kunt beide interfaces ook combineren in dezelfde pijplijn. Zie Mix SQL en Python.

Wanneer gebruikt u SQL?

SQL is geschikt als u wilt:

  • Leesbare, declaratieve definities: Duidelijke logica die data engineers en analisten kunnen onderhouden.
  • Standaardtabeltypen: Pijplijnen die voornamelijk zijn gebouwd op basis van streamingtabellen en gerealiseerde weergaven.
  • Lineaire transformatieketens: Eenvoudige opname en transformatie, zoals een brons-naar-zilver-naar-goudstroom, zonder procedurele logica.
  • Zelfstandige tabellen: zelfstandige streamingtabellen of gerealiseerde weergaven, die u in SQL maakt.

Voor een overzicht van het ontwikkelen van pijplijnen in SQL, zie Lakeflow Spark Declarative Pipelines-code ontwikkelen met SQL.

Wanneer gebruikt u Python

Python is geschikt voor het volgende:

  • Programmatisch beheer: Lussen, conditionals en metaprogramming om pijplijndefinities dynamisch te genereren.
  • Externe bibliotheken: Python pakketten zoals faker of boto3. Zie Python-afhankelijkheden voor pijplijnen beheren.
  • Door de gebruiker gedefinieerde functies (UDF's):u definieert UDF's in Python en kunt ze aanroepen vanuit zowel Python als SQL-bronbestanden. Zie door de gebruiker gedefinieerde scalaire functies - Python.
  • Functies alleen voor Python:
    • create_auto_cdc_from_snapshot_flow() om wijzigingsgegevensopname toe te passen op basis van een momentopname van een database.
    • create_sink() en foreach_batch_sink() om naar externe eventstreaming- of Delta-doelen te schrijven.

Zie Pijplijncode ontwikkelen met Python voor een overzicht van het ontwikkelen van pijplijnen in Python.

SQL en Python combineren

Eén pijplijn kan SQL- en Python definities combineren, maar elke taal moet zich in een afzonderlijk bronbestand hebben. U kunt bijvoorbeeld uw bronzen en zilveren tabellen definiëren in Python en uw gouden tabellen in SQL.

Beschikbaarheid van functies

In de volgende tabel wordt vergeleken hoe elke interface algemene pijplijnfuncties ondersteunt:

Eigenschap SQL Python
streamingtabel CREATE STREAMING TABLE create_streaming_table(), table()
gematerialiseerde weergave CREATE MATERIALIZED VIEW materialized_view()
Tijdelijke weergave CREATE TEMPORARY VIEW temporary_view()
Privétabel CREATE PRIVATE STREAMING TABLE, CREATE PRIVATE MATERIALIZED VIEW table(private=True)
Auto CDC AUTO CDC ... INTO create_auto_cdc_flow()
Auto CDC van momentopname Niet ondersteund create_auto_cdc_from_snapshot_flow()
Stroom CREATE FLOW append_flow()
Sink Niet ondersteund create_sink(), foreach_batch_sink()
Expectations CONSTRAINT ... EXPECT expect(), expect_or_drop(), expect_or_fail()en de expect_all varianten

Beslissingsoverzicht

Als u dat nodig hebt...

Doel Aanbevolen interface
Eenvoud en leesbaarheid SQL
Snelle declaratieve configuratie SQL
Afzonderlijke streaming-tabel of gematerialiseerde weergave SQL
Voorwaardelijke of herhalingslogica Python
UDFs of externe Python-bibliotheken Python
Auto CDC van momentopnamen of sinks Python
Volledig programmatisch beheer en modulariteit Python