Zeichenfolgenspeicher und -sortierung in tabellarischen Modellen

Gilt für: SQL Server Analysis Services Azure Analysis Services Fabric/Power BI Premium

Zeichenfolgen (Textwerte) werden in einem stark komprimierten Format in Tabellenmodellen gespeichert. Aufgrund dieser Komprimierung erhalten Sie unter Umständen unerwartete Ergebnisse, wenn Sie vollständige Zeichenfolgen oder Teilzeichenfolgen abrufen. Da das Zeichenfolgengebietsschema und die Sortierungen hierarchisch vom nächsten übergeordneten Objekt geerbt werden, wenn die Zeichenfolgensprache nicht explizit definiert wird, können das Gebietsschema und die Sortierung des übergeordneten Objekts beeinflussen, wie die einzelnen Zeichenfolgen gespeichert werden, und ob die Zeichenfolge entsprechend der übergeordneten Sortierung eindeutig ist oder mit ähnlichen Zeichenfolgen zusammengefügt wurde.

Dieser Artikel beschreibt den Mechanismus, durch den Zeichenfolgen komprimiert und gespeichert werden, und enthält Beispiele dafür, wie Sortierung und Sprache die Ergebnisse von Textformeln in tabellarischen Modellen beeinflussen.

Speicher

In Tabellenmodellen werden alle Daten stark komprimiert, um eine zu hohe Auslastung des Arbeitsspeichers zu vermeiden. Infolgedessen werden alle Zeichenfolgen, die als lexikalisch äquivalent eingestuft werden können, nur einmal gespeichert. Die erste Instanz der Zeichenfolge wird als kanonische Darstellung verwendet, und anschließend wird jede entsprechende Zeichenfolge im gleichen komprimierten Wert wie das erste Vorkommen indiziert.

Die Hauptfrage lautet folgendermaßen: Woraus besteht eine lexikalisch äquivalente Zeichenfolge? Zwei Zeichenfolgen werden als lexikalisch äquivalent eingestuft, wenn sie als das gleiche Wort gelten. Wenn Sie zum Beispiel in einem englischen Wörterbuch den Begriff violin (Geige) suchen, finden Sie möglicherweise den Eintrag Violin oder violin, abhängig von den redaktionellen Richtlinien, die für das Wörterbuch gelten, doch im Allgemeinen werden beide Begriffe als identisch bzw. äquivalent betrachtet, und die unterschiedliche Schreibweise mit kleinem bzw. großem Anfangsbuchstaben wird ignoriert. In einem Tabellenmodell ist der entscheidende Faktor, durch den bestimmt wird, ob zwei Zeichenfolgen lexikalisch äquivalent sind, nicht die redaktionelle Richtlinie oder die Benutzereinstellung, sondern das Gebietsschema und die Sortierreihenfolge, die der Spalte zugewiesen sind.

Daher sollte die Entscheidung, ob Groß- und Kleinschreibung als identisch oder verschieden behandelt werden sollen, von der Sortierung und dem Gebietsschema abhängen. Für ein bestimmtes Wort innerhalb des Gebietsschemas dient das erste Vorkommen des Wortes, das in einer bestimmten Spalte enthalten ist, daher als kanonische Darstellung des Begriffs, und die Zeichenfolge wird in einem nicht komprimiertem Format gespeichert. Alle anderen Zeichenfolgen werden anhand des ersten Vorkommens getestet, und wenn sie dem Äquivalenztest entsprechen, werden sie dem komprimierten Wert des ersten Vorkommens zugewiesen. Wenn die komprimierten Werte später abgerufen werden, werden sie mit dem nicht komprimierten Wert des ersten Vorkommens der Zeichenfolge dargestellt.

Ein Beispiel veranschaulicht dieses Verfahren. Die folgende Spalte "Klassifizierung - Englisch" wurde einer Tabelle entnommen, die Informationen zu Pflanzen und Bäumen enthält. Für jede Pflanze (die Namen der Pflanzen werden hier nicht angezeigt) wird in der Klassifizierungsspalte die allgemeine Kategorie der Pflanze angegeben.

Klassifizierung - Englisch
trEE
PlAnT
trEE
PlAnT
Plant
Struktur
PlAnT
trEE
tree
PlAnT
trEE

Möglicherweise stammten die Daten aus zahlreichen verschiedenen Quellen, sodass die Schreibweise und die Verwendung von Akzenten inkonsistent war und die Unterschiede unverändert in der relationalen Datenbank gespeichert wurden. Im Allgemeinen sind die Werte jedoch entweder Plant oder Tree, wobei sich nur die Schreibweise (groß/klein) unterscheidet.

Wenn diese Werte in ein Tabellenmodell geladen werden, das die Standardsortierung und die Sortierreihenfolge für amerikanisches Englisch verwendet, ist die Schreibweise nicht von Bedeutung. Dementsprechend würden für die gesamte Spalte nur zwei Werte gespeichert werden:

Klassifizierung - Englisch
trEE
PlAnT

Wenn Sie die Spalte Klassifizierung – Englisch verwenden, werden in Ihrem Modell überall, wo Sie die Pflanzenklassifizierung anzeigen, nicht die ursprünglichen Werte mit ihren verschiedenen Verwendungen von Groß- und Kleinbuchstaben angezeigt, sondern nur die erste instance. Der Grund hierfür ist, dass alle Groß- und Kleinschreibungsvarianten von tree in dieser Sortierung und diesem Gebietsschema als äquivalent betrachtet werden. Daher wurde nur eine Zeichenfolge beibehalten, und die erste Instanz der Zeichenfolge, die vom System gefunden wird, wird gespeichert.

Warnung

Möglicherweise möchten Sie festlegen, welche Zeichenfolge als erste gespeichert werden soll (unter Berücksichtigung der von Ihnen als korrekt eingestuften Schreibweise), doch dies kann sich als sehr schwierig erweisen. Es existiert keine einfache Möglichkeit, im Voraus zu bestimmen, welche Zeile zuerst von der Engine verarbeitet werden soll, vorausgesetzt, dass alle Werte als identisch eingestuft werden. Stattdessen sollten beim Festlegen des Standardwerts alle Zeichenfolgen bereinigt werden, bevor das Modell geladen wird.

Gebietsschema und Sortierungsreihenfolge

Wenn Zeichenfolgen (Textwerte) miteinander verglichen werden, wird Äquivalenz normalerweise durch den kulturellen Aspekt bestimmt, der die Interpretation solcher Zeichenfolgen beeinflusst. In einigen Kulturen kann sich die Bedeutung einer Zeichenfolge durch einen Akzent oder die Großschreibung eines Zeichens vollständig ändern. Daher werden solche Unterschiede in der Regel berücksichtigt, wenn sie Äquivalenz für eine bestimmte Sprache oder einen Bereich festlegen.

Wenn Sie Ihren Computer verwenden, ist er normalerweise bereits entsprechend Ihren eigenen kulturellen Erwartungen und dem linguistischen Verhalten konfiguriert, und Zeichenfolgenoperationen wie das Sortieren und Vergleichen von Textwerten verhalten sich erwartungsgemäß. Die Einstellungen, die sprachspezifisches Verhalten steuern, werden durch die Gebietsschema- und Regionseinstellungen in Windows definiert. Anwendungen lesen diese Einstellungen und ändern deren Verhalten entsprechend. In einigen Fällen verfügt eine Anwendung möglicherweise über eine Funktion, die Ihnen das Ändern des kulturellen Verhaltens der Anwendung oder der Methode zum Zeichenfolgenvergleich ermöglicht.

Wenn Sie eine Tabellenmodelldatenbank erstellen, erbt die Datenbank standardmäßig diese kulturellen und linguistischen Einstellungen im Formular einer Sprachen-ID und -sortierung.

  • Die Sprachen-ID definiert den Zeichensatz, den Sie entsprechend der Kultur für die Zeichenfolgen verwenden möchten.

  • Die Sortierung definiert die Reihenfolge der Zeichen und ihrer Äquivalenz.

Es ist wichtig zu beachten, dass ein Sprachbezeichner nicht nur eine Sprache identifiziert, sondern auch das Land oder die Region, in dem die Sprache verwendet wird. Jede Sprachen-ID weist auch eine Standardsortierungsspezifikation auf. Weitere Informationen zu Sprachen-IDs finden Sie unter Von Microsoft zugewiesene Gebietsschemabezeichner (LCIDs). Sie können die LCID DEC-Spalte verwenden, um die richtige ID zu erhalten, wenn Sie einen Wert manuell einfügen. Weitere Informationen zum SQL-Konzept von Sortierungen finden Sie unter COLLATE (Transact-SQL).. Informationen zu den Sortierungsbezeichnern und den Vergleichsstilen für Windows-Sortierungsnamen finden Sie unter Windows-Sortierungsname (Transact-SQL). Der Artikel SQL Server Sortierungsname (Transact-SQL) ordnet die Windows-Sortierungsnamen den für SQL verwendeten Namen zu.

Sobald die Tabellenmodelldatenbank erstellt wurde, erben alle neuen Objekte im Modell die Sprach- und Sortierattribute von den Datenbankattributen. Dies gilt für alle Objekte. Der Vererbungspfad beginnt beim Objekt und sucht das übergeordnete Element für jedes zu erbende Sprach- und Sortierattribut. Wenn keine Attribute gefunden werden, wird der Vorgang am Anfang fortgesetzt, und die Sprach- und Sortierattribute werden auf der Datenbankebene gesucht. Anders ausgedrückt: Wenn Sie keine Sprach-und Sortierattribute für ein Objekt angeben, erbt das Objekt standardmäßig die Attribute des nächsten übergeordneten Elements.

Für Spalten werden die Sprach-und Sortierattribute bei der Erstellung gemäß den folgenden Regeln geerbt:

  • Das übergeordnete Dimensionsobjekt wird nach Sprach- und Sortierattributen durchsucht. Wenn beide Werte vorhanden sind, werden sie in die Spaltenattribute kopiert. Wenn nur ein Wert vorhanden ist, wird der andere Wert vom vorhandenen Wert abgeleitet, und beide Werte werden. zugewiesen Falls kein Wert vorhanden ist, fahren Sie mit dem nächsten Schritt fort.

  • Das Datenbankobjekt wird mit der gleichen Methode durchsucht, die in Schritt 1 für Dimensionen beschrieben wurde. Wenn keine Attribute gefunden werden, fahren Sie mit dem nächsten Schritt fort.

  • Das Serverobjekt wird mit der gleichen Methode durchsucht, die in Schritt 1 für Dimensionen beschrieben wurde. Wenn keine Attribute gefunden werden, wird in der Spalte die Windows-Sprachen-ID verwendet, und das Sortierattribut wird von diesem Wert abgeleitet.

Es ist wichtig zu beachten, dass der Sprachbezeichner und die Sortierreihenfolge in der Quelldatenbank in der Regel wenig bis gar keine Auswirkungen darauf haben, wie Werte in der Spalte des tabellarischen Modells gespeichert werden. Eine Ausnahme liegt vor, wenn die Quelldatenbank die angeforderten Werte transformiert oder filtert.