Kommentar
Åtkomst till den här sidan kräver auktorisering. Du kan prova att logga in eller ändra kataloger.
Åtkomst till den här sidan kräver auktorisering. Du kan prova att ändra kataloger.
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
fakerellerboto3. 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()ochforeach_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 |