DMVs angewandt: Finde Berechnungen im Cube mit einer bestimmten Zeichenkette

In 2018 hatte ich schon mal was über DMVs (Data Management Views) geschrieben – damals noch über die aus der MOLAP-Welt. Es gibt sie natürlich auch für tabulare Modelle (s. Link oben).

Über die DMVs kann man sich z.B. ausgeben lassen,

  • wann Partitionen zuletzt verarbeitet wurden
  • in welchen Ordnern welche Kennzahlen liegen
  • welche Tabellen es gibt
  • mit welchen Formeln berechnete Spalten oder Measures berechnet werden

Dazu führt man die entsprechende DMV (Syntax s. obigen Link) einfach im SQL Server Management Studio in einer neuen Query aus. Die Query kann auch eine DAX-Query sein, auch wenn es natürlich kein DAX ist, was wir hier ausführen.

Ich hatte nun einmal die Aufgabenstellung alle Measures zu finden, die einen bestimmten String (z.B. einen Measurenamen) enthalten. Leider unterstützt die DMV-Sprache kein LIKE 🙁

Aber es wird die INSTR-Funktion unterstützt. Sucht man z.B. alle Measures, die „Mapping Fachabt“ enthalten, feuert man folgende Abfrage ab:

SELECT * FROM $System.TMSCHEMA_MEASURES
WHERE INSTR([Expression], 'Mapping Fachabt', 1)>1

Noch ein Hinweis: Wenn man nach einem einfachen Anführungszeichen sucht (was ja in der obigen Syntax als Indikator für eine Zeichenkette fungiert), muss man es verdoppeln. Wenn man nach „Filter(All(“ plus einem einfachen Anführungszeichen am Ende suchen will, kann man das mit folgender Abfrage machen:

SELECT * FROM $System.TMSCHEMA_MEASURES
WHERE INSTR([Expression], 'Filter(All(''', 1)>1