LOOKUPVALUE
Si applica a: Calcolo visivo misura tabella calcolata colonna calcolata
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 contenente i valori da restituire. Non può essere un'espressione. |
search_columnName | Nome della 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 è stato filtrato fino a zero o a più di un valore distinto. Se non specificato, la funzione restituisce BLANK quando result_columnName viene filtrato fino a valori zero o un errore quando è presente più di un valore distinto nel contesto per result_columnName. |
Valore restituito
Valore del parametro result_columnName in corrispondenza della riga in cui per tutte le coppie di search_columnName e search_value esiste una corrispondenza esatta.
Se non è presente alcuna corrispondenza che soddisfa tutti i valori di ricerca, viene restituito BLANK o alternateResult, se specificato. In altre parole, la funzione non restituisce un valore di ricerca se vengono soddisfatti solo alcuni dei criteri.
Se più righe corrispondono ai valori di ricerca e i valori in result_columnName per queste righe sono identici, viene restituito questo valore. Se invece result_columnName restituisce valori diversi, viene restituito 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 funzione RELATED al posto di 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 esegua l'iterazione delle righe della tabella di ricerca.
Evitare di usare funzioni 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, specificare un parametro alternateResult rappresenta il modo più veloce e affidabile 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 nella modalità DirectQuery se usata in colonne calcolate o nelle regole di sicurezza a livello di riga.
Esempio 1
In questo esempio, LOOKUPVALUE viene usato per cercare il tasso medio (Average Rate) per la valuta utilizzata 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]
)
Per trovare il tasso medio per la data e la valuta corrette sono necessari sia la data dell'ordine che la valuta. OrderDateKey e CurrencyKey sono le chiavi usate per cercare il tasso medio nella tabella Currency Rate.
È possibile utilizzare il tasso di cambio (Exchange Rate) per calcolare l'importo delle vendite nella valuta locale con:
Sales Amount Local Currency = [Sales Amount] * [Exchange Rate]
Esempio 2
In questo esempio, nella colonna calcolata seguente definita nella tabella Sales viene usata la funzione LOOKUPVALUE per restituire i valori del canale dalla tabella Sales Order.
CHANNEL =
LOOKUPVALUE (
'Sales Order'[Channel],
'Sales Order'[SalesOrderLineKey],
[SalesOrderLineKey]
)
Tuttavia, poiché in questo caso esiste una relazione tra le tabelle Sales Order e Sales, è più efficiente usare la funzione RELATED.
CHANNEL = RELATED('Sales Order'[Channel])