Condividi tramite


Funzione USERELATIONSHIP (DAX)

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

Sintassi

USERELATIONSHIP(<columnName1>,<columnName2>)

Parametri

  • columnName1
    Nome completo di una colonna esistente tramite la sintassi DAX standard che generalmente rappresenta il lato "molti" della relazione da utilizzare. Se gli argomenti vengono dati in ordine inverso, verranno scambiati dalla funzione prima dell'utilizzo. L'argomento non può essere un'espressione.

  • columnName2
    Nome completo di una colonna esistente tramite la sintassi DAX standard che generalmente rappresenta il lato "uno" o "ricerca" della relazione da utilizzare. Se gli argomenti vengono dati in ordine inverso, verranno scambiati dalla funzione prima dell'utilizzo. L'argomento non può essere un'espressione.

Valore restituito

Non viene restituito alcun valore dalla funzione. Viene soltanto abilitata la relazione indicata per la durata del calcolo.

Osservazioni

  1. È possibile utilizzare USERELATIONSHIP unicamente in funzioni che accettano un filtro come argomento, ad esempio: CALCULATE, CALCULATETABLE, CLOSINGBALANCEMONTH, CLOSINGBALANCEQUARTER, CLOSINGBALANCEYEAR, OPENINGBALANCEMONTH, OPENINGBALANCEQUARTER, OPENINGBALANCEYEAR, TOTALMTD, TOTALQTD e TOTALYTD.

  2. USERELATIONSHIP utilizza relazioni esistenti nel modello; in USERELATIONSHIP le relazioni vengono identificate dalle colonne punto finale.

  3. In USERELATIONSHIP lo stato di una relazione non è importante. Il fatto che una relazione sia attiva o meno non influisce sull'utilizzo della funzione. Anche se la relazione è inattiva, al suo utilizzo prevarrà su altre relazioni attive eventualmente presenti nel modello ma non indicate negli argomenti della funzione.

  4. Viene restituito un errore se alcune delle colonne indicate come argomento non fanno parte di una relazione o se appartengono a relazioni diverse.

  5. Se sono necessarie più relazioni per creare un join dalla tabella A alla tabella B in un calcolo, ogni relazione deve essere indicata in una funzione USERELATIONSHIP diversa.

  6. Se le espressioni CALCULATE sono nidificate e più espressioni CALCULATE contengono una funzione USERELATIONSHIP, la funzione USERELATIONSHIP più interna sarà quella prevalente in caso di conflitto o ambiguità.

  7. Possono essere nidificate fino a 10 funzioni USERELATIONSHIP; tuttavia, l'espressione può presentare un livello di nidificazione più profondo. L'espressione di esempio seguente, ad esempio, presenta 3 livelli di nidificazione ma solo per USEREALTIONSHIP: =CALCULATE(CALCULATE(CALCULATE(<qualsiasi espressione>, USERELATIONSHIP(t1[colA], t2[colB])), t99[colZ]=999), USERELATIONSHIP(t1[colA], t2[colA])).

Esempio

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

Per calcolare la somma delle vendite su Internet e sezionarle in base a ShippingDate e non in base a OrderDate come di consueto, è necessario creare una misura [InternetSales per ShippingDate] tramite l'espressione riportata di seguito:

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

In PowerPivot trascinare la nuova misura nell'area Valori nel riquadro destro, trascinare la colonna InternetSales[ShippingDate] nell'area Etichette di riga. Le vendite su Internet sono state sezionate in base alla data di spedizione e non in base alla data dell'ordine come viene in genere illustrato in questi esempi.

Affinché l'esempio funzioni, è necessario che esista la relazione tra InternetSales[ShipmentDate] e DateTime[Date] e che non sia quella attiva. Deve inoltre esistere una relazione tra InternetSales[OrderDate] e DateTime[Date] che deve essere quella attiva.