首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >带TOPN和过滤器的DAX Lookupvalue

带TOPN和过滤器的DAX Lookupvalue
EN

Stack Overflow用户
提问于 2018-02-27 01:41:04
回答 2查看 3.5K关注 0票数 1

我正在尝试使用过滤器和TOPN从另一个表中查找一个值。

我有两个这样的表:

Table1

代码语言:javascript
运行
复制
ID   Latest
X-1
X-2

Table2 (Key是ID和Start的拼接)

代码语言:javascript
运行
复制
ID  Start    Key    Status
X-1   1     X-1 - 1   Done
X-1   2     X-1 - 2   Done
X-1   3     X-1 - 3   Open
X-1   4     X-1 - 4   Open
X-2   1     X-2 - 1   Done
X-2   2     X-2 - 2   Open
X-2   3     X-2 - 3   Open
X-2   4     X-2 - 4   Open

我想要做的是,对于Table1[Latest]中的空值,根据Table2[Start]中的最高数字来查找Table2[Key]中的值,并且仅查找Table2[Status]中的值,并分别为ID中的每个Table1找到带有"Open"的值。

因此,Table1的结尾为:

代码语言:javascript
运行
复制
ID   Latest
X-1   X-1 - 2
X-2   X-2 - 1

我想大概是这样的

代码语言:javascript
运行
复制
Latest = LOOKUPVALUE(ggTwo[Key], ggTwo[ID], TOPN(1, ggTwo, CALCULATE(ALL(ggTwo[ID]), FILTER(ggTwo, ggTwo[ID] = ggOne)))) 

但这引用了多个列。我不知道如何解决这个问题。

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2018-02-27 02:15:06

我会使用MAXX而不是TOPN。例如,

代码语言:javascript
运行
复制
Latest = MAXX(
              FILTER(Table2,
                    Table2[Status] = "Done" &&
                    Table2[ID] = EARLIER(Table1[ID])),
              Table2[Key])

如果您有一个基于ID列的关系,则不需要第二个条件:

代码语言:javascript
运行
复制
Latest = MAXX(FILTER(RELATEDTABLE(Table2), Table2[Status] = "Done"), Table2[Key])
票数 2
EN

Stack Overflow用户

发布于 2018-02-28 05:24:13

为了从状态为打开的位置开始,我在表2上创建了一个计算列。

代码语言:javascript
运行
复制
LastOpenStart = 
CALCULATE (
    MAX ( ggTwo[Start] ),
    ggTwo[Status] = "open",
    FILTER ( ggTwo, ggTwo[ID] = EARLIER ( ggTwo[ID] ) )

//Query
EVALUATE
SELECTCOLUMNS(
    NATURALINNERJOIN (
        FILTER ( ggTwo, ggTwo[LastOpenStart] = ggTwo[Start] ),
        FILTER ( ggOne, ggOne[Latest] = BLANK () )
    ),
    "ID",ggTwo[ID],
   "Key",ggTwo[Key]
)
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/48994108

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档