Power BI  

Understanding the LOOKUPVALUE DAX Function in Power BI

When you start working seriously with Power BI and DAX, one of the first questions you’ll ask is:

“How do I fetch a value from another table without creating a relationship?”

That’s exactly where LOOKUPVALUE comes in.

The LOOKUPVALUE function allows you to retrieve a value from one table based on a matching condition in another table. Think of it as the DAX equivalent of VLOOKUP or XLOOKUP in Excel, but designed for Power BI’s data model.

In this article, we’ll break it down simply, practically, and honestly — including when you should use it and when you shouldn’t.

What is LOOKUPVALUE?

LOOKUPVALUE searches a column in a table and returns a corresponding value when one or more conditions are met.

Basic Syntax:

LOOKUPVALUE (
    Result_Column,
    Search_Column1, Search_Value1,
    [Search_Column2, Search_Value2, …]
)

In plain English:

  • Result_Column → What you want to return

  • Search_Column → Where Power BI should search

  • Search_Value → What it should match

A Simple Real-World Example

Imagine you have two tables named sales_fact and product_lookup as seen below

12

and you want to bring ProductName into the Sales table. To achieve these, we can leverage the LOOKUPVALUE PowerBI DAX function.

To implement:

Right-click sales_fact and select New column

In the newly added column execute the DAX formula below:

Product Name = 
LOOKUPVALUE(
    product_lookup[ProductName],
    product_lookup[ProductID],
    sales_fact[ProductID]
)

Commit the formula by pressing Enter.

As seen below, the corresponding product name that matched the Product ID is returned. This is similar to using the legacy VLOOKUP and new XLOOKUP function in Microsoft Excel

3

When Should You Use LOOKUPVALUE?

LOOKUPVALUE is most useful when:

  • You don’t have a relationship between tables

  • You’re working with flat or imported data

  • You need a quick calculated column

  • You’re dealing with non-star schema data

Common scenarios:

  • Mapping codes to descriptions

  • Enriching fact tables

  • Handling legacy datasets

  • Working with CSV or API-based imports

LOOKUPVALUE vs RELATED (Very Important)

This is where many people go wrong.

Use RELATED when:

  • A relationship exists

  • You’re following star schema best practices

  • Performance matters

Use LOOKUPVALUE when:

  • No relationship exists

  • You cannot change the data model

  • You need conditional matching

👉 Rule of thumb:

If a relationship exists, don’t use LOOKUPVALUE.

In conclusion, LOOKUPVALUE is not a replacement for good data modeling — but it’s an excellent tactical tool when used correctly.