USERELATIONSHIP
s’applique à :colonne calculéetable calculéemesurecalcul visuel
Spécifie la relation à utiliser dans un calcul spécifique comme celui qui existe entre columnName1 et columnName2.
Syntaxe
USERELATIONSHIP(<columnName1>,<columnName2>)
Paramètres
Terme | Définition |
---|---|
columnName1 |
Nom d’une colonne existante, à l’aide de la syntaxe de DAX standard et de la syntaxe complète, qui représente généralement le côté multiple de la relation à utiliser ; si les arguments sont donnés dans l’ordre inverse, la fonction les permutera avant de les utiliser. Cet argument ne peut pas être une expression. |
columnName2 |
Nom d’une colonne existante, à l’aide de la syntaxe de DAX standard et complète, qui représente généralement le côté un côté ou la recherche de la relation à utiliser ; si les arguments sont donnés dans l’ordre inverse, la fonction les permutera avant de les utiliser. Cet argument ne peut pas être une expression. |
Valeur de retour
La fonction ne retourne aucune valeur ; la fonction active uniquement la relation indiquée pendant la durée du calcul.
Remarques
USERELATIONSHIP ne peut être utilisé que dans les fonctions qui prennent un filtre en tant qu’argument, par exemple : CALCULATE, CALCULATETABLE, CLOSINGBALANCEMONTH, CLOSINGBALANCEQUARTER, CLOSINGBALANCEYEAR, OPENINGBALANCEMONTH, OPENINGBALANCEQUARTER, OPENINGBALANCEYEAR, TOTALMTD, TOTALQTD et TOTALYTD fonctions.
USERELATIONSHIP ne peut pas être utilisé lorsque la sécurité au niveau des lignes est définie pour la table dans laquelle la mesure est incluse. Par exemple,
CALCULATE(SUM([SalesAmount]), USERELATIONSHIP(FactInternetSales[CustomerKey], DimCustomer[CustomerKey]))
retourne une erreur si la sécurité au niveau des lignes est définie pour DimCustomer.USERELATIONSHIP utilise des relations existantes dans le modèle, identifiant les relations par leurs colonnes de point de terminaison.
Dans USERELATIONSHIP, l’état d’une relation n’est pas important ; autrement dit, si la relation est active ou non n’affecte pas l’utilisation de la fonction. Même si la relation est inactive, elle est utilisée et remplace toutes les autres relations actives qui peuvent être présentes dans le modèle, mais qui ne sont pas mentionnées dans les arguments de fonction.
Une erreur est retournée si l’une des colonnes nommées en tant qu’argument ne fait pas partie d’une relation ou si les arguments appartiennent à des relations différentes.
Si plusieurs relations sont nécessaires pour joindre la table A à la table B dans un calcul, chaque relation doit être indiquée dans une fonction USERELATIONSHIP différente.
Si CALCULATE expressions sont imbriquées et que plusieurs expressions CALCULATE contiennent une fonction USERELATIONSHIP, la USERELATIONSHIP la plus intérieure est celle qui prévaut en cas de conflit ou d’ambiguïté.
Jusqu’à 10 fonctions USERELATIONSHIP peuvent être imbriquées ; Toutefois, votre expression peut avoir un niveau plus profond d’imbrication, c’est-à-dire. l’exemple d’expression suivant est imbriqué 3 niveaux profonds, mais seulement 2 pour USERELATIONSHIP:
=CALCULATE(CALCULATE( CALCULATE( <anyExpression>, USERELATIONSHIP( t1[colA], t2[colB])), t99[colZ]=999), USERELATIONSHIP( t1[colA], t2[colA]))
.Pour les relations 1 à 1, USERELATIONSHIP active uniquement la relation dans une direction. En particulier, les filtres ne pourront circuler qu’à partir de columnName2's table à columnName1's table. Si le filtrage croisé bidirectionnel est souhaité, deux CSP USERELATION AVEC direction opposée peuvent être utilisés dans le même calcul. Par exemple :
CALCULATE(..., USERELATIONSHIP(T1[K], T2[K]), USERELATIONSHIP(T2[K], T1[K]))
.
Exemple
L’exemple suivant montre comment remplacer la relation par défaut, active et entre les tables InternetSales et DateTime. La relation par défaut existe entre la colonne OrderDate, dans la table InternetSales et la colonne Date, dans la table DateTime.
Pour calculer la somme des ventes Internet et autoriser le découpage par ShippingDate au lieu de la date de commande traditionnelle, créez une mesure [InternetSales par ShippingDate] à l’aide de l’expression suivante :
= CALCULATE(SUM(InternetSales[SalesAmount]), USERELATIONSHIP(InternetSales[ShippingDate], DateTime[Date]))
Les relations entre InternetSales[ShipmentDate] et DateTime[Date] doivent exister et ne doivent pas être la relation active ; en outre, la relation entre InternetSales[OrderDate] et DateTime[Date] doit exister et doit être la relation active.