Das Wichtigste in Kürze
- Die Typen der Endpunkte einer Beziehung müssen übereinstimmen. Abweichungen blockieren das Release.
- Gold und TMDL (oder die Modellmetadaten) ändern sich bei Schlüsseltypen gemeinsam, mit einem Refresh-Vertrag.
- Standards für die Typen von Datumsschlüsseln und degenerierten Dimensionen sind schriftlich festgelegt und für neue Fakten Pflicht.
- CI prüft die Typen der Beziehungsendpunkte in den Modelldefinitionen.
- Role-Playing-Dimensionen werden in der Repo-Doku mit Zeilen für die FK-Typen inventarisiert.
- Fixture-Abfragen belegen nach dem Veröffentlichen, dass kritische Beziehungen nicht leer filtern.
Leere Visuals sind oft Typkonflikte, kein Beweis dafür, dass "DAX schwer ist". Ein int64-Schlüssel in der Faktentabelle neben einem string-Schlüssel in der Dimension scheitert still. Role-Playing-Dimensionen vervielfachen den Schaden: Ein einziger falscher FK-Typ bricht mehrere Beziehungen, die im Diagramm alle gut aussahen.
Bring Gold SQL und TMDL gemeinsam in Einklang. Datumsschlüssel und degenerierte Dimensionen verdienen ausdrückliche Typstandards. Ergänze einen CI-Check für die Typen der Beziehungsendpunkte. Passende Typen sind billiger als ein weiterer Nachmittag vor leeren Karten.
Benanntes Modell: passende Endpunkte
- FK-Typ in der Faktentabelle: der Schlüssel in der Faktentabelle, so wie Gold ihn schreibt (int64, Datumsschlüssel oder string laut Vertrag).
- PK-Typ in der Dimension: der passende Schlüssel in der Dimension, durchgehend derselbe Typ, auch bei Role-Plays.
- Role-Play-Inventar: Jede Rolle (Rolle A, B, C, D) führt Dimension, FK in der Faktentabelle und Typ im Repo auf.
- Gate: Gold und TMDL ändern sich als ein Paket mit einem Vertrag für Refresh oder erneutes Veröffentlichen. CI prüft die Typen links und rechts, Fixtures belegen die Filter.
Abbildung 1. Passende Endpunkte. Beziehungslinien im Diagramm reichen nicht. Die Schlüsseltypen von Fakt und Dimension müssen übereinstimmen, auch über Role-Plays hinweg, sonst bleiben die Karten leer.
Kontext und Rahmenbedingung
Ein häufiger Fehler: Jede Beziehungslinie ist gezeichnet, und trotzdem tun mehrere zur Abfragezeit nichts Sinnvolles. Die Lösung ist kein cleveres Measure. Der Schlüssel der Faktentabelle und die Role-Playing-Dimension müssen durchgehend denselben Typ haben. Dann füllen sich die Visuals, als hätten sie höflich gewartet.
Korrigiere die Spaltentypen in Gold und das TMDL (oder die Modellmetadaten) in einem Change-Set. Reine Dateiänderungen am TMDL ohne Refresh-Vertrag lassen die alten Typen im wirksamen Modell stehen, bis du den Rest erledigst. Standards für Datumsschlüssel und degenerierte Dimensionen verhindern lokalen Erfindungsreichtum. CI sollte bei nicht passenden Endpunkten genauso fehlschlagen wie bei kaputten Tests.
Abbildung 2 zeigt die Einordnung von Beziehungen in Learn. Linien können erscheinen, obwohl die Typen der Endpunkte nicht übereinstimmen.

Abbildung 2. Leere Visuals sind oft Beziehungsendpunkte mit int64 gegen string, kein Beweis dafür, dass DAX schwer ist. Quelle: Microsoft Learn: Beziehungen verstehen.
Abbildung 3 zeigt, warum Lake-Tabellen und Modellspalten gemeinsam typisiert werden müssen, wenn Direct Lake oder Gold das Modell speist.

Abbildung 3. Bring die Typen in Gold SQL und das TMDL gemeinsam in Einklang und sichere die Typen der Beziehungsendpunkte dann in CI ab. Quelle: Microsoft Learn: Direct Lake Speicher.
Design
1. Leere Visuals zuerst als Typrätsel behandeln
Bevor du DAX umschreibst, prüf die Typen der Beziehungsendpunkte und Stichproben der Schlüssel. Kläre, ob die Werte übereinstimmen würden, wenn die Typen passten. Viele Kaninchenbauten zum "Filterkontext" beginnen als int gegen string. Heb dir die DAX-Archäologie für die Zeit auf, wenn die Typen langweilig sind.
2. Role-Playing-Dimensionen als Multiplikatoren inventarisieren
Jedes Role-Play verdoppelt das Risiko. Liste sie auf. Prüf jeden FK, der auf sie zeigt. Eine einzige als string typisierte Datumsrolle kann eine ganze Familie von Seiten leeren. Role-Plays sind mächtig und unnachsichtig. Abbildung 4 zeigt die Form der Checkliste, die es wert ist, neben dem TMDL zu liegen.
Abbildung 4. Inventar der FK-Typen für Role-Plays. Neue Rolle heißt neue Zeile. Wenn CI fehlschlägt, zeigt die Checkliste, welche Rolle abgewichen ist.
3. Gold und TMDL gemeinsam ändern
Wenn Gold einen Schlüssel nach int64 castet, muss die Modellspalte ebenfalls int64 sein, und die Dimension muss passen. Liefere SQL und Modellmetadaten nach Möglichkeit in einem PR aus. Dokumentiere die Schritte für Refresh oder erneutes Veröffentlichen, wenn die Umgebung sie verlangt. Halb aktualisierte Metadaten sind eine Zeitbombe. Abbildung 5 zeigt den sicheren Weg im Vergleich zum halben Update.
Abbildung 5. Ändere Gold und TMDL gemeinsam und halte dann den Refresh-Vertrag ein. Korrekturen nur am TMDL oder nur in Gold lassen das wirksame Modell unpassend zurück.
4. Datumsschlüssel und degenerierte Dimensionen standardisieren
Leg eine Regel fest: int yyyymmdd, date oder datetime, und bleib bei Schlüsseln, die in Beziehungen verwendet werden, dabei. Degenerierte Dimensionen in Faktentabellen brauchen dieselbe Ehrlichkeit. Schreib den Standard in den Modellierungsleitfaden, damit neue Fakten keinen vierten Ansatz erfinden.
5. CI für die Typen der Beziehungsendpunkte ergänzen
Parse die TMDL- oder Modelldefinitionsdateien und prüfe, dass die Spaltentypen links und rechts bei jeder Beziehung übereinstimmen. Lass den Build bei Abweichungen fehlschlagen. Menschen übersehen das im Review, wenn das Diagramm hübsch aussieht. Maschinen ist hübsch egal.
6. Ein Fixture behalten, das die Filter der Beziehung belegt
Automatisierte Modelltests oder ein kleines Paket von DAX-Abfragen sollten nach dem Veröffentlichen für bekannte Schlüssel nicht leere Ergebnisse zeigen. Typen können passen und Schlüssel inhaltlich trotzdem auseinanderliegen. Fixtures fangen mit der Zeit beide Fehlerklassen.
Eine praktische Reihenfolge für die Reparatur
Finde die Beziehung, die das leere Visual steuert. Gib die Typen der Endpunkte und fünf Beispielwerte von jeder Seite aus. Gleiche die Typen in Gold an. Gleiche die Modellmetadaten an. Führe Refresh oder erneutes Veröffentlichen nach den Regeln deiner Stufe durch. Lass das Fixture erneut laufen. Erst dann denk über Änderungen am DAX nach. Schreib die Reihenfolge ins Runbook des Teams, damit das nächste leere Visual nicht mit frischer Panik bei Schritt null beginnt.
Degenerierte Schlüssel verdienen dieselbe Disziplin
Degenerierte Dimensionen beginnen oft als strings, "weil die Quelle das so liefert". Wenn sie an Beziehungen oder Role-Plays beteiligt sind, leg einen Typ fest und dokumentiere ihn. Später von string auf int zu wechseln, schreibt die Geschichte auf schmerzhafte Weise um. Richte dich lieber früh am Quellvertrag aus, mit ausdrücklichen Casts nur an der Typisierungsgrenze, die du für die Schlüssel in Bronze oder Gold ohnehin gewählt hast.
Demo-Risiko ist Produktrisiko
Leere Visuals in einer Demo für Stakeholder zerstören Vertrauen schneller als ein verspätetes Feature. Typkonflikte sind besonders gemein, weil die Modellansicht vollständig aussieht. Ein fünfminütiger Check der Endpunkttypen vor Demos ist keine Paranoia. Das ist Release-Hygiene. Setz ihn auf die Demo-Checkliste neben die Smoke-Tests für Zeilenzahlen.
Häufige Fehler
Debugging mit DAX zuerst. Tage verloren, Typen immer noch falsch.
Vertrauen ins Diagramm. Linien gezeichnet, Typen passen nicht.
Korrektur nur am TMDL. Datei geändert, wirksames Modell nicht aktualisiert.
Korrektur nur in Gold. SQL korrekt, Modell weiter als string typisiert.
Spontane Stile für Datumsschlüssel. Jede Faktentabelle erfindet eine eigene Konvention.
Keine CI. Regressionen kommen mit der nächsten "schnellen" Dimension zurück.
So übernehmen oder anpassen
So übernehmen
- Die Typen der Endpunkte einer Beziehung müssen übereinstimmen. Abweichungen blockieren das Release.
- Gold und TMDL/Modellmetadaten ändern sich bei Schlüsseltypen gemeinsam, mit einem Refresh-Vertrag.
- Standards für die Typen von Datumsschlüsseln und degenerierten Dimensionen sind schriftlich festgelegt und für neue Fakten Pflicht.
- CI prüft die Typen der Beziehungsendpunkte in den Modelldefinitionen.
- Role-Playing-Dimensionen werden in der Repo-Doku mit Zeilen für die FK-Typen inventarisiert.
- Fixture-Abfragen belegen nach dem Veröffentlichen, dass kritische Beziehungen nicht leer filtern.
Vor dem Einsatz anpassen
Strenge Typstandards schränken die Flexibilität ein. Flexibilität erzeugt hier vor allem leere Visuals. TMDL in CI zu parsen bedeutet mehr Arbeit an der Pipeline und beseitigt Rätsel in Produktion. PRs für Gold und Modell abzustimmen kann sich langsamer anfühlen als "einfach die Datei anpassen". Langsamer ist in Ordnung, wenn die Alternative ein stiller Filterfehler ist. Die Pflege der Fixtures kostet Zeit und verhindert Demos mit leeren Visuals.
Wichtigste Quellen: die Hinweise zu Beziehungen und Datentypen in Power BI sowie die TMDL-Dokumentation auf Microsoft Learn. Kombiniere die Doku mit CI, damit der Standard dort durchgesetzt wird, wo Leute tatsächlich Modelle ändern.
Fazit
Bring die Typen der Endpunkte in Übereinstimmung. Richte Gold am Modell aus. Standardisiere die Schlüssel. Prüf es in CI. Dann spukt es in den Role-Plays nicht mehr, und die Zeit fürs Debugging fließt wieder in echte Geschäftslogik.
Verwandte Notizen
- Typisierung in Bronze: Ist es eine gute Idee, alles als Strings zu laden? (einmal früh typisieren, damit die Schlüssel standardmäßig passen)
- Fakten neu modellieren: gemeinsame Dimensionen oder getrennte Fakten für sauberere Modelle? (Brückentabellen, wenn zwei Dimensionen sich many-to-many treffen)