Válasszon az SQL és a Python közül

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 faker vagy boto3. 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() és foreach_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