USERELATIONSHIP

Hiermee geeft u de relatie op die moet worden gebruikt in een specifieke berekening zoals de relatie tussen columnName1 en columnName2.

Syntaxis

USERELATIONSHIP(<columnName1>,<columnName2>)  

Parameters

Term Definitie
columnName1 De naam van een bestaande kolom, door middel van de standaard DAX-syntaxis en een volledig gekwalificeerde naam, die meestal de 'veel-zijde' van de relatie aanduidt die moet worden gebruikt. Als de argumenten in omgekeerde volgorde worden opgegeven, worden deze door de functie weer verwisseld voordat ze worden gebruikt. Dit argument kan geen expressie zijn.
columnName2 De naam van een bestaande kolom, door middel van de standaard DAX-syntaxis en een volledig gekwalificeerde naam, die meestal de 'één-zijde of opzoekzijde' van de relatie aanduidt die moet worden gebruikt. Als de argumenten in omgekeerde volgorde worden opgegeven, worden deze door de functie weer verwisseld voordat ze worden gebruikt. Dit argument kan geen expressie zijn.

Retourwaarde

De functie retourneert geen waarde. Met de functie wordt alleen de aangegeven relatie ingesteld voor de duur van de berekening.

Opmerkingen

  • USERELATIONSHIP kan alleen worden gebruikt in functies die een filter als argument gebruiken, bijvoorbeeld: De functies CALCULATE, CALCULATETABLE, CLOSINGBALANCEMONTH, CLOSINGBALANCEQUARTER, CLOSINGBALANCEYEAR, OPENINGBALANCEMONTH, OPENINGBALANCEQUARTER, OPENINGBALANCEYEAR, TOTALMTD, TOTALQTD en TOTALYTD.

  • 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 gebruikt bestaande relaties in het model, waarbij relaties worden aangeduid met de eindpuntkolommen.

  • In USERELATIONSHIP is de status van een relatie niet van belang. Met andere woorden, of de relatie nu wel of niet actief is, heeft geen invloed op het gebruik van de functie. Zelfs als de relatie inactief is, wordt deze gebruikt en worden eventuele andere actieve relaties die mogelijk aanwezig zijn in het model overschreven, maar niet vermeld in de functieargumenten.

  • Er wordt een fout geretourneerd als een kolom met de naam van een argument geen deel uitmaakt van een relatie of de argumenten tot verschillende relaties behoren.

  • Als er meerdere relaties nodig zijn om tabel A te koppelen aan tabel B in een berekening, moet elke relatie worden aangegeven in een andere USERELATIONSHIP-functie.

  • Als CALCULATE-expressies genest zijn en er meerdere CALCULATE-expressies een functie USERELATIONSHIP bevatten, krijgt de binnenste CUSERELATIONSHIP voorrang bij een conflict of onduidelijkheid.

  • Er kunnen maximaal 10 USERELATIONSHIP-functies worden genest. Uw expressie kan echter een dieper genest niveau hebben. De volgende voorbeeldexpressie is bijvoorbeeld 3 niveaus diep genest, met slechts 2 voor USEREALTIONSHIP: =CALCULATE(CALCULATE( CALCULATE( &lt;anyExpression&gt;, USERELATIONSHIP( t1[colA], t2[colB])), t99[colZ]=999), USERELATIONSHIP( t1[colA], t2[colA])).

  • Voor 1-op-1-relaties activeert USERELATIONSHIP de relatie slechts in één richting. Filters kunnen met name alleen stromen van de tabel columnName2 naar de tabel columnName1. Als kruisfiltering in twee richtingen gewenst is, kunnen twee USERELATIONSHIPs met tegenovergestelde richting worden gebruikt in dezelfde berekening. Bijvoorbeeld CALCULATE(..., USERELATIONSHIP(T1[K], T2[K]), USERELATIONSHIP(T2[K], T1[K])).

Voorbeeld

In het volgende voorbeeld ziet u hoe u de standaard, actieve relatie tussen de tabellen InternetSales en DateTime overschrijft. De standaardrelatie bestaat tussen de kolom OrderDate in de tabel InternetSales en de kolom Date in de tabel DateTime.

Voor het berekenen van de som van internetverkopen en het toestaan van segmentering door ShippingDate in plaats van de traditionele OrderDate maakt u een meting, [InternetSales by ShippingDate] met behulp van de volgende expressie:

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

De relaties tussen InternetSales[ShipmentDate] en DateTime[Date] moeten bestaan en mogen niet de actieve relatie zijn. De relatie tussen InternetSales[Order Date] en DateTime[Date] moet ook bestaan en moet de actieve relatie zijn.