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


A Delta Lake kollációs támogatása

A Databricks Runtime 16.1-ben és újabb verziókban megadhatja a szövegmezők kollációját a Delta-táblákhoz.

A táblázat rendezésének engedélyezése hozzáadja a collations-preview írótábla funkciót. A Databricks Runtime 15.4-ben és azokat követő verziókban rendezési beállítással ellátott táblákat olvashat. Lásd Hogyan kezeli az Azure Databricks a Delta Lake-funkciók kompatibilitását?.

Jegyzet

Alapértelmezés szerint a Delta Lake a karakterlánc mezők osztályozási sorrendjét UTF8_BINARY-ra állítja.

Táblázat létrehozása oszlop szinten kollációval

Az alábbi paranccsal új táblázatot hozhat létre oszlopszinten rendezéssel:

CREATE TABLE $tableName (
 nonCollatedColName STRING,
 collatedColName STRING COLLATE UNICODE,
 structColName STRUCT<nestedFieldName: STRING COLLATE UNICODE>,
 mapColName MAP<STRING, STRING COLLATE UNICODE>,
 arrayColName ARRAY<STRING COLLATE UNICODE>
) USING delta

Táblázatoszlop módosítása rendezés megadásához

A meglévő oszlopokat az alábbi parancsokkal frissítheti rendezés használatára:

ALTER TABLE tableName ALTER COLUMN columnName TYPE newType

Egy nem alapértelmezett rendezés eltávolítása (ha van ilyen):

ALTER TABLE tableName ALTER COLUMN columnName TYPE STRING COLLATE UTF8_BINARY

Az oszlop karakterkészletének módosítása utf8_lcase-re:

ALTER TABLE tableName ALTER COLUMN columnName TYPE STRING COLLATE UTF8_LCASE

Ha módosítja egy tábla rendezését, az nem frissíti automatikusan a korábban írt adatok statisztikáit vagy adatelrendezését. Az új rendezés során az előzményadatokra való fájlugrás javítása érdekében a Databricks a következőket javasolja:

  • Futtassa a ANALYZE table_name COMPUTE DELTA STATISTICS a meglévő adatfájlok fájlkihagyási statisztikáinak frissítéséhez.
  • Folyékony fürtözéssel rendelkező táblák esetében futtassa a OPTIMIZE FULL table_name parancsot a folyékony fürtözés frissítéséhez.
  • A ZORDERhasználó táblák esetében tegye a következőket:
    • Tiltsa le a növekményes optimalizálást a Spark-munkamenetben az alapértelmezett Spark-konfiguráció felülbírálásával az alábbi paranccsal:

      SET spark.databricks.optimize.incremental=false
      
    • A OPTIMIZE table_name ZORDER BY zorder_column-t futtassa az összes meglévő adatfájl újraírásához.

Az Azure Databricks mindig tiszteletben tartja a rendezést a lekérdezés eredményeiben.

Táblázat rendezésének letiltása

A rendszerezési funkció elvetése előtt explicit módon le kell tiltania a rendszerezést minden egyes sztringoszlophoz a táblázatban.

Az alábbi szintaxissal állíthatja be egy oszlop rendezési beállítását UTF8_BINARY:

ALTER TABLE table_name
ALTER COLUMN column_name
TYPE STRING
COLLATE UTF8_BINARY

A tábla funkció elvetéséhez futtassa a következő parancsot:

ALTER TABLE table_name
DROP FEATURE collations-preview

Lásd a Delta tábla funkcióinak elhagyása.

Sémafejlődés és rendezés

A kolláció a sémafejlődéssel az alábbi szabályok szerint hat kölcsön.

  • Ha már létezik forrásoszlop a céltáblában, a céltábla oszlopának rendezése változatlan marad.
  • Ha egy forrásoszlophoz rendezés van megadva, a céltáblához hozzáadott oszlop a megadott rendezést használja.
  • Ha a céltábla nem támogatja a kollációt, amikor egy kollációval rendelkező oszlopot adnak hozzá, akkor a collations-preview táblázat funkció válik elérhetővé.

Korlátozások

A rendezést engedélyező táblákra az alábbi korlátozások vonatkoznak:

  • A Databricks Runtime által nem felismert rendezéssel külsőleg létrehozott deltatáblák kivételt képeznek lekérdezéskor.
  • Jelenleg nincs támogatás a Delta-megosztáshoz.
  • Az csoportosított oszlopok nem használhatók CHECK korlátozások esetén.
  • A létrehozott oszlopok nem használhatnak kollációt.
  • Az csoportosított oszlopok nem használhatók kinyíló szűrőindex-oszlopokkal.
  • A Scalához vagy Pythonhoz készült OSS Delta Lake API-k nem támogatják a rendezést. A rendezés engedélyezéséhez Spark SQL- vagy DataFrame API-kat kell használnia.
  • A dinamikus partíció felülírása nem támogatott a csoportosított oszlopokon.
  • Az csoportosított oszlopokra nem lehet hivatkozni a strukturált streamelési állapotalapú lekérdezésekben.
  • Azok a külső olvasók, amelyek nem veszik figyelembe a collations-preview tábla funkciót, a UTF8_BINARYalapértelmezett rendezési sorrendet használják.
  • A MAP nem rendelkezhet olyan kulccsal, amely egy csoportosított sztring.
  • Az UniForm nem működik rendezésekkel.