Um das semantische Modell um neue Tabellen, Spalten oder Beziehungen zu erweitern, ist folgender Prozess einzuhalten:
-
Im Power-BI-Arbeitsbereich das Dataset im Bearbeitungsmodus öffnen. In diesem Schritt wird das Dataset in ein Large Semantic Model umgewandelt.
-
Nach der Umwandlung steht ein Download-Link für das Dataset zur Verfügung.
-
Das Dataset herunterladen. (Dieser Vorgang kann je nach Größe des Datasets einige Minuten dauern.)
-
Das Dataset in Power BI Desktop öffnen.
-
Bei entsprechender Aufforderung auf 'Änderungen verwerfen' klicken, damit die von TOM generierten Abfragen nicht lokal erneut angewendet werden.
-
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
-
-
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 |
|
|
Benutzerdefinierte Spalte auf einer Standardtabelle |
Präfix |
|
|
Benutzerdefiniertes Measure auf einer Standardtabelle |
Präfix |
|
|
Benutzerdefinierte Beziehung |
Mindestens eine Seite muss eine |
|
|
Benutzerdefinierte JOIN-Klausel in SQL |
Muss einen |
|
|
Benutzerdefinierter SELECT-Ausdruck in SQL |
Alias muss mit |
|
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 |
|---|---|
|
|
|
|
|
|
Anforderungen:
-
Der Spaltenname muss mit
CSEM_beginnen. -
Für
DataColumnmuss 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
FromTableoderToTableder Beziehung beginnt mitCSEM_, ODER -
der Name von
FromColumnoderToColumnder Beziehung beginnt mitCSEM_.
Was erhalten bleibt:
|
Eigenschaft |
Detail |
|---|---|
|
|
Bezeichner der Beziehung |
|
From-/To-Tabelle und -Spalte |
Nach dem Rebuild anhand des Namens aufgelöst |
|
|
Ob die Beziehung aktiv ist |
|
|
Single / Both |
|
|
OneWay / BothDirections / None |
|
|
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 |
Werden wieder an die SELECT-Liste des passenden Abfrageblocks angehängt |
|
Hinzugefügte JOIN-Klauseln |
Neue JOIN-/APPLY-Klauseln, die einen |
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
DataColumnmit dem NamenCSEM_ExternalIDundSourceColumn=CSEM_ExternalIDhinzufügen. -
Den M-Ausdruck der Partition von
DimPersonbearbeiten, ump.external_id AS CSEM_ExternalIDzur SELECT-Liste hinzuzufügen. -
Optional
LEFT JOIN ext.ExternalPersons AS ep ON p.PersonID = ep.PersonIDhinzufü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 |
Ein JOIN ohne Bezug zu einem |
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 |
|---|---|---|
|
|
Ja |
Immer erhalten |
|
|
Ja |
Name muss mit |
|
|
Ja |
Name muss mit |
|
|
Ja |
Mindestens eine Seite muss ein |
|
SQL-SELECT-/WHERE-Anpassungen |
Ja |
Automatisch per Diff erkannt |
|
Zusätzliche RLS-Berechtigungen (nicht verwaltete Tabelle) |
Ja |
Nur auf verwalteten Rollen |
|
Nicht- |
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 |