Prozess zur Erstellung des benutzerdefinierten semantischen Modells

Um das semantische Modell um neue Tabellen, Spalten oder Beziehungen zu erweitern, ist folgender Prozess einzuhalten:

  1. Im Power-BI-Arbeitsbereich das Dataset im Bearbeitungsmodus öffnen. In diesem Schritt wird das Dataset in ein Large Semantic Model umgewandelt.

  2. Nach der Umwandlung steht ein Download-Link für das Dataset zur Verfügung.

  3. Das Dataset herunterladen. (Dieser Vorgang kann je nach Größe des Datasets einige Minuten dauern.)

  4. Das Dataset in Power BI Desktop öffnen.

  5. Bei entsprechender Aufforderung auf 'Änderungen verwerfen' klicken, damit die von TOM generierten Abfragen nicht lokal erneut angewendet werden.

  6. Nach diesem Schritt kann das Dataset erweitert werden durch:

    • Bearbeiten bestehender Abfragen

    • Hinzufügen neuer benutzerdefinierter Tabellen, Spalten und Beziehungen

    • Erweitern bestehender Rollenregeln, damit RLS auch auf die neuen benutzerdefinierten Tabellen angewendet wird

  7. Beim Einbringen neuer Daten ist der Import-Modus statt des Direct-Query-Modus zu verwenden.

  • Es ist nicht erlaubt, den Namen des LA-Semantikmodells zu ändern.

  • Dem semantischen Modell von Learning Analytics dürfen keine neuen Rollen hinzugefügt werden, da nur die bestehenden Rollen im Analytics Backend zugeordnet sind.

  • Es ist nicht erlaubt, die Tabellen des LA-Semantikmodells zu verändern.

  • Es ist nicht erlaubt, beim Erweitern der Abfrage für bestehende Standardtabellen im LA-Semantikmodell einen neuen Join zu erstellen.

  • Es ist nicht erlaubt, verwaltete RLS-Berechtigungen zu überschreiben (aclCourse, BUResponsibilities, DirectSupervisor, PersonEditRights, PersonViewRights).

Wartung

Benutzerdefinierte Änderungen am semantischen Modell bleiben erhalten, wenn das Standard-Semantikmodell im Power-BI-Arbeitsbereich neu bereitgestellt wird. Dabei sind die folgenden Punkte zu beachten.

  • Alle benutzerdefinierten Änderungen müssen im Power BI Service veröffentlicht werden, um Inkonsistenzen zu vermeiden, bevor das LA-Semantikmodell von Scheer IMC veröffentlicht wird.

  • Es wird dringend empfohlen, vor der Bereitstellung des Standard-LA-Semantikmodells von Scheer IMC im Power-BI-Arbeitsbereich eine lokale Kopie des LA-Semantikmodells als Backup herunterzuladen. Schlägt die Aktualisierung fehl, kann das Backup verwendet werden, um benutzerdefinierte Spalten, Tabellen und Measures wiederherzustellen.

  • Bei komplexeren Szenarien wird dringend empfohlen, auch die Stage- und REF-Umgebung mit Learning Analytics zu verbinden. (Benutzerdefinierte LA-Entwicklung, die Datenbankverbindungen erfordert, ist nur auf einer REF-Umgebung möglich.)

Werden dieselben Daten sowohl im benutzerdefinierten semantischen Modell als auch im LA-Semantikmodell eingeführt, kann es vorkommen, dass die eingeführten Beziehungen im Konflikt stehen und zirkuläre Abhängigkeiten entstehen, wodurch die Aktualisierung fehlschlägt.

Namenskonvention für benutzerdefinierte Objekte

Alle benutzerdefinierten Objekte müssen mit dem Präfix CSEM_ versehen sein (Groß-/Kleinschreibung wird nicht unterschieden).

Objekttyp

Namensregel

Beispiel

Benutzerdefinierte Tabelle

Präfix CSEM_

CSEM_MyCustomTable

Benutzerdefinierte Spalte auf einer Standardtabelle

Präfix CSEM_

CSEM_custom_field

Benutzerdefiniertes Measure auf einer Standardtabelle

Präfix CSEM_

CSEM_CustomKPI

Benutzerdefinierte Beziehung

Mindestens eine Seite muss eine CSEM_-Tabelle oder -Spalte sein

CSEM_MyTableDimPerson

Benutzerdefinierte JOIN-Klausel in SQL

Muss einen CSEM_-Bezeichner referenzieren

LEFT JOIN CSEM_MyTable ON ...

Benutzerdefinierter SELECT-Ausdruck in SQL

Alias muss mit CSEM_ beginnen

t.value AS CSEM_my_field

Jedes Objekt, das nicht der CSEM_-Namenskonvention folgt, wird bei der nächsten Standard-Bereitstellung des LA-Semantikmodells gelöscht.

Was erweitert werden kann

Die folgenden Entitäten werden bei der erneuten Bereitstellung des LA-Semantikmodells als Snapshot gesichert und wiederhergestellt.

Benutzerdefinierte Tabellen (CSEM_-Tabellen)

Es können vollständig neue Tabellen im Power-BI-Dataset erstellt werden.

Vorgehen:

  • Eine Tabelle mit einem Namen anlegen, der mit CSEM_ beginnt.

  • Deren Partitionen (M-Ausdrücke), Spalten und Measures nach Bedarf definieren.

Was erhalten bleibt:

  • Die vollständige Tabellendefinition (Partitionen, Spalten, Measures, Hierarchien).

  • Beziehungen, an denen die Tabelle beteiligt ist (siehe unten).

Benutzerdefinierte Tabellen werden nicht verwaltet

CSEM_-Tabellen werden vollständig selbst verwaltet. Die Anwendung:

  • erstellt, ändert oder validiert sie nicht,

  • fügt sie nicht den mehrsprachigen Übersetzungen hinzu,

  • erstellt für sie keine RLS-Regeln (zusätzliche RLS-Berechtigungen müssen manuell hinzugefügt werden),

  • aktualisiert sie nicht separat, sie folgen dem Aktualisierungsplan auf Dataset-Ebene.

Benutzerdefinierte Spalten auf Standardtabellen

Benutzerdefinierte Spalten können zu bestehenden Standardtabellen hinzugefügt werden (z. B. DimPerson, DimCourse).

SortByColumn-Referenzen werden aufgelöst, nachdem alle Spalten wiederhergestellt wurden. Spaltenübergreifende Sortierabhängigkeiten innerhalb desselben Snapshots werden dadurch unterstützt.

Unterstützte Spaltentypen:

Typ

Erhaltene Eigenschaften

DataColumn

Name, SourceColumn, DataType, Description, DisplayFolder, IsHidden, FormatString, SummarizeBy, DataCategory, IsAvailableInMDX, SortByColumn

CalculatedColumn

Name, Expression (DAX), DataType, Description, DisplayFolder, IsHidden, FormatString, SummarizeBy, DataCategory, IsAvailableInMDX, SortByColumn

Anforderungen:

  • Der Spaltenname muss mit CSEM_ beginnen.

  • Für DataColumn muss die zugrunde liegende SQL-Abfrage die Daten für diese Spalte ebenfalls zurückgeben, dafür ist eine passende SQL-Anpassung hinzuzufügen. Fehlt die SQL-Anpassung, wird die Spalte zwar wiederhergestellt, die Dataset-Aktualisierung schlägt jedoch fehl, da die Quellspalte im Abfrageergebnis nicht vorhanden ist. Dafür ist Folgendes erforderlich:

    • Das Feld der SELECT-Klausel des M-Ausdrucks hinzufügen (mit Alias CSEM_).

    • Optional eine JOIN-Klausel hinzufügen, falls die Daten aus einer anderen Tabelle stammen.

  • Die SQL-Anpassung wird automatisch erkannt und erhalten.

Benutzerdefinierte Measures auf Standardtabellen

Benutzerdefinierte DAX-Measures können zu bestehenden Standardtabellen hinzugefügt werden.

Anforderungen:

  • Der Measure-Name muss mit CSEM_ beginnen.

Was erhalten bleibt: Name, Expression (DAX), Description, DisplayFolder, FormatString, IsHidden, DataCategory.

Benutzerdefinierte Beziehungen

Beziehungen, an denen mindestens ein CSEM_-Objekt (Tabelle oder Spalte) beteiligt ist, werden automatisch als Snapshot gesichert und wiederhergestellt.

Was die Snapshot-Erstellung auslöst:

  • Der Name von FromTable oder ToTable der Beziehung beginnt mit CSEM_, ODER

  • der Name von FromColumn oder ToColumn der Beziehung beginnt mit CSEM_.

Was erhalten bleibt:

Eigenschaft

Detail

Name

Bezeichner der Beziehung

From-/To-Tabelle und -Spalte

Nach dem Rebuild anhand des Namens aufgelöst

IsActive

Ob die Beziehung aktiv ist

CrossFilteringBehavior

Single / Both

SecurityFilteringBehavior

OneWay / BothDirections / None

FromCardinality / ToCardinality

Many / One / None

Beziehungen zwischen zwei Standardobjekten (nicht CSEM_) bleiben nicht erhalten, es sei denn, mindestens eine Seite trägt das Präfix CSEM_.

SQL-Anpassungen an Standardtabellen

Änderungen an den SQL-Abfragen, die in den M-Ausdrücken der Partitionen von Standardtabellen eingebettet sind, bleiben erhalten.

Alle SQL-Anpassungen werden pro UNION-Abfrageblock nachverfolgt. Tabellen, deren M-Ausdruck eine UNION- oder UNION-ALL-Abfrage enthält, werden dadurch vollständig unterstützt, wobei jeder Abfrageblock unabhängig nachverfolgt wird.

Was erkannt und erhalten wird:

Art der Anpassung

Erkennungslogik

Verhalten bei der Wiederherstellung

Hinzugefügte SELECT-Ausdrücke

Neue Ausdrücke in der SELECT-Liste, deren Alias mit CSEM_ beginnt

Werden wieder an die SELECT-Liste des passenden Abfrageblocks angehängt

Hinzugefügte JOIN-Klauseln

Neue JOIN-/APPLY-Klauseln, die einen CSEM_-Bezeichner referenzieren

Werden vor der ersten Klausel nach FROM wieder eingefügt (WHERE / GROUP BY usw.)

Hinzugefügte WHERE-Prädikate

Neue AND-Prädikate auf oberster Ebene, die in der Basisabfrage nicht vorhanden sind

Werden an die WHERE-Klausel des passenden Abfrageblocks angehängt

Entfernte Standard-WHERE-Prädikate

Basisprädikate, die in der aktiven Abfrage fehlen

Werden aus dem neu erstellten Basis-SQL erneut entfernt

Hinzugefügte GROUP-BY-Ausdrücke

Neue Ausdrücke in der GROUP-BY-Klausel

Werden an die GROUP-BY-Klausel des passenden Abfrageblocks angehängt

Hinzugefügte HAVING-Prädikate

Neue AND-Prädikate auf oberster Ebene in der HAVING-Klausel

Werden an die HAVING-Klausel des passenden Abfrageblocks angehängt

Hinzugefügte ORDER-BY-Ausdrücke

Neue Ausdrücke in der ORDER-BY-Klausel

Werden an die ORDER-BY-Klausel des passenden Abfrageblocks angehängt

Unterstützte JOIN-Typen:

Der Parser erkennt alle gängigen SQL-JOIN- und -APPLY-Schlüsselwörter:

LEFT OUTER JOIN RIGHT OUTER JOIN FULL OUTER JOIN
INNER JOIN LEFT JOIN RIGHT JOIN
FULL JOIN CROSS JOIN OUTER APPLY CROSS APPLY
JOIN

Eine JOIN-Klausel wird nur dann als Snapshot gesichert, wenn sie irgendwo im Text einen CSEM_-Bezeichner enthält.

Praxisbeispiel — Hinzufügen einer Quellspalte zu DimPerson:

  • Im Tabular Editor eine DataColumn mit dem Namen CSEM_ExternalID und SourceColumn = CSEM_ExternalID hinzufügen.

  • Den M-Ausdruck der Partition von DimPerson bearbeiten, um p.external_id AS CSEM_ExternalID zur SELECT-Liste hinzuzufügen.

  • Optional LEFT JOIN ext.ExternalPersons AS ep ON p.PersonID = ep.PersonID hinzufügen, falls die Daten aus einer anderen Tabelle stammen.

Sowohl die Spaltendefinition als auch die SQL-Änderungen werden als Snapshot gesichert und bei jeder weiteren Bereitstellung erneut angewendet.

Zusätzliche RLS-Berechtigungen

Zusätzliche RLS-Tabellenberechtigungen können den verwalteten Rollen für Tabellen hinzugefügt werden, die nicht Teil des verwalteten Standardumfangs sind (z. B. CSEM_-Tabellen oder Standardtabellen ohne Standard-RLS-Regel).

Was erhalten bleibt: RoleName, TableName, FilterExpression.

Beispiel: Wird ein DAX-Zeilenfilter auf CSEM_MyTable für die Rolle aclCourse hinzugefügt, bleibt diese Berechtigung bei jeder erneuten Bereitstellung erhalten.

Hierarchien

Hierarchien auf CSEM_-Tabellen bleiben erhalten, da die gesamte Tabelle unverändert bleibt.

Zu Standardtabellen hinzugefügte Hierarchien werden nicht als Snapshot gesichert oder wiederhergestellt. Nur Hierarchien, die Teil des Kerncodes sind (z. B. Gruppenhierarchien), überstehen die erneute Bereitstellung.

Einschränkungen

Einschränkungen beim Parsen von SQL-Anpassungen

Der SQL-Diff-Mechanismus verwendet einen textbasierten Parser. Er hat die folgenden bekannten Einschränkungen:

Einschränkung

Detail

Nur Klauseln auf oberster Ebene

Änderungen innerhalb von Subqueries oder CTEs werden nicht erkannt

Mit AND verknüpfte WHERE-/HAVING-Prädikate

ODER-verknüpfte oder komplexe Prädikatbäume werden möglicherweise nicht korrekt aufgeteilt

Groß-/Kleinschreibung wird nicht unterschieden, Whitespace wird normalisiert

Kleinere Neuformatierungen werden toleriert, eine strukturelle Umordnung einer Klausel kann den Diff jedoch verwirren

Abweichende Anzahl von UNION-Blöcken

Enthält das aktive SQL mehr UNION-Blöcke als das Basis-SQL, werden die zusätzlichen Blöcke nicht verglichen und Anpassungen darin nicht als Snapshot gesichert

JOIN-Erkennung erfordert CSEM_-Bezeichner

Ein JOIN ohne Bezug zu einem CSEM_-Objekt wird (bewusst) nicht als Snapshot gesichert

Kann der Parser eine Anpassung nicht extrahieren oder erneut anwenden, wird ein Fehler protokolliert und das SQL der betroffenen Tabelle bleibt unverändert.

Benutzerdefinierte Rollen bleiben nicht erhalten

Werden vollständig neue Rollen angelegt (keine der vier verwalteten Rollen), werden diese bei der erneuten Bereitstellung gelöscht, da während der Wipe-Phase model.Roles.Clear() aufgerufen wird.

Nur die verwalteten Rollen und ihre zusätzlichen Berechtigungen bleiben erhalten.

Cultures und Expressions werden geleert

Alle Model-Cultures (Übersetzungen) und gemeinsam genutzten M-Ausdrücke werden geleert und aus dem Code neu generiert. Manuelle Ergänzungen daran gehen dabei verloren.

SortByColumn-Referenzen

Hat eine benutzerdefinierte Spalte eine SortByColumn-Referenz, muss die referenzierte Spalte zum Zeitpunkt der Wiederherstellung existieren. Wurde die Zielspalte in einer neuen Version des Kernmodells umbenannt oder entfernt, schlägt die Wiederherstellung der SortByColumn-Referenz fehl (wird als Fehler protokolliert, die Spalte wird trotzdem ohne Sortierung hinzugefügt).

Kurzübersicht: Was übersteht die erneute Bereitstellung?

Element

Bleibt erhalten?

Bedingung

CSEM_-Tabellen

Ja

Immer erhalten

CSEM_-Spalten auf Standardtabellen

Ja

Name muss mit CSEM_ beginnen

CSEM_-Measures auf Standardtabellen

Ja

Name muss mit CSEM_ beginnen

CSEM_-Beziehungen

Ja

Mindestens eine Seite muss ein CSEM_-Objekt sein

SQL-SELECT-/WHERE-Anpassungen

Ja

Automatisch per Diff erkannt

Zusätzliche RLS-Berechtigungen (nicht verwaltete Tabelle)

Ja

Nur auf verwalteten Rollen

Nicht-CSEM_-Spalten/-Measures

Nein

Werden bei erneuter Bereitstellung gelöscht

Benutzerdefinierte Rollen

Nein

Werden bei erneuter Bereitstellung gelöscht

Hierarchien auf Standardtabellen

Nein

Werden nicht als Snapshot gesichert

Geänderte verwaltete RLS-Berechtigungen

Nein

Werden vom Code überschrieben

Cultures / Übersetzungen

Nein

Werden aus dem Code neu generiert

Gemeinsam genutzte M-Ausdrücke

Nein

Werden aus dem Code neu generiert