CUSTOMDATA |
Donnée personnalisé |
|---|---|
| DAX (Data Analysis Expressions) | |
Syntaxe
| CUSTOMDATA() |
Description
Cette fonction permet de retourner le contenu de la propriété CustomData dans la chaîne de connexion du rapport.
Remarques
- Une fonction conçue pour recevoir des informations depuis l'extérieur du modèle : CUSTOMDATA permet de récupérer le contenu d'une propriété transmise via la chaîne de connexion entre le client et le modèle tabulaire. Cela signifie que la valeur ne vient pas du modèle interne, mais d'un paramètre envoyé par un outil externe, comme un rapport Power BI, un tableau Excel, ou un outil XMLA. Cette capacité à injecter des données externes ouvre la porte à des scénarios dynamiques. Elle joue donc un rôle important dans la personnalisation du comportement du modèle.
- Un outil essentiel pour la sécurité dynamique avancée : Dans la mise en place de RLS dynamique, CUSTOMDATA est souvent utilisé pour identifier l'utilisateur, un rôle, un département ou une clé de sécurité. L'administrateur configure une propriété CustomData dans la chaîne de connexion, et le modèle DAX peut ensuite utiliser cette valeur pour filtrer les données. Cela permet une gestion de sécurité très fine, même dans les scénarios complexes. C'est l'un des usages les plus puissants de cette fonction.
- Fonction non paramétrée, mais dépendante du contexte de connexion : CUSTOMDATA ne prend aucun paramètre en entrée, ce qui peut surprendre. Pourtant, sa valeur dépend complètement du contexte dans lequel la connexion est établie. Chaque session peut transmettre une valeur différente via CustomData, ce qui signifie que deux utilisateurs exécutant la même mesure peuvent obtenir des résultats totalement différents. La fonction agit donc comme un pont entre le contexte utilisateur et le modèle DAX.
- Très utile pour créer des comportements dynamiques dans les rapports : On peut utiliser CUSTOMDATA pour modifier la logique d'un rapport selon le contexte d'utilisation : filtre automatique, thème dynamique, calcul spécifique par utilisateur ou environnement (dev/test/prod). Le rapport envoie simplement une valeur différente dans CustomData, et toutes les mesures qui l'utilisent s'adaptent instantanément. Cela permet de concevoir des rapports intelligents, auto-adaptatifs et sensibles à l'environnement.
- Compatible avec les connexions via XMLA, SSAS Tabular et certains modes DirectQuery : En mode Power BI standard, CUSTOMDATA n'est pas directement renseignée par défaut. Cependant, en mode XMLA Read/Write, dans SSAS Tabular ou avec certains outils tiers, il est possible de spécifier une propriété CustomData. Cela rend la fonction particulièrement utile dans les environnements professionnels où les rapports sont pilotés par des solutions BI externes. Son utilisation permet d'unifier la logique du modèle indépendamment de la source du client.
- Peut servir à transmettre des instructions ou des paramètres au modèle : La valeur contenue dans CUSTOMDATA peut être un simple texte, mais aussi une liste, un JSON, un identifiant de groupe, un code région ou un indicateur logique. Le modèle peut ensuite interpréter cette valeur via d'autres fonctions DAX, comme SEARCH, PATH ou CONTAINSSTRING. Cela permet d'encoder des instructions complexes dans une simple valeur de connexion. C'est un moyen discret mais puissant d'enrichir les modèles.
- Interagit étroitement avec le contexte d'évaluation des mesures : Lorsqu'une mesure utilise CUSTOMDATA, la valeur retournée est toujours celle associée à la session en cours. Cela signifie que les visuels ou tables calculées qui l'utilisent se basent sur cette valeur dès leur rendu. L'intégration dans le contexte DAX est totalement transparente, ce qui permet de combiner CUSTOMDATA avec CALCULATE, FILTER, USERPRINCIPALNAME ou des fonctions de sécurité. Cette intégration est essentielle pour maintenir la cohérence des calculs conditionnels.
- Ne doit pas être confondu avec USERPRINCIPALNAME ou USEROBJECTID : Bien que CUSTOMDATA soit souvent utilisé en sécurité dynamique, il fonctionne différemment des fonctions d'identité utilisateur comme USERPRINCIPALNAME. Ce n'est pas une information automatiquement fournie par Power BI : elle doit être explicitement passée via la connexion, ce qui donne un contrôle total à l'administrateur. Ainsi, CUSTOMDATA n'identifie pas l'utilisateur, mais transporte une information. Cette distinction est fondamentale pour comprendre son rôle dans l'architecture DAX.
Dernière mise à jour : Vendredi, le 30 Mai 2025