Välj mellan SQL och Python

Lakeflow Spark Declarative Pipelines (SDP) stöder både SQL- och Python-gränssnitt för att definiera batch- och strömningsdatapipelines. Båda gränssnitten skapar samma underliggande dataflödesdiagram, så de ger motsvarande funktioner för de flesta databearbetningar. De skiljer sig åt när det gäller flexibilitet, tillgänglighet och funktionstäckning.

Använd den här vägledningen för att bestämma vilket gränssnitt som ska användas:

  • Om du kan uttrycka din logik i SQL använder du SQL.
  • Om du behöver programmatisk kontroll eller en funktion med endast Python använder du Python.
  • Om du är mer bekväm med Python använder du Python. Den omfattar den fullständiga pipeline-funktionsuppsättningen, så det räcker med att känna till det. Samma sak gäller inte i omvänd ordning: SQL täcker inte alla funktioner, så välj det inte enbart på förtrogenhet.

Du kan också kombinera båda gränssnitten i samma pipeline. Se Mixa SQL och Python.

När du ska använda SQL

SQL passar bra när du vill:

  • Läsbara, deklarativa definitioner: Tydlig logik som dataingenjörer och analytiker kan underhålla.
  • Standardtabelltyper: Pipelines som främst bygger på strömmande tabeller och materialiserade vyer.
  • Linjära transformeringskedjor: Enkel inmatning och omvandling, till exempel ett brons-till-silver-till-guld-flöde, utan procedurlogik.
  • Fristående tabeller: Fristående direktuppspelningstabeller eller materialiserade vyer som du skapar i SQL.

En översikt över hur du utvecklar pipelines i SQL finns i Utveckla Lakeflow Spark Deklarativa pipelines-kod med SQL.

När du ska använda Python

Python passar bra när du behöver:

  • Programmatisk kontroll: Loopar, villkor och metaprogrammering för att generera pipelinedefinitioner dynamiskt.
  • Externa bibliotek: Python paket som faker eller boto3. Se Hantera Python-beroenden för pipelines.
  • Användardefinierade funktioner (UDF:er): Du definierar UDF:er i Python och kan anropa dem från både Python- och SQL-källfiler. Se Användardefinierade skalärfunktioner – Python.
  • Funktioner endast för Python:
    • create_auto_cdc_from_snapshot_flow() för att tillämpa insamling av ändringsdata från en databasögonblicksbild.
    • create_sink() och foreach_batch_sink() för att skriva till externa händelseströmmar eller Delta-mål.

En översikt över hur du utvecklar pipelines i Python finns i Utveckla pipelinekod med Python.

Blanda SQL och Python

En enda pipeline kan kombinera SQL- och Python definitioner, men varje språk måste finnas i en separat källfil. Du kan till exempel definiera dina brons- och silvertabeller i Python och dina guldtabeller i SQL.

Tillgänglighet av funktioner

I följande tabell jämförs hur varje gränssnitt stöder vanliga pipelinefunktioner:

Egenskap SQL Python
strömmande tabell CREATE STREAMING TABLE create_streaming_table(), table()
materialiserad vy CREATE MATERIALIZED VIEW materialized_view()
Tillfällig vy CREATE TEMPORARY VIEW temporary_view()
Privat tabell CREATE PRIVATE STREAMING TABLE, CREATE PRIVATE MATERIALIZED VIEW table(private=True)
Auto CDC AUTO CDC ... INTO create_auto_cdc_flow()
Automatisk CDC från ögonblicksbild Stöds ej create_auto_cdc_from_snapshot_flow()
Flow CREATE FLOW append_flow()
Sink Stöds ej create_sink(), foreach_batch_sink()
Expectations CONSTRAINT ... EXPECT expect(), expect_or_drop(), expect_or_fail()och varianterna expect_all

Beslutssammanfattning

Om du behöver...

Mål Rekommenderat gränssnitt
Enkelhet och läsbarhet SQL
Snabb deklarativ konfigurering SQL
Fristående streamingtabell eller materialiserad vy SQL
Villkors- eller looplogik Python
UDF:er eller externa Python bibliotek Python
Automatisk CDC från ögonblicksbild eller sänkor Python
Fullständig programmatisk kontroll och modularitet Python