LOOKUPVALUE
S’applique à :Colonne calculéeTable calculéeMesureCalcul visuel
Retourne la valeur pour la ligne qui remplit tous les critères spécifiés par une ou plusieurs conditions de recherche.
Syntaxe
LOOKUPVALUE (
<result_columnName>,
<search_columnName>,
<search_value>
[, <search2_columnName>, <search2_value>]…
[, <alternateResult>]
)
Paramètres
Terme | Définition |
---|---|
result_columnName | Nom d’une colonne existante qui contient la valeur que vous voulez retourner. Il ne peut pas s’agir d’une expression. |
search_columnName | Nom d’une colonne existante. Elle peut se trouver dans la même table que result_columnName ou dans une table associée. Il ne peut pas s’agir d’une expression. Plusieurs paires de search_columnName et de search_value peuvent être spécifiées. |
search_value | Valeur à rechercher dans search_columnName. Plusieurs paires de search_columnName et de search_value peuvent être spécifiées. |
alternateResult | (Facultatif) Valeur retournée quand le contexte de result_columnName a été filtré sur zéro ou plusieurs valeurs distinctes. Si elle n’est pas spécifiée, la fonction retourne BLANK lorsque result_columnName est filtrée à zéro valeur ou une erreur lorsqu’il existe plusieurs valeurs distinctes dans le contexte pour result_columnName. |
Valeur de retour
Valeur de result_column sur la ligne où toutes les paires de search_column et search_value ont une correspondance exacte.
En l’absence de résultat qui correspond à toutes les valeurs de recherche, la valeur BLANK ou alternateResult (si elle est fourni) est retournée. En d’autres termes, la fonction ne retourne pas de valeur de recherche si seuls certains critères sont remplis.
Si plusieurs lignes correspondent aux valeurs de recherche et que les valeurs du result_columnName pour ces lignes sont identiques, cette valeur est retournée. Cependant, si result_column retourne des valeurs différentes, une erreur ou alternateResult (s’il est fourni) est retourné.
Remarques
S’il existe une relation entre les tables qui contiennent la colonne de résultat et les tables qui contiennent les colonnes de recherche, dans la plupart des cas, l’utilisation de la fonction RELATED au lieu de LOOKUPVALUE est plus efficace et offre de meilleures performances.
Plusieurs paires de search_columnName et de search_value peuvent être spécifiées.
Les paramètres search_value et alternateResult sont évalués avant l’itération de la fonction dans les lignes de la table de recherche.
Évitez d’utiliser les fonctions ISERROR ou IFERROR pour capturer une erreur retournée par LOOKUPVALUE. Si certaines entrées de la fonction provoquent une erreur quand une seule valeur de sortie ne peut pas être déterminée, le fait de fournir un paramètre alternateResult est le moyen le plus fiable et le plus performant pour gérer l’erreur.
Le paramètre alternateResult retourne une erreur s’il est spécifié dans une colonne calculée PowerPivot.
Cette fonction n’est pas prise en charge pour une utilisation en mode DirectQuery quand elle est utilisée dans des colonnes calculées ou des règles de sécurité au niveau des lignes (RLS).
Exemple 1
Dans cet exemple, LOOKUPVALUE est utilisé pour rechercher le taux moyen de la devise utilisée pour payer la commande le jour où la commande a été passée :
Exchange Rate =
LOOKUPVALUE (
'Currency Rate'[Average Rate],
'Currency Rate'[CurrencyKey], [CurrencyKey],
'Currency Rate'[DateKey], [OrderDateKey]
)
La date de commande et la devise sont requises pour trouver le taux moyen pour la date et la devise appropriées. OrderDateKey et CurrencyKey sont les clés utilisées pour rechercher le taux moyen dans la table Taux monétaire.
Vous pouvez utiliser le taux de change pour calculer le montant des ventes en devise locale avec :
Sales Amount Local Currency = [Sales Amount] * [Exchange Rate]
Exemple 2
Dans cet exemple, la colonne calculée suivante définie dans la table Ventes utilise la fonction LOOKUPVALUE pour retourner les valeurs de canal de la table Commande client.
CHANNEL =
LOOKUPVALUE (
'Sales Order'[Channel],
'Sales Order'[SalesOrderLineKey],
[SalesOrderLineKey]
)
Toutefois, dans le cas présent, étant donné qu’il existe une relation entre les tables Commande client et Ventes, il est plus efficace d’utiliser la fonction RELATED.
CHANNEL = RELATED('Sales Order'[Channel])