Jegyzet
Az oldalhoz való hozzáférés engedélyezést igényel. Próbálhatod be jelentkezni vagy könyvtárat váltani.
Az oldalhoz való hozzáférés engedélyezést igényel. Megpróbálhatod a könyvtár váltását.
A Delta-táblák sztringmezőinek gyűjteményét (kollációit) megadhatja, hogy szabályozza, hogyan viselkedjen a sztringek összehasonlítása és rendezése, mint például a kis- és nagybetűk érzéketlen egyezésének támogatása vagy a területspecifikus rendezés engedélyezése. Ehhez a Databricks Runtime 16.4 LTS és újabb verziója szükséges.
A rendezési típusok, az elnevezési konvenciók és az elsőbbségi szabályok részletes magyarázata olvasható a(z) Rendezés részben.
Alapértelmezés szerint a Delta Lake a karakterlánc mezők osztályozási sorrendjét UTF8_BINARY-ra állítja.
Fontos
A szortírozás engedélyezése hozzáadja az collations írási funkciót a Delta-táblához, ami hatással van a külső olvasó alkalmazásokkal és egyéb platform funkciókkal való kompatibilitásra. Tekintse át a Korlátozások szakaszát, mielőtt engedélyezi a karaktersorrend használatát az éles táblákon.
Táblázat létrehozása rendezéssel
Új tábla létrehozásakor oszlopszinten is megadhatja a rendezést. A rendezés a legfelső szintű sztringoszlopokra és a beágyazott típusok sztringmezőire alkalmazható:
CREATE TABLE catalog.schema.my_table (
id BIGINT,
name STRING COLLATE UTF8_LCASE,
metadata STRUCT<label: STRING COLLATE UNICODE>,
tags ARRAY<STRING COLLATE UTF8_LCASE>,
properties MAP<STRING, STRING COLLATE UTF8_LCASE>
) USING delta
Megjegyzés:
MAP kulcsok nem használhatnak kollációt. Csak az MAP értékek támogatják a csoportosított sztringeket.
Megváltoztatja az összerendelést egy meglévő oszlopon
Egy meglévő oszlop rendezési beállítását a következővel ALTER TABLEmódosíthatja:
-- Set a column to case-insensitive collation
ALTER TABLE my_table ALTER COLUMN name TYPE STRING COLLATE UTF8_LCASE
-- Revert a column to the default binary collation
ALTER TABLE my_table ALTER COLUMN name TYPE STRING COLLATE UTF8_BINARY
Statisztikák és adatelrendezés frissítése a rendezés módosítása után
Az oszlopok rendezésének módosítása nem írja át a meglévő adatokat, és nem frissíti a statisztikákat. A lekérdezések azonnal helyes eredményeket adnak vissza az új rendezés alatt, de a fájlok kihagyása és a fürtözés kevésbé hatékony lehet, amíg meg nem teszi az alábbi lépéseket:
- Frissítse az oszlop fájlugrási statisztikáit:
ANALYZE TABLE my_table COMPUTE DELTA STATISTICS
- Ha a tábla folyékony fürtözést használ, írja át újra a fürtözési elrendezést:
OPTIMIZE FULL my_table
- Ha a tábla ZORDER-t használ, tiltsa le a növekményes optimalizálást, és írja át az összes fájlt:
SET spark.databricks.optimize.incremental = false;
OPTIMIZE my_table ZORDER BY zorder_column;
Ezeknek a lépéseknek a kihagyása nem eredményez helytelen eredményeket, de csökkentheti az előzményadatok lekérdezési teljesítményét a következő teljes újraírásig.
Az Azure Databricks mindig tiszteletben tartja a kollációt a lekérdezési eredményekben.
Táblázat rendezésének letiltása
A rendezési táblázat funkció eltávolításához először állítsa vissza az összes csoportosított oszlopot a következő értékre UTF8_BINARY:
-- Repeat for each collated column
ALTER TABLE my_table ALTER COLUMN name TYPE STRING COLLATE UTF8_BINARY
Ezután törölje a táblafunkciót:
ALTER TABLE my_table DROP FEATURE collations
További részletekért lásd a Delta Lake tábla funkcióról és a táblaprotokoll visszalépéséről.
Sémafejlődés és rendezés
Ha a sémafejlődés olyan oszlopokat ad hozzá vagy egyesít, amelyekben rendezés van megadva, a következő szabályok érvényesek:
- Ha már létezik forrásoszlop a céltáblában, a céltábla rendezése megmarad az adott oszlophoz. A forrásoszlop rendezése figyelmen kívül lesz hagyva.
- Ha egy forrásoszlop új, és van megadva rendezés, a céltábla alkalmazza az új oszlop rendezést.
- Ha a céltáblában még nincs engedélyezve a
collationstáblafunkció, a csoportosított oszlop hozzáadása automatikusan lehetővé teszi.
Korlátozások
Az alábbi korlátozások vonatkoznak azokra a Delta-táblákra, amelyeken engedélyezve van a rendezés:
Kompatibilitás és együttműködés:
- Azok a külső olvasók, akik nem ismerik fel a
collationstáblafunkciót, visszaállnakUTF8_BINARY-re, amely hibás rendezési sorrendeket vagy összehasonlításokat eredményezhet. - A deltamegosztás nem támogatott a rendezéssel rendelkező táblák esetében
- Az UniForm nem támogatott kollációval rendelkező táblák esetén.
- A Databricks Runtime által nem felismert rendezéssel külsőleg létrehozott deltatáblák kivételt képeznek lekérdezéskor
- A Scalához vagy a Pythonhoz készült OSS Delta Lake API-k nem támogatják a rendezést. Spark SQL- vagy DataFrame API-k használata
Lekérdezési és funkciókorlátozások:
- Az csoportosított oszlopok nem használhatók kényszerekben
CHECK - Az csoportosított oszlopokra nem lehet hivatkozni a létrehozott oszlopkifejezésekben
- Az összevont oszlopok nem használhatók Bloom-szűrő indexekkel.
- Az csoportosított oszlopokra nem lehet hivatkozni a strukturált streamelési állapotalapú lekérdezésekben (összesítések, illesztések, deduplikációk)
- A
MAPkulcs nem lehet csoportosított sztring. Csak aMAPértékek támogatják a rendezést