首页 > 解决方案 > 是否有特定的方法可以在 PowerBI 的列中有条件地添加?

问题描述

是否有特定的方法可以在 PowerBI 的列中有条件地添加?

样本数据:

Lang|Book_Type|Number|Book_Type (groups)
------------------------
A   |  B1     |  2   | B1
------------------------
B   |  B1     |  2   | B1
------------------------
C   |  B1     |  3   | B1
------------------------
A   |  B2     |  4   | B2
------------------------
B   |  B2     |  2   | B2
------------------------
A   |  B3     |  2   | B3
------------------------
A   |  B4     |  2   | B4
------------------------
B   |  B4     |  5   | B4
------------------------

所以,我想要做的是我想要第 5 列,其中对应于每一行,我有该类型的书籍总数,即在第 5 列中的第 1,2 和 3 行,我想要:7(=2+2+3),在第 4 行和第 5 行的第 5 列,我想要:6(=4+2)。我也尝试过分组,但还是一样。有没有办法在 DAX 中做到这一点?我尝试了以下代码,但它给出了循环依赖错误。

SUMX (
    'Book_store',
    IF (
         ( Book_store[Book_Type] = Book_store[Book_Type (groups)] ),
        CALCULATE ( SUM ( 'Book_store'[Number] ) ),
        BLANK ()
    )
)

标签: powerbidaxpowerbi-desktop

解决方案


这是循环依赖的原因是您将整个表调用为 SUMX 的第一个参数中新列定义的一部分(其中包括您要添加的列......但您不能引用您尚未创建)。

更好的方法可能看起来像这样

CALCULATE (
    SUM ( Book_store[Number] ),
    ALLEXCEPT ( Book_store, Book_store[Book_type (groups)] )
)

这告诉它对 Number 列求和,忽略指定列之外的所有列。


推荐阅读