Poznámka:
Přístup k této stránce vyžaduje autorizaci. Můžete se zkusit přihlásit nebo změnit adresáře.
Přístup k této stránce vyžaduje autorizaci. Můžete zkusit změnit adresáře.
Deklarativní kanály Sparku Lakeflow (SDP) podporují rozhraní SQL i Python pro definování kanálů batch a streamování. Obě rozhraní vytvářejí stejný podkladový graf toku dat, takže poskytují ekvivalentní funkce pro většinu zpracování dat. Liší se v oblasti flexibility, přístupnosti a pokrytí funkcí.
V těchto doprovodných materiálech se můžete rozhodnout, které rozhraní se má použít:
- Pokud můžete vyjádřit logiku v SQL, použijte SQL.
- Pokud potřebujete programový ovládací prvek nebo funkci jen pro Python, použijte Python.
- Pokud vám Python víc vyhovuje, použijte Python. Pokrývá kompletní sadu funkcí pipeline, takže samotná obeznámenost je dostatečným důvodem. Totéž není pravda naopak: SQL nepokrývá každou funkci, takže si ji nevybírejte sama o sobě.
Obě rozhraní můžete také kombinovat ve stejném kanálu. Viz Mix SQL a Python.
Kdy použít SQL
SQL je vhodný, když chcete:
- Čitelné a deklarativní definice: Jasná logika, kterou mohou datoví inženýři a analytici udržovat.
- Standardní typy tabulek: Pipeline vytvořené převážně ze streamovacích tabulek a materializovaných zobrazení.
- Lineární transformační řetězce: Jednoduché načítání a transformace, například tok z bronzové do stříbrné a zlaté vrstvy, bez procedurální logiky.
- Samostatné tabulky: Samostatné streamovací tabulky nebo materializovaná zobrazení, která vytvoříte v SQL.
Přehled vývoje kanálů v SQL najdete v tématu Vývoj kódu deklarativních kanálů Sparku pro Lakeflow pomocí SQL.
Kdy použít Python
Python je vhodné, když potřebujete:
- Programové ovládání: Smyčky, podmínky a metaprogramování pro dynamické generování definic pipeline.
-
Externí knihovny: Python balíčky, například
fakerneboboto3. Viz Správa závislostí Pythonu pro kanály. - Uživatelem definované funkce (UDF):: Uživatelem definované funkce definujete uživatelem v Python a můžete je volat z Python i zdrojových souborů SQL. Viz uživatelem definované skalární funkce – Python.
-
Funkce pouze pro Python:
-
create_auto_cdc_from_snapshot_flow()pro použití zachytávání dat změn ze snímku databáze. -
create_sink()aforeach_batch_sink()k zapisování do externích streamů událostí nebo cílů Delta.
-
Přehled vývoje kanálů v Python najdete v tématu Vývoj kódu kanálu pomocí Python.
Kombinace SQL a Python
Jeden kanál může kombinovat definice SQL a Python, ale každý jazyk musí být v samostatném zdrojovém souboru. Můžete například definovat bronzové a stříbrné tabulky v Python a zlatých tabulkách v SQL.
Dostupnost funkcí
Následující tabulka porovnává, jak každé rozhraní podporuje běžné funkce kanálu:
| Feature | SQL | Python |
|---|---|---|
| tabulka streamu | CREATE STREAMING TABLE |
create_streaming_table(), table() |
| materializované zobrazení | CREATE MATERIALIZED VIEW |
materialized_view() |
| Materializované zobrazení kompatibilní s Iceberg (veřejná předběžná verze) |
CREATE MATERIALIZED VIEW ... USING ICEBERG. Viz Vytvoření materializovaného zobrazení kompatibilního s externími čtečkami Icebergu. |
Nepodporováno |
| Dočasné zobrazení | CREATE TEMPORARY VIEW |
temporary_view() |
| Soukromá tabulka |
CREATE PRIVATE STREAMING TABLE, CREATE PRIVATE MATERIALIZED VIEW |
table(private=True) |
| Auto CDC | AUTO CDC ... INTO |
create_auto_cdc_flow() |
| Automatické CDC ze snímku | Nepodporováno | create_auto_cdc_from_snapshot_flow() |
| Flow | CREATE FLOW |
append_flow() |
| Sink | Nepodporováno |
create_sink(), foreach_batch_sink() |
| Expectations | CONSTRAINT ... EXPECT |
expect(), expect_or_drop(), expect_or_fail() a varianty expect_all |
Souhrn rozhodnutí
Pokud potřebujete...
| Goal | Doporučené rozhraní |
|---|---|
| Jednoduchost a čitelnost | SQL |
| Rychlé deklarativní nastavení | SQL |
| Samostatná streamovací tabulka nebo materializované zobrazení | SQL |
| Podmíněná nebo cyklická logika | Python |
| UDF nebo externí knihovny Python | Python |
| Automatické CDC ze snapshotů nebo sinků | Python |
| Úplné programové řízení a modularita | Python |