PowerBI IF值输入TOPN值,然后为TRUE

时间:2018-11-16 19:30:10

标签: powerbi dax

我确定这里缺少一些简单的东西。但是我没有运气。

我想做的是基于同一列的前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

1 个答案:

答案 0 :(得分:1)

您尝试执行此操作的方式存在几个问题。

首先,TOPN返回顶部的N行,而不是列中的顶部N

第二,TOPN返回完整的行,而不仅仅是一行。

要同时解决这两个问题,可以在TOPN上执行VALUES(Program[MajorVersion])

isCurrent =
Program[MajorVersion] IN
    TOPN(2,
        VALUES(Program[MajorVersion]),
        Program[MajorVersion],
        DESC
    )

这已返回TrueFalse,而无需IF