LOOKUPVALUE

Si applica a:colonna calcolatatabella calcolata calcolo visivomisura

Restituisce il valore per la riga che soddisfa tutti i criteri specificati da una o più condizioni di ricerca.

Sintassi

LOOKUPVALUE (
    <result_columnName>,
    <search_columnName>,
    <search_value>
    [, <search2_columnName>, <search2_value>]…
    [, <alternateResult>]
)

Parametri

Termine Definizione
result_columnName Nome di una colonna esistente che contiene il valore che si desidera restituire. Non può essere un'espressione.
search_columnName Nome di una colonna esistente. Può trovarsi nella stessa tabella di result_columnName o in una tabella correlata. Non può essere un'espressione. È possibile specificare più coppie di search_columnName e search_value.
search_value Valore da cercare in search_columnName. È possibile specificare più coppie di search_columnName e search_value.
alternateResult (Facoltativo) Valore restituito quando il contesto per result_columnName viene filtrato fino a zero o più valori distinti. Se non specificato, la funzione restituisce BLANK quando result_columnName viene filtrata fino a zero valori o un errore quando il contesto per result_columnName ha più di un valore distinto.

Valore restituito

Valore di result_columnName nella riga in cui tutte le coppie di search_columnName e search_value hanno una corrispondenza esatta.

Se nessuna corrispondenza soddisfa tutti i valori di ricerca, la funzione restituisce BLANK o alternateResult (se specificato). In altre parole, la funzione non restituisce un valore di ricerca se solo alcuni dei criteri corrispondono.

Se più righe corrispondono ai valori di ricerca e i valori in result_columnName per queste righe sono identici, viene restituito tale valore. Tuttavia, se result_columnName restituisce valori diversi, la funzione restituisce un errore o alternateResult (se specificato).

Osservazioni

  • Se esiste una relazione tra la tabella che contiene la colonna dei risultati e le tabelle che contengono le colonne di ricerca, nella maggior parte dei casi, l'uso della RELATED funzione anziché LOOKUPVALUE è più efficiente e offre prestazioni migliori.

  • È possibile specificare più coppie di search_columnName e search_value.

  • I parametri search_value e alternateResult vengono valutati prima che la funzione eselabori le righe della tabella di ricerca.

  • Evitare di usare ISERROR o IFERROR per acquisire un errore restituito da LOOKUPVALUE. Se alcuni input per la funzione generano un errore quando non è possibile determinare un singolo valore di output, specificando un alternateResult parametro è il modo più affidabile e con le prestazioni più elevate per gestire l'errore.

  • Il parametro alternateResult restituisce un errore se specificato in una colonna calcolata di Power Pivot.

  • Questa funzione non è supportata per l'uso in modalità DirectQuery quando viene usata nelle colonne calcolate o nelle regole di sicurezza a livello di riga.

Gli esempi in questo articolo possono essere usati con il modello adventure works DW 2020 di Power BI Desktop di esempio. Per ottenere il modello, vedere DAX modello di esempio.

Esempio 1

In questo esempio, LOOKUPVALUE cerca la valuta usata per pagare l'ordine nel giorno in cui è stato effettuato l'ordine:

Exchange Rate =
LOOKUPVALUE (
    'Currency Rate'[Average Rate],
    'Currency Rate'[CurrencyKey], [CurrencyKey],
    'Currency Rate'[DateKey], [OrderDateKey]
)

Hai bisogno sia della data dell'ordine che della valuta per trovare il tasso medio per la data e la valuta corretti. OrderDateKey e CurrencyKey sono le chiavi usate per cercare il Tasso medio nella tabella Valuta.

È possibile utilizzare il tasso di cambio per calcolare l'importo delle vendite nella valuta locale con:

Sales Amount Local Currency =
[Sales Amount] * [Exchange Rate]

Esempio 2

In questo esempio, la colonna calcolata seguente definita nella tabella Sales usa la funzione LOOKUPVALUE per restituire i valori del canale dalla tabella Sales Order.

CHANNEL =
LOOKUPVALUE (
    'Sales Order'[Channel],
    'Sales Order'[SalesOrderLineKey], [SalesOrderLineKey]
)

Tuttavia, in questo caso, poiché esiste una relazione tra le tabelle Sales Order e Sales , è più efficiente usare la RELATED funzione .

CHANNEL =
RELATED ( 'Sales Order'[Channel] )