USERELATIONSHIP

Gäller för:Beräknad kolumnBeräknad tabellMåttVisuell beräkning

Anger den relation som ska användas i en specifik beräkning som den som finns mellan columnName1 och columnName2.

Syntax

USERELATIONSHIP(<columnName1>,<columnName2>)  

Parametrar

Period Definition
columnName1 Namnet på en befintlig kolumn, med standard-DAX-syntax och fullständigt kvalificerad, som vanligtvis representerar den många sidan av relationen som ska användas. om argumenten anges i omvänd ordning växlar funktionen dem innan de används. Det här argumentet kan inte vara ett uttryck.
columnName2 Namnet på en befintlig kolumn, med standard-DAX-syntax och fullständigt kvalificerad, som vanligtvis representerar den ena sidan eller uppslagssidan av relationen som ska användas. om argumenten anges i omvänd ordning växlar funktionen dem innan de används. Det här argumentet kan inte vara ett uttryck.

Returvärde

Funktionen returnerar inget värde. funktionen aktiverar endast den angivna relationen under beräkningens varaktighet.

Kommentarer

  • USERELATIONSHIP kan bara användas i funktioner som tar ett filter som argument, till exempel: CALCULATE, CALCULATETABLE, CLOSINGBALANCEMONTH, CLOSINGBALANCEQUARTER, CLOSINGBALANCEYEAR, OPENINGBALANCEMONTH, OPENINGBALANCEQUARTER, OPENINGBALANCEYEAR, TOTALMTD, TOTALQTD och TOTALYTD.

  • USERELATIONSHIP kan inte användas när säkerhet på radnivå definieras för tabellen där måttet ingår. Ett fel returneras till exempel CALCULATE(SUM([SalesAmount]), USERELATIONSHIP(FactInternetSales[CustomerKey], DimCustomer[CustomerKey])) om säkerhet på radnivå har definierats för DimCustomer.

  • USERELATIONSHIP använder befintliga relationer i modellen och identifierar relationer med sina slutpunktskolumner.

  • I USERELATIONSHIP är statusen för en relation inte viktig. om relationen är aktiv eller inte påverkar inte funktionens användning. Även om relationen är inaktiv används den och åsidosätter alla andra aktiva relationer som kan finnas i modellen men som inte nämns i funktionsargumenten.

  • Ett fel returneras om någon av kolumnerna med namnet som argument inte ingår i en relation eller om argumenten tillhör olika relationer.

  • Om flera relationer behövs för att koppla tabell A till tabell B i en beräkning måste varje relation anges i en annan USERELATIONSHIP-funktion.

  • Om CALCULATE-uttryck är kapslade och fler än ett CALCULATE-uttryck innehåller en USERELATIONSHIP-funktion, är den innersta USERELATIONSHIP den som råder vid en konflikt eller tvetydighet.

  • Upp till 10 USERELATIONSHIP-funktioner kan kapslas. Men uttrycket kan ha en djupare nivå av kapsling, dvs. följande exempeluttryck är kapslat 3 nivåer djupt men endast 2 för USERELATIONSHIP: =CALCULATE(CALCULATE( CALCULATE( <anyExpression>, USERELATIONSHIP( t1[colA], t2[colB])), t99[colZ]=999), USERELATIONSHIP( t1[colA], t2[colA])).

  • För 1-till-1-relationer aktiverar USERELATIONSHIP endast relationen i en riktning. I synnerhet kommer filter endast att kunna flöda från columnName2-tabellen till columnName1-tabellen. Om dubbelriktad korsfiltrering önskas kan två USERELATIONSHIPs med motsatt riktning användas i samma beräkning. Exempel: CALCULATE(..., USERELATIONSHIP(T1[K], T2[K]), USERELATIONSHIP(T2[K], T1[K]))

Exempel

Följande exempel visar hur du åsidosätter standard-, aktiv-, relationen mellan InternetSales- och DateTime-tabeller. Standardrelationen finns mellan kolumnen OrderDate i tabellen InternetSales och kolumnen Date i tabellen DateTime.

Om du vill beräkna summan av internetförsäljningen och tillåta segmentering av ShippingDate i stället för den traditionella OrderDate skapar du måttet [InternetSales by ShippingDate] med hjälp av följande uttryck:

= CALCULATE(SUM(InternetSales[SalesAmount]), USERELATIONSHIP(InternetSales[ShippingDate], DateTime[Date]))  

Relationer mellan InternetSales[ShipmentDate] och DateTime[Date] måste finnas och bör inte vara den aktiva relationen. Dessutom bör relationen mellan InternetSales[OrderDate] och DateTime[Date] finnas och vara den aktiva relationen.