Condividi tramite


USERELATIONSHIP

Si applica a:colonna calcolatatabella calcolata calcolo visivomisura

Specifica la relazione da utilizzare in un calcolo specifico come quella esistente tra columnName1 e columnName2.

Sintassi

USERELATIONSHIP(<columnName1>,<columnName2>)

Parametri

Termine Definizione
columnName1 Nome di una colonna esistente, utilizzando la sintassi standard DAX e completo, che in genere rappresenta il lato molti della relazione da utilizzare; se gli argomenti vengono specificati in ordine inverso, la funzione li scambierà prima di usarli. Questo argomento non può essere un'espressione.
columnName2 Nome di una colonna esistente, utilizzando la sintassi standard DAX e completo, che in genere rappresenta il lato uno o il lato di ricerca della relazione da utilizzare; se gli argomenti vengono specificati in ordine inverso, la funzione li scambierà prima di usarli. Questo argomento non può essere un'espressione.

Valore restituito

La funzione non restituisce alcun valore; la funzione abilita solo la relazione indicata per la durata del calcolo.

Osservazioni:

  • USERELATIONSHIP può essere usato solo nelle funzioni che accettano un filtro come argomento, ad esempio CALCULATE, CALCULATETABLE, CLOSINGBALANCEMONTH, CLOSINGBALANCEQUARTER, CLOSINGBALANCEYEAR, OPENINGBALANCEMONTH, OPENINGBALANCEQUARTER, OPENINGBALANCEYEAR, TOTALMTD, TOTALQTD e TOTALYTD.

  • USERELATIONSHIP non può essere utilizzato quando viene definita la sicurezza a livello di riga per la tabella in cui è inclusa la misura. Ad esempio, CALCULATE(SUM([SalesAmount]), USERELATIONSHIP(FactInternetSales[CustomerKey], DimCustomer[CustomerKey])) restituirà un errore se la sicurezza a livello di riga è definita per DimCustomer.

  • USERELATIONSHIP usa le relazioni esistenti nel modello, identificando le relazioni in base alle colonne del punto finale.

  • In USERELATIONSHIPlo stato di una relazione non è importante; ovvero se la relazione è attiva o meno non influisce sull'utilizzo della funzione. Anche se la relazione è inattiva, verrà usata ed esegue l'override di tutte le altre relazioni attive che potrebbero essere presenti nel modello ma non menzionate negli argomenti della funzione.

  • Viene restituito un errore se una delle colonne denominate come argomento non fa parte di una relazione o gli argomenti appartengono a relazioni diverse.

  • Se sono necessarie più relazioni per unire la tabella A alla tabella B in un calcolo, ogni relazione deve essere indicata in una funzione USERELATIONSHIP diversa.

  • Se CALCULATE espressioni sono annidate e più di un'espressione CALCULATE contiene una funzione USERELATIONSHIP, la USERELATIONSHIP più interna è quella che prevale in caso di conflitto o ambiguità.

  • È possibile annidare fino a 10 funzioni USERELATIONSHIP; Tuttavia, l'espressione potrebbe avere un livello più profondo di annidamento, ad esempio. L'espressione di esempio seguente è annidata 3 livelli profondi, ma solo 2 per USERELATIONSHIP: =CALCULATE(CALCULATE( CALCULATE( <anyExpression>, USERELATIONSHIP( t1[colA], t2[colB])), t99[colZ]=999), USERELATIONSHIP( t1[colA], t2[colA])).

  • Per le relazioni da 1 a 1, USERELATIONSHIP attiverà solo la relazione in una direzione. In particolare, i filtri saranno in grado di passare solo dalla tabella columnName2alla tabella columnName1tabella. Se si desidera un filtro incrociato bidirezionale, è possibile utilizzare due USERELATIONSHIPs con direzione opposta nello stesso calcolo. Ad esempio, CALCULATE(..., USERELATIONSHIP(T1[K], T2[K]), USERELATIONSHIP(T2[K], T1[K])).

Esempio

Nell'esempio seguente viene illustrato come eseguire l'override della relazione predefinita, attiva e attiva tra le tabelle InternetSales e DateTime. La relazione predefinita esiste tra la colonna OrderDate, nella tabella InternetSales e la colonna Date, nella tabella DateTime.

Per calcolare la somma delle vendite Internet e consentire il sezionamento in base a ShippingDate anziché per orderDate tradizionale, creare la misura [InternetSales by ShippingDate] usando l'espressione seguente:

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

Le relazioni tra InternetSales[ShipmentDate] e DateTime[Date] devono esistere e non devono essere la relazione attiva; inoltre, la relazione tra InternetSales[OrderDate] e DateTime[Date] deve esistere e deve essere la relazione attiva.