Megosztás a következőn keresztül:


Oszlopok átnevezése és elvetése Delta Lake-oszlopleképezéssel

Az Azure Databricks támogatja a Delta Lake-táblák oszlopleképezését, amely lehetővé teszi, hogy a metaadat-módosítások adatfájlok újraírása nélkül törölve vagy átnevezve jelöljék meg az oszlopokat. Lehetővé teszi továbbá, hogy a felhasználók a Parquet által nem engedélyezett karaktereket ( például szóközöket) használva nevezze el a Delta táblaoszlopait, hogy a felhasználók közvetlenül betölthessenek CSV- vagy JSON-adatokat a Delta-ba anélkül, hogy az előző karakterkorlátozások miatt át kellene nevezni az oszlopokat.

Fontos

Az oszlopleképezést engedélyező táblák csak a Databricks Runtime 10.4 LTS és újabb verziókban olvashatók.

A táblák oszlopleképezésének engedélyezése megszakíthatja a Delta-változási adatcsatornára támaszkodó alsóbb rétegbeli műveleteket. Lásd: Adatcsatornákra vonatkozó korlátozások módosítása az oszlopleképezést engedélyező táblák esetében.

Ha oszlopleképezést engedélyez a táblákon, az megszakíthatja a Delta-táblázatból származó streamelési olvasásokat forrásként, beleértve a Delta Élő táblákat is. Lásd: Streamelés oszlopleképezéssel és sémamódosításokkal.

Oszlopleképezés engedélyezése

Az oszlopleképezéshez a következő Delta-protokollok szükségesek:

  • Olvasó 2-es vagy újabb verziója.
  • Író 5-ös vagy újabb verziója.

A szükséges protokollverziókkal rendelkező Delta-táblák esetében az oszlopleképezést a következő beállítással delta.columnMapping.mode nameengedélyezheti: .

Az oszlopleképezés engedélyezéséhez használja a következő parancsot:

  ALTER TABLE <table-name> SET TBLPROPERTIES (
    'delta.columnMapping.mode' = 'name'
  )

Lásd: Oszlopleképezés letiltása.

Oszlop átnevezése

Feljegyzés

A Databricks Runtime 10.4 LTS-ben és újabb verziókban érhető el.

Ha egy Delta-tábla oszlopleképezése engedélyezve van, átnevezhet egy oszlopot:

ALTER TABLE <table-name> RENAME COLUMN old_col_name TO new_col_name

További példákért lásd a Delta Lake táblaséma frissítését.

Oszlopok eltávolítása

Feljegyzés

A Databricks Runtime 11.3 LTS-ben és újabb verziókban érhető el.

Ha egy Delta-tábla oszlopleképezése engedélyezve van, elvethet egy vagy több oszlopot:

ALTER TABLE table_name DROP COLUMN col_name
ALTER TABLE table_name DROP COLUMNS (col_name_1, col_name_2, ...)

További részletekért lásd a Delta Lake táblaséma frissítését.

Támogatott karakterek az oszlopnevekben

Ha egy Delta-tábla oszlopleképezése engedélyezve van, szóközöket és a következő karaktereket is felveheti a táblázat oszlopnevei közé: ,;{}()\n\t=.

Streamelés oszlopleképezéssel és sémamódosításokkal

Fontos

Ez a funkció nyilvános előzetes verzióban érhető el a Databricks Runtime 13.3 LTS-ben és újabb verziókban.

Megadhat egy sémakövetési helyet a Delta-táblákból való streamelés engedélyezéséhez, ha engedélyezve van az oszlopleképezés. Ez elhárítja azt a problémát, amely miatt a nem additív sémamódosítások hibás adatfolyamokat eredményezhetnek.

Az adatforráson átolvasott streamek mindegyikének saját meg kell adnia a sajátját schemaTrackingLocation . A megadottnak schemaTrackingLocation a streamelési írás céltáblájának megadott checkpointLocation könyvtárában kell lennie.

Feljegyzés

Több forrás deltatáblából származó adatokat egyesítő streamelési számítási feladatokhoz egyedi könyvtárakat kell megadnia az checkpointLocation egyes forrástáblákon belül.

A beállítással schemaTrackingLocation megadhatja a sémakövetés elérési útját, ahogyan az a következő kód példájában is látható:

checkpoint_path = "/path/to/checkpointLocation"

(spark.readStream
  .option("schemaTrackingLocation", checkpoint_path)
  .table("delta_source_table")
  .writeStream
  .option("checkpointLocation", checkpoint_path)
  .toTable("output_table")
)

Oszlopleképezés letiltása

A Databricks Runtime 15.3-ban és újabb verziókban a paranccsal eltávolíthatja az DROP FEATURE oszlopleképezést egy táblából, és leminősítheti a táblaprotokollt.

Lásd a Delta-tábla funkcióinak elvetése című témakört.