Megjegyzés
Az oldalhoz való hozzáféréshez engedély szükséges. Megpróbálhat bejelentkezni vagy módosítani a címtárat.
Az oldalhoz való hozzáféréshez engedély szükséges. Megpróbálhatja módosítani a címtárat.
A Lakeflow-folyamatok az SQL és Python interfészeket is támogatják a kötegelt és streamelési folyamatok definiálása érdekében. Mindkét interfész ugyanazt a mögöttes adatfolyam-gráfot hozza létre, így a legtöbb adatfeldolgozáshoz egyenértékű funkciókat biztosítanak. Rugalmasságukban, akadálymentességükben és funkciólefedettségükben különböznek.
Ezzel az útmutatóval eldöntheti, hogy melyik felületet használja:
- Ha ki tudja fejezni a logikát az SQL-ben, használja az SQL-t.
- Ha programozott vezérlőre vagy csak Python funkcióra van szüksége, használja a Python.
- Ha jobban otthon van a Pythonban, használja azt. Ez lefedi a teljes folyamatfunkció-készletet, így az ismertség elég ok. Ugyanez fordítva nem igaz: az SQL nem fed le minden funkciót, ezért ne csak azért válassza, mert ismerős.
Mindkét interfészt kombinálhatja ugyanazon folyamatban. Lásd: SQL és Python keverése.
Mikor érdemes használni az SQL-t?
Az SQL akkor jó választás, ha szeretné:
- Olvasható, deklaratív definíciók: Egyértelmű logika, amelyet az adatmérnökök és az elemzők képesek fenntartani.
- Standard táblatípusok: Olyan adatfolyamatok, amelyek főként adatfolyam-táblákból és materializált nézetekből épülnek fel.
- Lineáris transzformációs láncok: Egyszerű betöltés és átalakítás, például bronz-ezüstből aranyba folyamat, eljárási logika nélkül.
- Önálló táblák: Önálló streamelési táblák vagy materializált nézetek, amelyeket az SQL-ben készített.
A folyamatok SQL-ben történő fejlesztésének áttekintéséért lásd: Lakeflow-folyamatok kódjának fejlesztése AZ SQL-vel.
Mikor érdemes használni a Python
Python akkor jó választás, ha szüksége van rá:
- Programozott vezérlés: Hurkok, feltételes és metaprogramozás a folyamatdefiníciók dinamikus létrehozásához.
-
Külső kódtárak: Python csomagok, például
fakervagyboto3. Lásd: Folyamatok Python-függőségeinek kezelése. - Felhasználó által definiált függvények (UDF-ek):: Az UDF-eket a Python definiálja, és meghívhatja őket Python és SQL-forrásfájlokból is. Lásd Python felhasználó által definiált skaláris függvényeket (UDF-eket).
-
csak Python funkciók:
-
create_auto_cdc_from_snapshot_flow()az adatrögzítés adatbázis-pillanatképből való módosításának alkalmazásához. -
create_sink()ésforeach_batch_sink()külső eseményadatfolyamokba vagy Delta-célhelyekre történő íráshoz.
-
A folyamatok Python-ben történő fejlesztésének áttekintéséért lásd: Folyamatkód fejlesztése Python.
SQL és Python keverése
Egyetlen folyamat kombinálhatja az SQL-t és Python definíciókat, de minden nyelvnek külön forrásfájlban kell lennie. Például megadhatja a bronz- és ezüst tábláit Pythonban, az arany tábláit pedig SQL-ben.
Szolgáltatás rendelkezésre állása
Az alábbi táblázat összehasonlítja, hogy az egyes felületek hogyan támogatják a folyamat általános funkcióit:
| Feature | SQL | Python |
|---|---|---|
| adatfolyam-tábla | CREATE STREAMING TABLE |
create_streaming_table(), table() |
| tényleges táblán alapuló nézet | CREATE MATERIALIZED VIEW |
materialized_view() |
| Iceberg-kompatibilis materializált nézet (nyilvános előzetes verzió) |
CREATE MATERIALIZED VIEW ... USING ICEBERG. Lásd: A külső Iceberg-olvasókkal kompatibilis materializált nézet létrehozása. |
Nem támogatott |
| Ideiglenes nézet | CREATE TEMPORARY VIEW |
temporary_view() |
| Személyes táblázat |
CREATE PRIVATE STREAMING TABLE, CREATE PRIVATE MATERIALIZED VIEW |
table(private=True) |
| Automatikus CDC | AUTO CDC ... INTO |
create_auto_cdc_flow() |
| Automatikus CDC pillanatképből | Nem támogatott | create_auto_cdc_from_snapshot_flow() |
| Flow | CREATE FLOW |
append_flow() |
| Sink | Nem támogatott |
create_sink(), foreach_batch_sink() |
| Expectations | CONSTRAINT ... EXPECT |
expect(), expect_or_drop(), expect_or_fail()és a expect_all variánsok |
Döntés összefoglalása
Ha szükséges...
| Cél | Ajánlott felület |
|---|---|
| Egyszerűség és olvashatóság | SQL |
| Gyors deklaratív beállítás | SQL |
| Önálló streamelési tábla vagy materializált nézet | SQL |
| Feltételes vagy hurkolási logika | Python |
| UDF-ek vagy külső Python-kódtárak | Python |
| Automatikus CDC pillanatképekből vagy fogadókból | Python |
| Teljes programozott vezérlés és modularitás | Python |