Powerbi ])、SearchTable[Product]=LookupKey)我想你不明白我的意思。我很感激你把你的答案扩展到了度量,但所有的问题都是关于计算列的。所以我们在行上下文中有一个ThisTable的值。当我们在搜索表中找到一个键的两个或多个不同值时,问题

Powerbi ])、SearchTable[Product]=LookupKey)我想你不明白我的意思。我很感激你把你的答案扩展到了度量,但所有的问题都是关于计算列的。所以我们在行上下文中有一个ThisTable的值。当我们在搜索表中找到一个键的两个或多个不同值时,问题,powerbi,dax,daxstudio,Powerbi,Dax,Daxstudio,])、SearchTable[Product]=LookupKey)我想你不明白我的意思。我很感激你把你的答案扩展到了度量,但所有的问题都是关于计算列的。所以我们在行上下文中有一个ThisTable的值。当我们在搜索表中找到一个键的两个或多个不同值时,问题就开始了。请更新我的样本数据,或者在苹果的分类字段中输入两个不同的值。您将无法使用您的第一种方法创建计算列,这实际上与我在问题中使用的方法相同。这显然是示例数据中的错误。此解决方案从一开始就被禁止:-)谢谢!非常感谢。我希望您不介意我使用dax


])、SearchTable[Product]=LookupKey)我想你不明白我的意思。我很感激你把你的答案扩展到了度量,但所有的问题都是关于计算列的。所以我们在行上下文中有一个ThisTable的值。当我们在搜索表中找到一个键的两个或多个不同值时,问题就开始了。请更新我的样本数据,或者在苹果的分类字段中输入两个不同的值。您将无法使用您的第一种方法创建计算列,这实际上与我在问题中使用的方法相同。这显然是示例数据中的错误。此解决方案从一开始就被禁止:-)谢谢!非常感谢。我希望您不介意我使用daxformatter.com构建您的DAX代码。我将用基准测试解决方案检查您的提案的性能。您能解释一下您提出的两个代码的逻辑吗?简单地说,我使用CALCULATE来实现上下文转换,因为FIRSTNONBLANK是一个迭代器,即不理解行上下文。TREATAS实现不相关值的数据沿袭。在这2个查询中,我没有考虑任何优化,但第二个查询可能更优化(我不确定)。这些方法比Alexis Olsen的两种方法性能要低。然而,使用TREATAS可能是对公认答案的改进提示。我感谢你的贡献。
LOOKUPVALUE(
      SearchTable[name]
    , SearchTable[id] -- how to get the fist value, if here are multiple id?
    , ThisTable[id]
    )
MyLookup = 
var LookupKey = ThisTable[Product]
return
CALCULATE (
    MAX ( SearchTable[Category] ),
    SearchTable[Product] = LookupKey
)
-- Bounty code
EVALUATE
ADDCOLUMNS (
    VALUES ( ThisTable[Product] ),
    "FilterLookup",
    VAR LookupKey = ThisTable[Product]
    RETURN
        CALCULATE ( MAX ( SearchTable[Category] ), SearchTable[Product] = LookupKey )
)
Column =
VAR row_id = ThisTable[id] 
VAR ret_val =
    SELECTCOLUMNS (
        TOPN (
            1;
            CALCULATETABLE (
                SearchTable;
                SearchTable[id] = row_id;
                SearchTable[name] <> BLANK ()
            )
        );
        "name"; SearchTable[name]
    )
RETURN
    ret_val
LookupFunction =
LOOKUPVALUE ( SearchTable[Category], SearchTable[Product], ThisTable[Product] )
MaxxLookup =
MAXX (
    FILTER ( SearchTable, SearchTable[Product] = ThisTable[Product] ),
    SearchTable[Category]
)
CaclculateMaxLookup =
CALCULATE (
    MAX ( SearchTable[Category] ),
    SearchTable[Product] = EARLIER ( ThisTable[Product] )
)
LookupMeasure =
LOOKUPVALUE (
    SearchTable[Category],
    SearchTable[Product], CALCULATE ( SELECTEDVALUE ( ThisTable[Product] ) )
)
MaxxMeasure=
VAR CurrProduct = CALCULATE ( SELECTEDVALUE ( ThisTable[Product] ) )
RETURN
    MAXX (
        FILTER ( SearchTable, SearchTable[Product] = CurrProduct ),
        SearchTable[Category]
    )
CaclculateMaxMeasure =
VAR CurrProduct = CALCULATE ( SELECTEDVALUE ( ThisTable[Product] ) )
RETURN
    CALCULATE ( MAX ( SearchTable[Category] ), SearchTable[Product] = CurrProduct )
Measure0 =
FIRSTNONBLANK (
    SearchTable[Category],
    CALCULATE (
        MAX ( SearchTable[Product] ),
        TREATAS ( VALUES ( ThisTable[product] ), SearchTable[Product] )
    )
)
Measure1 =
CALCULATE (
    FIRSTNONBLANK (
        SearchTable[Category],
        CALCULATE (
            MAX ( SearchTable[Product] ),
            TREATAS ( VALUES ( ThisTable[product] ), SearchTable[Product] )
        )
    )
)