Delta Lake-séma érvényesítése

A Delta Lake automatikusan ellenőrzi, hogy a megírt DataFrame sémája kompatibilis-e a tábla sémájával. A Delta Lake az alábbi szabályok alapján állapítja meg, hogy a DataFrame-ből egy táblába történő írás kompatibilis-e:

  • A céltáblában minden DataFrame-oszlopnak léteznie kell. Ha a DataFrame nem tartalmaz oszlopokat a táblában, kivétel keletkezik. A táblában található, de a DataFrame-ben nem szereplő oszlopok null értékűre vannak állítva.
  • A DataFrame oszlop adattípusainak meg kell egyeznie a céltáblában szereplő oszlop adattípusaival. Ha nem egyeznek, kivétel keletkezik.
  • A DataFrame oszlopnevei csak kis- és nagybetűk szerint térhetnek el egymástól. Ez azt jelenti, hogy ugyanabban a táblában nem definiálhatók olyan oszlopok, mint a "Foo" és a "foo". Bár a Sparkot a kis- és nagybetűk megkülönböztetése vagy az (alapértelmezett) módban is használhatja, a Parquet megkülönbözteti a kis- és nagybetűket az oszlopinformációk tárolásakor és visszaadásakor. A Delta Lake esetmegőrző, de érzéketlen a séma tárolásakor, és ezzel a korlátozással elkerülheti a lehetséges hibákat, adatsérüléseket vagy veszteségekkel kapcsolatos problémákat.

A Delta Lake támogatja a DDL-t az új oszlopok explicit hozzáadásához és a séma automatikus frissítéséhez.

Ha más beállításokat ad meg, például partitionBya hozzáfűzési móddal együtt, a Delta Lake ellenőrzi, hogy megegyeznek-e, és hibát jelez az eltérés esetén. Ha partitionBy nincs jelen, a hozzáfűzők automatikusan követik a meglévő adatok particionálását.

Megjegyzés

INSERT A szintaxis sémakényszerítést biztosít, és támogatja a sémafejlődést. Ha egy oszlop adattípusa nem alakítható át biztonságosan a Delta Lake-tábla adattípusára, akkor futásidejű kivétel jelenik meg. Ha a séma fejlődése engedélyezve van, új oszlopok létezhetnek a séma utolsó oszlopaként (vagy beágyazott oszlopokként) a séma fejlődéséhez.

Sémaérvényesítés a Delta Lake-egyesítéshez

merge automatikusan ellenőrzi, hogy a beszúrási és frissítési kifejezések által létrehozott adatok sémája kompatibilis-e a tábla sémájával. A következő szabályok alapján állapítja meg, hogy a merge művelet kompatibilis-e:

  • A update és insert a művelet esetében a megadott céloszlopoknak létezniük kell a cél Delta táblában.
  • A updateAll és insertAll műveletek esetében a forrásadatkészletnek rendelkeznie kell a cél Delta-tábla összes oszlopával. A forrásadatkészlet további oszlopokkal is rendelkezhet, amelyek figyelmen kívül lesznek hagyva.
  • Minden művelet esetében, ha a céloszlopokat létrehozó kifejezések által létrehozott adattípus eltér a cél Delta-tábla megfelelő oszlopaitól, merge próbálja meg a táblában szereplő típusokhoz adni őket.

Lásd: Automatikus sémafejlődés a Delta Lake-egyesítéshez.