LOOKUPVALUE

Se aplica a:columna Calculadatabla calculadaMedidacálculo visual

Devuelve el valor de la fila que cumple todos los criterios especificados por una o varias condiciones de búsqueda.

Sintaxis

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

Parámetros

Término Definición
result_columnName Nombre de una columna existente que contiene el valor que desea devolver. No puede ser una expresión.
search_columnName Nombre de una columna existente. Puede estar en la misma tabla que result_columnName o en una tabla relacionada. No puede ser una expresión. Puede especificar varios pares de search_columnName y search_value.
search_value Valor que se va a buscar en search_columnName. Puede especificar varios pares de search_columnName y search_value.
alternateResult (Opcional) Valor devuelto cuando el contexto de result_columnName se filtra a cero o más de un valor distinto. Si no se especifica, la función devuelve BLANK cuando result_columnName se filtra a cero valores, o un error cuando el contexto de result_columnName tiene más de un valor distinto.

Valor devuelto

Valor de result_columnName en la fila donde todos los pares de search_columnName y search_value tienen una coincidencia exacta.

Si ninguna coincidencia satisface todos los valores de búsqueda, la función devuelve BLANK o alternateResult (si se especifica). En otras palabras, la función no devuelve un valor de búsqueda si solo coinciden algunos de los criterios.

Si varias filas coinciden con los valores de búsqueda y los valores de result_columnName para estas filas son idénticos, se devuelve ese valor. Sin embargo, si result_columnName devuelve valores diferentes, la función devuelve un error o alternateResult (si se especifica).

Observaciones

  • Si existe una relación entre la tabla que contiene la columna de resultados y las tablas que contienen las columnas de búsqueda, en la mayoría de los casos, el uso de la RELATED función en lugar de LOOKUPVALUE es más eficaz y proporciona un mejor rendimiento.

  • Puede especificar varios pares de search_columnName y search_value.

  • Los parámetros search_value y alternateResult se evalúan antes de que la función recorra en iteración las filas de la tabla de búsqueda.

  • Evite usar ISERROR o IFERROR capturar un error devuelto por LOOKUPVALUE. Si algunas entradas de la función producen un error cuando no se puede determinar un único valor de salida, proporcionar un alternateResult parámetro es la manera más confiable y de mayor rendimiento para controlar el error.

  • El parámetro alternateResult devuelve un error si se especifica en una columna calculada de Power Pivot.

  • Esta función no se admite para su uso en el modo DirectQuery cuando se usa en columnas calculadas o reglas de seguridad de nivel de fila (RLS).

Los ejemplos de este artículo se pueden usar con el modelo de Power BI Desktop de Adventure Works 2020 de ejemplo. Para obtener el modelo, consulte DAX modelo de ejemplo.

Ejemplo 1

En este ejemplo, LOOKUPVALUE busca la tasa media de la moneda usada para pagar el pedido el día en que se realizó el pedido:

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

Necesita la fecha de pedido y la moneda para encontrar la tasa media de la fecha y la moneda correctas. OrderDateKey y CurrencyKey son las claves que se usan para buscar la tasa media en la tabla Tipo de moneda.

Puede usar el tipo de cambio para calcular el importe de ventas en moneda local con:

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

Ejemplo 2

En este ejemplo, la siguiente columna calculada definida en la tabla Sales de usa la función para devolver valores de canal de la tabla Sales Order.

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

Sin embargo, en este caso, dado que existe una relación entre las tablas Sales Order y Sales , es más eficaz usar la RELATED función .

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