我确定这里缺少一些简单的东西。但是我没有运气。
我想做的是基于同一列的前2个结果中的列中的值创建一个新的TRUE
/ FALSE
列。
此代码段当前适用于“最大值”
isCurrent =
IF (
'Program'[MajorVersion] = MAXX ( 'Program', 'Program'[MajorVersion] ),
TRUE (),
FALSE ()
)
我希望工作的不仅是MAXX
值,而且是该列中的前2个值。因此,我正在使用下面的TOPN
函数。不幸的是,这不起作用。
isCurrent =
IF (
'Program'[MajorVersion]
IN TOPN (
2,
FILTER ( 'Program', 'Program'[MajorVersion] ),
'Program'[MajorVersion], DESC
),
TRUE (),
FALSE ()
)
表格示例:
ID MajorVersion
1 18.4
2 18.4
3 18.5
4 18.2
5 18.6
6 18.6
7 18.4
8 18.4
9 18.6
10 18.6
所需结果:(由于MajorVersion中的前2个值分别为18.5和18.6)
ID MajorVersion isCurrent
1 18.4 FALSE
2 18.4 FALSE
3 18.5 TRUE
4 18.2 FALSE
5 18.6 TRUE
6 18.6 TRUE
7 18.4 FALSE
8 18.4 FALSE
9 18.6 TRUE
10 18.6 TRUE
答案 0 :(得分:1)
您尝试执行此操作的方式存在几个问题。
首先,TOPN
返回顶部的N
行,而不是列中的顶部N
。
第二,TOPN
返回完整的行,而不仅仅是一行。
要同时解决这两个问题,可以在TOPN
上执行VALUES(Program[MajorVersion])
:
isCurrent =
Program[MajorVersion] IN
TOPN(2,
VALUES(Program[MajorVersion]),
Program[MajorVersion],
DESC
)
这已返回True
或False
,而无需IF
。