Hinweis
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, sich anzumelden oder das Verzeichnis zu wechseln.
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, das Verzeichnis zu wechseln.
Sie können Sortierungen für Zeichenfolgenfelder angeben und Delta-Tabellen lesen, die Sortierungen in Databricks Runtime 16.4 LTS und höher verwenden.
Durch das Aktivieren der Sortierung für eine Tabelle wird das collations-preview Writer-Tabellenfeature hinzugefügt. Siehe Delta Lake Featurekompatibilität und Protokolle.
Hinweis
Standardmäßig legt Delta Lake die Sortierung für Zeichenfolgenfelder auf UTF8_BINARY.
Erstellen Sie eine Tabelle mit Kollation auf Spaltenebene
Sie können eine neue Tabelle mit Sortierung auf Spaltenebene erstellen, indem Sie den folgenden Befehl verwenden:
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
Ändern einer Tabellenspalte zum Angeben der Sortierung
Sie können eine vorhandene Spalte aktualisieren, um sortierung mit den folgenden Befehlen zu verwenden:
ALTER TABLE tableName ALTER COLUMN columnName TYPE newType
So entfernen Sie eine nicht standardmäßige Sortierung (sofern vorhanden):
ALTER TABLE tableName ALTER COLUMN columnName TYPE STRING COLLATE UTF8_BINARY
So ändern Sie die Spaltensortierung in utf8_lcase:
ALTER TABLE tableName ALTER COLUMN columnName TYPE STRING COLLATE UTF8_LCASE
Durch das Ändern der Sortierung für eine Tabelle werden statistiken oder datenlayouts für zuvor geschriebene Daten nicht automatisch aktualisiert. Um das Überspringen von Dateien über historische Daten unter der neuen Sortierung zu verbessern, empfiehlt Databricks Folgendes:
Führen Sie
ANALYZE table_name COMPUTE DELTA STATISTICSaus, um die Statistik zum Dateiüberspringen für vorhandene Datendateien zu aktualisieren.Führen Sie für Tabellen mit aktivierter Flüssigkeitsclusterung
OPTIMIZE FULL table_nameaus, um die Flüssigkeitsclusterung zu aktualisieren.Gehen Sie für Tabellen, die verwenden
ZORDER, wie folgt vor:Deaktivieren Sie die inkrementelle Optimierung in der Spark-Sitzung, indem Sie die Standardkonfiguration spark mit dem folgenden Befehl außer Kraft setzen:
SET spark.databricks.optimize.incremental=falseFühren Sie den Befehl aus
OPTIMIZE table_name ZORDER BY zorder_column, um alle vorhandenen Datendateien neu zu schreiben.
Die Kollation wird stets von Azure Databricks in den Ergebnissen der Abfrage berücksichtigt.
Deaktivieren der Kollation für eine Tabelle
Sie müssen die Sortierung für jede Zeichenfolgenspalte in einer Tabelle explizit deaktivieren, bevor Sie das Sortierfeature ablegen.
Verwenden Sie die folgende Syntax, um die Sortierung für eine Spalte auf folgendes festzulegen UTF8_BINARY:
ALTER TABLE table_name
ALTER COLUMN column_name
TYPE STRING
COLLATE UTF8_BINARY
Führen Sie zum Ablegen des Tabellenfeatures den folgenden Befehl aus:
ALTER TABLE table_name
DROP FEATURE collations-preview
Weitere Informationen finden Sie unter Löschen eines Delta Lake-Tabellenfeatures und Herabstufen des Tabellenprotokolls.
Schemaentwicklung und Sortierung
Die Sortierung interagiert mit der Schemaentwicklung mithilfe der folgenden Regeln:
- Wenn in der Zieltabelle bereits eine Quellspalte vorhanden ist, bleibt die Sortierung der Spalte in der Zieltabelle unverändert.
- Wenn eine Quellspalte die Sortierung angegeben hat, verwendet die Spalte, die der Zieltabelle hinzugefügt wurde, die angegebene Sortierung.
- Wenn die Zieltabelle keine Sortierung aktiviert hat, wenn eine Spalte mit Sortierung hinzugefügt wird, wird das
collations-previewTabellenfeature aktiviert.
Einschränkungen
Für Tabellen mit aktivierter Sortierung gelten die folgenden Einschränkungen:
- Delta-Tabellen, die extern mit einer Sortierung erstellt wurden, die von der Databricks-Runtime nicht erkannt wird, lösen eine Ausnahme aus, wenn abgefragt wird.
- Es gibt keine Unterstützung für Delta Sharing.
- Zusammengefasste Spalten können nicht mit
CHECKEinschränkungen verwendet werden. - Generierte Spalten können keine Kollation verwenden.
- Zusammengeführte Spalten können nicht mit Bloom-Filter-Indexspalten verwendet werden.
- Es gibt keine Unterstützung für die Sortierung in OSS Delta Lake-APIs für Scala oder Python. Zum Aktivieren der Sortierung müssen Sie Spark SQL- oder DataFrame-APIs verwenden.
- Dynamische Partitionsüberschreibung wird für sortierte Spalten nicht unterstützt.
- Auf sortierte Spalten kann in strukturierten Streaming-Zustandsabfragen nicht verwiesen werden.
- Externe Leser, die die
collations-previewTabellenfunktion ignorieren, fallen auf die Standardsortierung vonUTF8_BINARYzurück. - Ein
MAPkann keinen Schlüssel haben, der eine sortierte Zeichenfolge ist. - UniForm funktioniert nicht mit Sortierungen.