USERELATIONSHIP
Van toepassing op:berekende kolomberekende tabelMetingVisuele berekening
Hiermee geeft u de relatie op die moet worden gebruikt in een specifieke berekening als de relatie die bestaat tussen columnName1 en columnName2.
Syntaxis
USERELATIONSHIP(<columnName1>,<columnName2>)
Parameters
Term | Definitie |
---|---|
columnName1 |
De naam van een bestaande kolom, met behulp van de standaard-DAX syntaxis en volledig gekwalificeerde, die meestal de vele kanten van de relatie vertegenwoordigt die moet worden gebruikt; als de argumenten in omgekeerde volgorde worden gegeven, wisselt de functie deze om voordat deze worden gebruikt. Dit argument kan geen expressie zijn. |
columnName2 |
De naam van een bestaande kolom, met behulp van de standaard-DAX syntaxis en volledig gekwalificeerde, die meestal de ene zijde of opzoekzijde van de relatie vertegenwoordigt die moet worden gebruikt; als de argumenten in omgekeerde volgorde worden gegeven, wisselt de functie deze om voordat deze worden gebruikt. Dit argument kan geen expressie zijn. |
Retourwaarde
De functie retourneert geen waarde; met de functie wordt alleen de aangegeven relatie ingeschakeld voor de duur van de berekening.
Opmerkingen
USERELATIONSHIP kan alleen worden gebruikt in functies die een filter als argument gebruiken, bijvoorbeeld: CALCULATE, CALCULATETABLE, CLOSINGBALANCEMONTH, CLOSINGBALANCEQUARTER, CLOSINGBALANCEYEAR, OPENINGBALANCEMONTH, OPENINGBALANCEQUARTER, OPENINGBALANCEYEAR, TOTALMTD, TOTALQTD en TOTALYTD functies.
USERELATIONSHIP kan niet worden gebruikt wanneer beveiliging op rijniveau is gedefinieerd voor de tabel waarin de meting is opgenomen.
CALCULATE(SUM([SalesAmount]), USERELATIONSHIP(FactInternetSales[CustomerKey], DimCustomer[CustomerKey]))
retourneert bijvoorbeeld een fout als beveiliging op rijniveau is gedefinieerd voor DimCustomer.USERELATIONSHIP bestaande relaties in het model gebruikt, waarbij relaties worden geïdentificeerd door hun eindpuntkolommen.
In USERELATIONSHIPis de status van een relatie niet belangrijk; dat wil gezegd, of de relatie actief is of niet van invloed is op het gebruik van de functie. Zelfs als de relatie inactief is, wordt deze gebruikt en overschreven door andere actieve relaties die mogelijk aanwezig zijn in het model, maar niet vermeld in de functieargumenten.
Er wordt een fout geretourneerd als een van de kolommen met de naam van een argument geen deel uitmaakt van een relatie of als de argumenten deel uitmaken van verschillende relaties.
Als er meerdere relaties nodig zijn om tabel A toe te voegen aan tabel B in een berekening, moet elke relatie worden aangegeven in een andere USERELATIONSHIP functie.
Als CALCULATE expressies zijn genest en meer dan één CALCULATE expressie een USERELATIONSHIP functie bevat, is de binnenste USERELATIONSHIP het USERELATIONSHIP de expressie die heerst in het geval van een conflict of dubbelzinnigheid.
Maximaal 10 USERELATIONSHIP functies kunnen worden genest; uw expressie kan echter een dieper nestniveau hebben, bijvoorbeeld. de volgende voorbeeldexpressie is genest 3 niveaus diep, maar slechts 2 voor USERELATIONSHIP:
=CALCULATE(CALCULATE( CALCULATE( <anyExpression>, USERELATIONSHIP( t1[colA], t2[colB])), t99[colZ]=999), USERELATIONSHIP( t1[colA], t2[colA]))
.Voor 1-op-1-relaties activeert USERELATIONSHIP alleen de relatie in één richting. Filters kunnen met name alleen stromen van columnName2tabel naar columnName1tabel. Als kruislings filteren in twee richtingen gewenst is, kunnen twee USERELATIONSHIPs met tegengestelde richting worden gebruikt in dezelfde berekening. Bijvoorbeeld:
CALCULATE(..., USERELATIONSHIP(T1[K], T2[K]), USERELATIONSHIP(T2[K], T1[K]))
.
Opmerking
In het volgende voorbeeld ziet u hoe u de standaard-, actieve, relatie tussen InternetSales- en DateTime-tabellen overschrijft. De standaardrelatie bestaat tussen de kolom OrderDatum, in de tabel InternetSales en de kolom Date, in de tabel DateTime.
Als u de som van de internetverkoop wilt berekenen en segmentering door ShippingDate wilt toestaan in plaats van de traditionele OrderDate, maakt u meting [InternetSales by ShippingDate] met behulp van de volgende expressie:
= CALCULATE(SUM(InternetSales[SalesAmount]), USERELATIONSHIP(InternetSales[ShippingDate], DateTime[Date]))
Relaties tussen InternetSales[ShipmentDate] en DateTime[Date] moeten bestaan en mogen niet de actieve relatie zijn; Ook moet de relatie tussen InternetSales[OrderDate] en DateTime[Date] bestaan en moet de actieve relatie zijn.