LOOKUPVALUE

Aplica-se a:Coluna calculadaTabela calculadaMedidaCálculo visual

Retorna o valor da linha que atende a todos os critérios especificados por uma ou mais condições de pesquisa.

Sintaxe

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

Parâmetros

Vigência Definição
result_columnName O nome de uma coluna existente que contém o valor que você deseja retornar. Não pode ser uma expressão.
search_columnName O nome de uma coluna existente. Pode estar na mesma tabela que result_columnName ou em uma tabela relacionada. Não pode ser uma expressão. Pode especificar vários pares de search_columnName e search_value.
search_value O valor a procurar em search_columnName. Pode especificar vários pares de search_columnName e search_value.
alternateResult (Opcional) O valor devolvido quando o contexto para result_columnName é filtrado para zero ou mais do que um valor distinto. Se não especificado, a função retorna BLANK quando result_columnName é filtrada para zero valores, ou um erro quando o contexto para result_columnName tem mais do que um valor distinto.

Valor de retorno

O valor de result_columnName na linha onde todos os pares de search_columnName e search_value têm uma correspondência exata.

Se nenhuma correspondência satisfazer todos os valores de pesquisa, a função retorna BLANK ou alternateResult (se especificado). Em outras palavras, a função não retorna um valor de pesquisa se apenas alguns dos critérios corresponderem.

Se várias linhas coincidirem com os valores de pesquisa e os valores result_columnName para essas linhas forem idênticos, esse valor é devolvido. No entanto, se result_columnName devolver valores diferentes, a função devolve um erro ou alternateResult (se especificado).

Comentários

  • Se existir uma relação entre a tabela que contém a coluna do resultado e as tabelas que contêm as colunas de pesquisa, na maioria dos casos, usar a RELATED função em vez de LOOKUPVALUE é mais eficiente e proporciona melhor desempenho.

  • Pode especificar múltiplos pares de search_columnName e search_value.

  • Os parâmetros search_value e alternateResult são avaliados antes que a função itere pelas linhas da tabela de pesquisa.

  • Evite usar ISERROR ou IFERROR para capturar um erro devolvido por LOOKUPVALUE. Se algumas entradas da função resultarem num erro quando um único valor de saída não pode ser determinado, fornecer um alternateResult parâmetro é a forma mais fiável e de melhor desempenho para lidar com o erro.

  • O parâmetro alternateResult retorna um erro se especificado em uma coluna calculada do Power Pivot.

  • Esta função não é suportada para utilização no modo DirectQuery quando utilizada em colunas calculadas ou regras de segurança ao nível da linha (RLS).

Exemplos neste artigo podem ser usados com o modelo de exemplo do Power BI Desktop do Adventure Works DW 2020. Para obter o modelo, consulte DAX exemplo de modelo.

Exemplo 1

Neste exemplo, LOOKUPVALUE pesquisa na Taxa Média a moeda usada para pagar a encomenda no dia em que a encomenda foi efetuada:

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

Precisa tanto da Data da Ordem como da Moeda para encontrar a Taxa Média para a data e moeda corretas. OrderDateKey e CurrencyKey são as chaves usadas para procurar a Taxa Média na tabela Taxa de Moeda.

Você pode usar a Taxa de Câmbio para calcular o Valor das Vendas em moeda local com:

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

Exemplo 2

Neste exemplo, a coluna calculada a seguir definida na tabela de vendas usa a função para retornar valores de canal da tabela Ordem de Venda .

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

No entanto, neste caso, como existe uma relação entre as tabelas de Ordem de Venda e Vendas , é mais eficiente usar a RELATED função.

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