如何使用Dax筛选表格并将其限制为1 TOP行

时间:2019-04-22 19:36:37

标签: powerbi dax

我是Power BI和Dax查询的新手。 我有2表添加1 ::关系。我正在尝试通过外键和特定键过滤第二个表。

例:
###Table1:###
ID | RunID | ...[Other columns]

###Table2:###
ID | RunID | Key | Value | State

因此,我试图在Power BI中使用Dax查询来获取键的值。 (可能有重复的键值对,但我可以排在前一个)

NEWCOLUMN =
VAR tmp =
    FILTER (
        Table2,
        AND ( Table2[RunID] = Table1[RunID], Table2[Key] = "KEY_I_NEED" )
    )
VAR tmp2 =
    CALCULATE ( VALUES ( Table2[Value] ), TOPN ( 1, tmp ) )
RETURN
    tmp2

现在我遇到了错误:

  

“该表达式引用多个列。多个列不能为   转换为标量值。”

无法按照我需要的方式工作。

1 个答案:

答案 0 :(得分:0)

如果只有一个 distinct 值(可以使用重复项),则可以使用查找:

NEWCOLUMN =
    LOOKUPVALUE(
        Table2[Value],
        Table2[RunID], Table1[RunID],
        Table2[Key], "KEY_I_NEED"
    )

如果有多个不同的值,则可以使用最大值:

NEWCOLUMN =
    CALCULATE(
        MAX( Table2[Value] ),
        Table2[Key] = "KEY_I_NEED"
    )

以上内容与RunID隐式匹配(假设这是与表相关的列)。


还有许多其他方法可以使用功能的各种组合来完成此操作,例如TOPNMAXXRELATEDTABLEVALUES等,但是这些不是不可能比我建议的更简单或更有效。