我正在尝试使用过滤器和TOPN从另一个表中查找一个值。
我有两个这样的表:
Table1
ID Latest
X-1
X-2Table2 (Key是ID和Start的拼接)
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的结尾为:
ID Latest
X-1 X-1 - 2
X-2 X-2 - 1我想大概是这样的
Latest = LOOKUPVALUE(ggTwo[Key], ggTwo[ID], TOPN(1, ggTwo, CALCULATE(ALL(ggTwo[ID]), FILTER(ggTwo, ggTwo[ID] = ggOne)))) 但这引用了多个列。我不知道如何解决这个问题。
发布于 2018-02-27 02:15:06
我会使用MAXX而不是TOPN。例如,
Latest = MAXX(
FILTER(Table2,
Table2[Status] = "Done" &&
Table2[ID] = EARLIER(Table1[ID])),
Table2[Key])如果您有一个基于ID列的关系,则不需要第二个条件:
Latest = MAXX(FILTER(RELATEDTABLE(Table2), Table2[Status] = "Done"), Table2[Key])发布于 2018-02-28 05:24:13
为了从状态为打开的位置开始,我在表2上创建了一个计算列。
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]
)https://stackoverflow.com/questions/48994108
复制相似问题