Curso
LOOKUPVALUE é uma função DAX muito útil para localizar e recuperar valores em outras tabelas.
Embora não substitua boas práticas de modelagem de dados nos seus relatórios do Power BI, a LOOKUPVALUE oferece bastante flexibilidade para escrever expressões complexas com múltiplas condições — especialmente quando você quer combiná-la com outras funções DAX.
Neste tutorial, vamos apresentar os fundamentos da função LOOKUPVALUE, como ela funciona, como usá-la (principalmente em conjunto com outras funções DAX) e algumas considerações de performance e boas práticas para aplicar a LOOKUPVALUE nos seus relatórios do Power BI.
A LOOKUPVALUE no Power BI é bem parecida com a VLOOKUP do Microsoft Excel. No entanto, vale a pena se familiarizar com DAX e Power BI antes de encarar a LOOKUPVALUE. Nossa trilha de habilidades Power BI fundamentals vai te colocar no ritmo rapidamente, e nosso DAX cheat sheet é um ótimo material de referência para ter à mão enquanto você trabalha com funções DAX.

os fundamentos de LOOKUPVALUE
Com a função LOOKUPVALUE, podemos recuperar um único valor de uma coluna em outra tabela com base em uma ou mais condições de busca.
Aqui está a sintaxe padrão:
LOOKUPVALUE (
<result_columnName>,
<search_columnName>,
<search_value>
[, <search2_columnName>, <search2_value>]…
[, <alternateResult>]
)
Se você ainda é novo em DAX e na sintaxe, confira nosso curso Introduction to DAX ou leia rapidamente nosso tutorial de DAX para iniciantes do zero. Você também pode aprofundar seus conhecimentos em DAX com nosso curso Intermediate DAX.
Vamos detalhar os parâmetros da LOOKUPVALUE:
- result_column: é a coluna que você quer recuperar da tabela de destino.
- search_column1: é a coluna na tabela de destino que contém o critério que você deseja corresponder.
- search_value1: é o valor a ser procurado em search_column1. Pode ser um valor fixo (como um texto), o resultado de uma expressão (como min ou max) ou uma coluna na tabela de origem contra a qual a
LOOKUPVALUEdeve fazer a correspondência. - [search_column2, search_value2, ...]: pares adicionais opcionais de colunas e valores de busca. Você pode informar vários pares para criar condições de busca mais complexas.
- [alternateResult]: é o resultado padrão ou alternativo. Se a
LOOKUPVALUEnão encontrar uma correspondência adequada, ela retorna esse valor.
Cada vez que a LOOKUPVALUE realiza uma busca na tabela de destino, ela deve encontrar apenas uma correspondência. Se houver várias possíveis, você precisará definir pares de busca adicionais até que a LOOKUPVALUE consiga encontrar um resultado único.
Para ficar mais claro, vamos falar de um exemplo disso na próxima seção.
exemplos simples de LOOKUPVALUE
uso básico
Imagine que você tem uma tabela de produtos com as colunas ProductID e ProductName. Você quer encontrar o nome do produto com ID 101.
Product_Name = LOOKUPVALUE(Products[ProductName], Products[ProductID], 101)
múltiplas condições de busca
Agora, suponha que você tenha uma tabela Sales com as colunas ProductID, Region e Revenue. Você quer encontrar a receita de um produto específico (ID 101) em uma determinada região (East).
Product_Revenue = LOOKUPVALUE(Sales[Revenue], Sales[ProductID], 101, Sales[Region], "East")
tratando valores em branco
Quando as condições de busca não retornam nenhuma correspondência, a LOOKUPVALUE retorna em branco.
Aqui estão duas maneiras de tratar esses valores em branco:
- Usar o parâmetro de resultado alternativo da
LOOKUPVALUE. - Usar a função
COALESCEpara especificar um resultado alternativo caso aLOOKUPVALUEretorne em branco.
método 1: resultado alternativo
Você pode definir um valor padrão ou resultado alternativo na função LOOKUPVALUE. Esse é um parâmetro opcional colocado no final da expressão.
Product_Name = LOOKUPVALUE(Products[ProductName], Products[ProductID], 101, "Not Found")
método 2: COALESCE
Outra opção é usar a função COALESCE, que funciona praticamente da mesma forma que especificar um resultado alternativo direto na LOOKUPVALUE.
No entanto, dependendo do seu caso de uso e do conjunto de dados, o COALESCE pode ter melhor performance. Se velocidade e desempenho são importantes para o seu relatório no Power BI, vale a pena considerar o COALESCE.
Commission Rate =
COALESCE(
LOOKUPVALUE(
'CommissionRates'[Rate],
'CommissionRates'[SalespersonID], SELECTEDVALUE('Sales'[SalespersonID])
),
0.05
)
LOOKUPVALUE vs RELATED
Definir relacionamentos entre suas tabelas é sempre uma boa prática de modelagem de dados. Isso é mais rápido do que usar a função DAX LOOKUPVALUE e torna seu modelo semântico mais fácil de entender hoje e no futuro.
Quando você cria relacionamentos entre as tabelas, pode usar a função RELATED. Na maior parte dos casos, a RELATED é mais simples e direta do que a LOOKUPVALUE.
A função RELATED é ideal quando você precisa buscar um valor em outra tabela que tem um relacionamento direto com a tabela de origem.
Por exemplo, se você quiser adicionar o nome do cliente à tabela de vendas e houver um relacionamento direto entre a tabela de vendas e a tabela de clientes em CustomerID, você pode usar:
Customer Name = RELATED(Customers[CustomerName])
No entanto, a `LOOKUPVALUE` é mais flexível do que a `RELATED` e é mais indicada quando você precisa fazer buscas sem um relacionamento direto existente no seu modelo ou quando precisa procurar valores com base em critérios múltiplos ou complexos. Ela é versátil, mas evite o uso excessivo para não impactar a performance.
combinando LOOKUPVALUE com outras funções DAX
Já vimos como combinar LOOKUPVALUE com COALESCE para fornecer um resultado alternativo quando nenhuma correspondência é encontrada.
Há outras funções DAX que funcionam muito bem com a LOOKUPVALUE, como CALCULATE e SWITCH.
Vamos ver alguns exemplos nesta seção.
LOOKUPVALUE & CALCULATE
Combinar a função LOOKUPVALUE com a função CALCULATE é útil em cenários em que você precisa recuperar valores de outra tabela com base em um contexto de cálculo ou filtro que não é acessível diretamente por um relacionamento simples ou uma busca direta.
Isso é comum para aplicar filtros ou mudar a granularidade dos cálculos. Ao combiná-la com a LOOKUPVALUE, você ajusta dinamicamente os critérios da sua busca com base nos resultados dos cálculos.
Exemplo: suponha que você tenha uma lista de produtos e suas metas de vendas para um ano específico em uma tabela. Para um determinado ID de produto, você quer buscar a meta de vendas do ano atual.
Veja como fazer isso combinando as funções CALCULATE e LOOKUPVALUE.
Product Sales Target =
VAR SpecificProductID = 123
VAR CurrentYear = YEAR(TODAY())
RETURN
CALCULATE(
LOOKUPVALUE(
SalesTargets[SalesTarget],
SalesTargets[ProductID],
SpecificProductID,
SalesTargets[Year],
CurrentYear
),
ALL(SalesTargets)
)
LOOKUPVALUE & SWITCH
Combinar a função LOOKUPVALUE com a função SWITCH funciona muito bem quando você precisa buscar valores dinamicamente em outra tabela e retornar resultados diferentes com base em múltiplas possibilidades.
Se você não conhece a função SWITCH, temos um tutorial que te guia em detalhes.
Exemplo: suponha que você tenha um conjunto de vendas e uma tabela separada de faixas de comissão. A taxa de comissão que um funcionário recebe é determinada pela sua faixa de vendas, que não está armazenada diretamente, mas pode ser calculada a partir do valor total vendido.
Você quer criar uma coluna calculada na tabela Sales que indique a taxa de comissão de cada venda com base na faixa.
Commission Rate =
VAR SalesAmount = Sales[TotalSalesAmount]
VAR SalesTier =
SWITCH(
TRUE(),
SalesAmount <= 500, "Low",
SalesAmount <= 2000, "Medium",
"High"
)
RETURN
LOOKUPVALUE(
CommissionRates[CommissionRate],
CommissionRates[SalesTier],
SalesTier
)
Nesta expressão DAX, usamos a função SWITCH para definir a faixa de vendas e, em seguida, usamos esse resultado na LOOKUPVALUE para recuperar a taxa de comissão correspondente àquela faixa.
considerações de performance e boas práticas
1. use relacionamentos sempre que possível
É preferível usar relacionamentos diretos entre as tabelas sempre que possível. Relacionamentos são otimizados para performance no Power BI, e funções como RELATED costumam ser muito mais eficientes do que a LOOKUPVALUE.
Essa abordagem também aproveita as otimizações internas do Power BI, o que é importante se você quer reduzir o tempo de carregamento dos seus relatórios.
2. minimize o uso em colunas calculadas
Embora a LOOKUPVALUE possa ser usada em colunas calculadas, é melhor não exagerar. Colunas calculadas são computadas durante a atualização dos dados e podem deixar o processo mais lento, principalmente em conjuntos de dados grandes.
Considere usar a LOOKUPVALUE em medidas, onde os cálculos são executados em tempo de consulta e podem se beneficiar de otimizações do mecanismo de consulta.
3. trate resultados em branco com cuidado
A LOOKUPVALUE retorna em branco quando não encontra correspondência. Como vimos, é importante escolher a melhor forma de tratar isso nos seus relatórios. Você pode considerar o uso de funções como COALESCE ou o parâmetro de resultado alternativo da LOOKUPVALUE para fornecer valores padrão quando o retorno for em branco.
4. tipos de dados e diferenciação entre maiúsculas e minúsculas
Garanta que o valor de busca e a coluna pesquisada tenham tipos de dados compatíveis e esteja atento a diferenciação entre maiúsculas e minúsculas. Incompatibilidades de tipo ou de caixa podem gerar resultados inesperados ou erros na função LOOKUPVALUE.
conclusão
Em resumo, a LOOKUPVALUE amplia suas possibilidades na hora de localizar e recuperar valores em outras tabelas. Ela é especialmente poderosa quando combinada com outras funções DAX. Ainda assim, não substitui boas práticas de modelagem de dados, e a recomendação é sempre tentar definir relacionamentos entre as tabelas nos seus relatórios do Power BI primeiro.
Se você está pensando em seguir carreira como desenvolvedor Power BI, confira nosso guia passo a passo para se tornar um Power BI developer. E siga aprendendo ao explorar nossa trilha de carreira completa Data Analyst in Power BI, que ensina tudo o que você precisa para começar a usar o Power BI na prática.


