Dans Power BI, la fonction RELATEDTABLE est l’outil indispensable pour récupérer l’ensemble des lignes d’une table enfant (le « many ») à partir d’une ligne de la table parente (le « one »), permettant ainsi d’agréger des données comme les montants de ventes ou les coûts de production sans perte de contexte.

Comprendre la logique RELATEDTABLE

Contrairement à la fonction RELATED qui retourne une seule valeur scalaire depuis la table parente vers la table enfant, RELATEDTABLE retourne une table complète. Imaginez un tableau de bord où vous analysez les performances par Produit (table parente). Vous avez besoin de calculer le Total des ventes issues de la table FactureVentes (table enfant).

Sans RELATEDTABLE, vous dépendriez de filtres globaux qui peuvent fausser le calcul si d’autres dimensions sont impliquées. La fonction RELATEDTABLE DAX crée une transition de contexte : elle transforme le contexte de ligne actuel (la ligne Produit) en un contexte de filtre précis pour la table enfant. Cela garantit que le calcul s’applique strictement aux lignes liées à ce produit spécifique, même dans des mesures complexes.

Le choix entre ces deux fonctions dépend de la direction de la relation dans votre modèle de données. La confusion entre ces deux concepts entraîne des erreurs de reporting ou des valeurs nulles inexpliquées :

  • RELATED : retourne une valeur unique (scalaire) et va du côté « many » vers le côté « one » (ex : récupérer le nom de la catégorie dans une ligne de facture)
  • RELATEDTABLE : retourne une table et va du côté « one » vers le côté « many » (ex : récupérer toutes les lignes de facture pour un produit unique)
  • Dépendance relationnelle : les deux fonctions nécessitant une relation active définie dans le modèle de données Power BI

Si vous tentez d’utiliser RELATED pour récupérer plusieurs lignes, vous obtiendrez une erreur car la fonction ne peut gérer qu’une seule valeur de retour. Inversement, RELATEDTABLE est la seule option valide pour agréger des données enfant depuis une ligne parente.

Syntaxe et implémentation concrète en DAX

La syntaxe de la fonction est épurée et se concentre uniquement sur le nom de la table cible. Elle ne prend pas d’expression de filtre supplémentaire, car le contexte est géré automatiquement par la relation existante.

La formulation standard est :

RELATEDTABLE(<tablename>)

Le paramètre tableName doit correspondre exactement au nom de la table enfant dans votre modèle. Il ne peut pas être une expression complexe, mais uniquement une référence directe à une table existante. Voici un exemple d’application pour un calcul de Chiffre d’Affaires par Produit :

Total CA = SUMX(RELATEDTABLE(FacturesVentes), FacturesVentes[MontantHT])

Dans cet exemple, SUMX itère sur la table retournée par RELATEDTABLE, calculant la somme des montants pour chaque ligne de la table FacturesVentes liée au produit actuel. Cette approche est bien plus performante et lisible que l’utilisation de CALCULATE avec des filtres manuels.

Erreurs fréquentes et bonnes pratiques

L’implémentation de RELATEDTABLE dans un contexte réel rencontre souvent des obstacles liés à la structure du modèle ou à la nature de la fonction tabulaire. Voici les points de vigilance essentiels pour éviter les bugs de calcul :

  • Erreur valeur nulle : si la relation n’existe pas ou est inactive, la fonction retourne une table vide, ce qui peut entraîner un résultat nul dans vos mesures
  • Ne pas utiliser directement : car elle retourne une table, vous devez toujours l’englober dans une fonction d’agrégation comme SUMX, COUNTROWS ou AVERAGE pour obtenir un résultat scalaire
  • Performance sur grande données: évitez son utilisation dans des colonnes calculées sur des tables très volumineuses, privilégiez les mesures pour optimiser le rendu

Une erreur courante consiste à utiliser RELATEDTABLE DAX sans l’agréger. Par exemple, écrire simplement RELATEDTABLE(Factures) dans une colonne calculée d’une mesure provoquera une erreur car Power BI attend une valeur unique. Pour consulter des ressources officielles sur cette fonction, vous pouvez visiter le guide technique de Microsoft documentation officielle RELATEDTABLE.

Cette fonction est particulièrement pertinente lorsque vous comparez les solutions d’analyse, comme le montre le débat Power BI vs Excel : alors qu’Excel utilise des formules de recherche complexes, Power BI avec RELATEDTABLE gère ces relations de manière dynamique et fluide.

Cas d’usage en modélisation financière et reporting

En finance d’entreprise, la structure des données est souvent « one-to-many » : un compte analytique unique regroupe des milliers de lignes de factures. Utiliser RELATEDTABLE permet de construire des indicateurs de performance précis sans alourdir le modèle avec des colonnes calculées pré-agrégées.

Considérez un scénario de Consolidation des coûts. Vous avez une table Centres de Coûts (parente) et une table FacturesInternal (enfant). Pour connaître le coût total par centre :

Cout Total = SUMX(RELATEDTABLE(FacturesInternal), FacturesInternal[CoutUnitaire] * FacturesInternal[Quantite])

Ce calcul est robuste car il s’adapte automatiquement à tous les filtres appliqués (période, département, région) grâce à la transition de contexte inhérente à la fonction. De même, pour le calcul du Nombre de transactions :

Nombre de Transactions = COUNTROWS(RELATEDTABLE(FacturesInternal))

Cette méthode est idéale pour les tableaux de bord de contrôle de gestion où la granularité est fine. Elle évite les erreurs de double comptage qui surviennent souvent avec des agrégations manuelles dans Excel. Pour optimiser la transformation de ces données avant le calcul, l’utilisation de Table.TransformColumns Power Query reste une étape préalable recommandée pour garantir la qualité des sources.

En conclusion, maîtriser RELATEDTABLE est synonyme de rigueur dans l’analyse de données. Il transforme la complexité des relations en simples calculs d’agrégation, offrant une précision supérieure pour les directions financières. Appliquez cette syntaxe dès votre prochain modèle pour fiabiliser vos reporting.

FAQ

RELATEDTABLE retourne une erreur « Fonction non valide » : pourquoi ?

Cela signifie qu’il n’existe aucune relation active entre la table parente actuelle et la table spécifiée dans le paramètre. Vérifiez le schéma de données dans Power BI.

Puis-je utiliser RELATEDTABLE dans une colonne calculée ?

Oui, mais attention : la fonction retourne une table. Vous devez impérativement l’englober dans une fonction comme SUMX ou COUNTROWS pour obtenir une valeur unique utilisable dans une colonne.