USERELATIONSHIP

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

Syntax

USERELATIONSHIP(<columnName1>,<columnName2>)  

Parametrar

Period Definition
columnName1 Namnet på en befintlig kolumn, med DAX-standardsyntax och fullständigt kvalificerat namn, som vanligtvis representerar ”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 DAX-standardsyntax och fullständigt kvalificerat namn, som vanligtvis representerar ”en”-sidan eller ”uppslag”-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.

Returvärde

Funktionen returnerar inget värde. Funktionen aktiverar endast den angivna relationen medan beräkningen pågår.

Kommentarer

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

  • USERELATIONSHIP kan inte användas när säkerhet på radnivå har definierats för den tabell som måttet ingår i. CALCULATE(SUM([SalesAmount]), USERELATIONSHIP(FactInternetSales[CustomerKey], DimCustomer[CustomerKey])) returnerar till exempel ett fel om säkerhet på radnivå har definierats för DimCustomer.

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

  • I USERELATIONSHIP är status för en relation inte viktig. Oavsett om relationen är aktiv eller inte så påverkar det inte användningen av funktionen. Även om relationen är inaktiv används den och åsidosätter andra aktiva relationer som kan finnas i modellen men som inte nämns i funktionsargumenten.

  • Ett fel returneras om någon av kolumnerna som namngetts som ett argument inte är en del av en relation eller om argumenten tillhör andra relationer.

  • Om det behövs flera relationer 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 det den innersta USERELATIONSHIP-funktionen som gäller vid en konflikt eller tvetydighet.

  • Du kan kapsla upp till 10 USERELATIONSHIP, men ditt uttryck kan ha fler kapslingsnivåer. Följande exempeluttryck är kapslat i 3 nivåer men bara 2 för USEREALTIONSHIP: =CALCULATE(CALCULATE( CALCULATE( &lt;anyExpression&gt;, 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:stabell till columnName1:stabell. Om dubbelriktad korsfiltrering önskas kan två USERELATIONSHIPs med motsatt riktning användas i samma beräkning. Till exempel CALCULATE(..., USERELATIONSHIP(T1[K], T2[K]), USERELATIONSHIP(T2[K], T1[K])).

Exempel

I följande exempel visas hur du åsidosätter den aktiva standardrelationen mellan tabellerna InternetSales och DateTime. En standardrelation 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 uppdelning efter ShippingDate i stället för OrderDate skapar du måttet [InternetSales by ShippingDate] med hjälp av följande uttryck:

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

Det måste finnas en relation mellan InternetSales[ShipmentDate] och DateTime[Date], och den ska inte vara aktiv. Det måste också finnas en aktiv relation mellan InternetSales[OrderDate] och DateTime[Date].