#### Solutions DAX réutilisables pour récupérer dynamiquement les infos utiles de votre modèle Power BI et le documenter
On ne cessera jamais de le dire, vous devez toujours documenter vos modèles Power BI. Non seulement pour ceux qui vont les utiliser après vous, mais également pour vous-même quand vous allez y revenir quelques mois plus tard.
Et la bonne nouvelle, c'est qu'aujourd'hui cela peut se faire presque automatiquement.
Avec les fonctions ```INFO.VIEW.TABLES```, ```INFO.VIEW.COLUMNS``` et ```INFO.VIEW.MEASURES```, vous pouvez récupérer les métadonnées et informations utiles sur les tables, colonnes et mesures de votre modèle de données dans Power BI. Certaines métadonnées sont générées automatiquement, d’autres comme la description des tables ou champs doivent être renseignées dans les propriétés de l’objet.
Nous proposons ici par exemple trois tables calculées que vous devez ajouter systématiquement à tous vos rapports Power BI afin de récupérer automatiquement ces informations pour alimenter la documentation de vos modèles sémantiques.
Pour chaque table, nous nous sommes limités aux informations essentielles, mais il est possible d’aller plus loin en ajoutant d’autres informations retournées par les fonctions ```INFO.VIEW.TABLES```, ```INFO.VIEW.COLUMNS``` et ```INFO.VIEW.MEASURES```. Vous pouvez également enrichir ces tables avec des indicateurs statistiques comme le nombre de lignes de chaque table, le min et le max de chaque colonne, etc.
- Créer une table de documentation des tables de votre modèle
```
Doc Tables =
--- On suppose ici que les seules les tables de documentation commencent par Doc
--- Ex : Doc Tables, Doc Colonnes, Doc Mesures
VAR MaTable = SELECTCOLUMNS(
INFO.VIEW.TABLES(),
"Table", [Name], -- Nom de la table
"Description", [Description], -- Description textuelle de la table
"Mode Stockage", [StorageMode], -- Mode de stockage (Import, DirectQuery)
"Calcul", [Expression], -- Expression DAX si table calculée
"Privé", [IsPrivate] -- Indique si la table est privée dans le modèle
)
VAR MaTableFiltree = FILTER(
MaTable,
-- Si l'option date/heure automatique activée, filtrer les tables générées
LEFT( [Table], LEN("LocalDateTable") ) <> "LocalDateTable" &&
LEFT( [Table], LEN("DateTableTemplate") ) <> "DateTableTemplate" &&
-- Exclure les tables de documentation elles-mêmes du résultat final
LEFT( [Table], LEN("Doc") ) <> "Doc"
)
RETURN
MaTableFiltree
```
- Créer une table de documentation des colonnes de votre modèle
```
Doc Colonnes =
--- On suppose ici que les seules les tables de documentation commencent par Doc
--- Ex : Doc Tables, Doc Colonnes, Doc Mesures
VAR MaTable = SELECTCOLUMNS(
INFO.VIEW.COLUMNS(),
"Colonne", [Name], -- Nom de colonne dans le modèle
"Table", [Table], -- Nom de la table à laquelle appartient la colonne
"Colonne source", [SourceColumn], -- Nom de la colonne dans la base d'origine
"Type de données", [DataType], -- Type de données de la colonne
"Type de colonne", [Type], -- Type de colonne (col. de données, calculée...)
"Categorie", [DataCategory], -- Catégorie de données (adresse, ville...)
"Description", [Description], -- Description textuelle de la colonne
"Unique", [IsUnique], -- Indique si les valeurs sont uniques
"Clé", [IsKey], -- Indique si la colonne est une clé primaire
"Nullable", [IsNullable], -- Indique si la colonne peut contenir des null
"Calcul", [Expression], -- Expression DAX si colonne calculée
"Format", [FormatString] -- Chaîne de format (monétaire, date...)
)
VAR MaTableFiltree = FILTER(
MaTable,
-- Exclure le numéro de ligne masqué généré automatiquement par Power BI
[Categorie] <> "RowNumber" &&
-- Si l'option date/heure automatique activée, filtrer les tables générées
LEFT( [Table], LEN("LocalDateTable") ) <> "LocalDateTable" &&
LEFT( [Table], LEN("DateTableTemplate") ) <> "DateTableTemplate" &&
-- Exclure les tables de documentation elles-mêmes dans le résultat final
LEFT( [Table], LEN("Doc") ) <> "Doc"
)
RETURN
MaTableFiltree
```
- Créer une table de documentation des mesures de votre modèle
```
Doc Mesures =
--- On suppose ici que la table de documentation des mesures est Doc Mesures
VAR MaTable = SELECTCOLUMNS(
INFO.VIEW.MEASURES(),
"Mesure", [Name], -- Nom de la mesure
"Table", [Table], -- Nom de la table associée à la mesure
"Description", [Description], -- Description textuelle de la mesure
"Calcul", [Expression], -- Expression DAX qui définit la mesure
"Format", [FormatStringDefinition], -- Chaine de format (monétaire, date...)
"Etat", [State] -- Etat de la mesure (valide ou erreur)
)
VAR MaTableFiltree = FILTER(
MaTable, [Table] <> "Doc Mesures" -- Exclure la table Doc Mesures
)
RETURN
MaTableFiltree
```
Ecrit par
Michael Konan
Michael est consultant et formateur Power BI, et aussi fondateur de Power BI University.
Issu d'une formation initiale d'ingénieur statisticien économiste avant d'obtenir un master en statistique
et data science, Michael s'est reconverti en Business Intelligence et spécialisé en Power BI.
Il travaille à temps plein avec Power BI depuis 2019. Il intervient en tant que Consultant Power BI
auprès de grands groupes et accompagne les étudiants et professionnels en entreprise dans la maîtrise de
Power BI.
Partager sur
Newsletter
Abonnez vous à notre newsletter, pour ne rien rater.