USERELATIONSHIP
Angiver den relation, der skal bruges i en bestemt beregning, som den, der findes mellem columnName1 og columnName2.
Syntaks
USERELATIONSHIP(<columnName1>,<columnName2>)
Parametre
| Begreb | Definition |
|---|---|
| columnName1 | Navnet på en eksisterende kolonne, der anvender DAX-standardsyntaksen og er fuldt kvalificeret, og der som regel repræsenterer mange-siden af den relation, der skal bruges. Hvis argumenterne er angivet i omvendt rækkefølge, vil funktionen bytte rundt på dem, før de benyttes. Dette argument må ikke være et udtryk. |
| columnName2 | Navnet på en eksisterende kolonne, der anvender DAX-standardsyntaksen og er fuldt kvalificeret, og der som regel repræsenterer den ene side eller opslagssiden af den relation, der skal bruges. Hvis argumenterne er angivet i omvendt rækkefølge, vil funktionen bytte rundt på dem, før de benyttes. Dette argument må ikke være et udtryk. |
Returværdi
Funktionen returnerer ikke en værdi. Funktionen aktiverer kun den angivne relation for beregningens varighed.
Bemærkninger
USERELATIONSHIP kan kun bruges i funktioner, der benytter et filter som argument, f.eks.: Funktionerne CALCULATE, CALCULATETABLE, CLOSINGBALANCEMONTH, CLOSINGBALANCEQUARTER, CLOSINGBALANCEYEAR, OPENINGBALANCEMONTH, OPENINGBALANCEQUARTER, OPENINGBALANCEYEAR, TOTALMTD, TOTALQTD og TOTALYTD.
USERELATIONSHIP kan ikke benyttes når sikkerhed på rækkeniveau er defineret for den tabel, som målingen er inkluderet i.
CALCULATE(SUM([SalesAmount]), USERELATIONSHIP(FactInternetSales[CustomerKey], DimCustomer[CustomerKey]))vil f.eks. returnere en fejl, hvis sikkerhed på rækkeniveau er defineret for DimCustomer.USERELATIONSHIP bruger eksisterende relationer i modellen og identificerer relationer efter deres slutpunktkolonner.
I USERELATIONSHIP er status for en relation ikke vigtig. Det vil sige, at det ikke påvirker funktionen, om relationen er aktiv eller ej. Selvom relationen er inaktiv, bruges den, og alle andre aktive relationer, der kan være til stede i modellen, men som ikke er nævnt i funktionsargumenterne, tilsidesættes.
Der returneres en fejl, hvis nogle af kolonnenavnene, der er navngivet som et argument, ikke er en del af en relation, eller argumenterne tilhører forskellige relationer.
Hvis der er behov for flere relationer for at joinforbinde tabel A med tabel B i en beregning, skal hver relation være angivet i en anden USERELATIONSHIP-funktion.
Hvis CALCULATE-udtryk er indlejrede, og flere end ét CALCULATE-udtryk indeholder en USERELATIONSHIP-funktion, har det inderste USERELATIONSHIP forrang i tilfælde af en konflikt eller tvetydighed.
Der kan være op til 10 indlejrede USERELATIONSHIP-funktioner. Dit udtryk kan dog have et dybere indlejringsniveau, dvs. følgende udtrykseksempel er indlejret i tre niveauer, men kun to for USEREALTIONSHIP:
=CALCULATE(CALCULATE( CALCULATE( <anyExpression>, USERELATIONSHIP( t1[colA], t2[colB])), t99[colZ]=999), USERELATIONSHIP( t1[colA], t2[colA])).I forbindelse med 1-til-1-relationer aktiverer USERELATIONSHIP kun relationen i én retning. Filtre kan især kun gå fra tabellen for columnName2til tabellen columnName1. Hvis der ønskes tovejskrydsfiltrering, kan der bruges to USERELATIONSHIPs med modsatte retningsbestemthed i den samme beregning. For eksempel
CALCULATE(..., USERELATIONSHIP(T1[K], T2[K]), USERELATIONSHIP(T2[K], T1[K])).
Eksempel
Følgende eksempel viser, hvordan du tilsidesætter den aktive standardrelation mellem tabellerne InternetSales og DateTime. Standardrelationen findes mellem OrderDate-kolonnen i InternetSales-tabellen og Date-kolonnen i DateTime-tabellen.
Hvis du vil beregne summen af internetsalg og tillade udsnit efter ShippingDate i stedet for den traditionelle OrderDate, skal du oprette en måling [InternetSales efter ShippingDate] ved at benytte følgende udtryk:
= CALCULATE(SUM(InternetSales[SalesAmount]), USERELATIONSHIP(InternetSales[ShippingDate], DateTime[Date]))
Der skal være en relation mellem InternetSales[ShipmentDate] og DateTime[Date], og det skal ikke være den aktive relation. Ligeledes skal der være en relation mellem InternetSales[OrderDate] og DateTime[Date], som skal være den aktive relation.