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

在PowerBI中是否有一种特定的方式可以有条件地在列中添加?,powerbi,dax,powerbi-desktop,Powerbi,Dax,Powerbi Desktop,在PowerBI中是否有一种特定的方式可以有条件地在列中添加 样本数据: Lang|Book_Type|Number|Book_Type (groups) ------------------------ A | B1 | 2 | B1 ------------------------ B | B1 | 2 | B1 ------------------------ C | B1 | 3 | B1 -------------------

在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
------------------------
所以,我想做的是,我想要一个第五列,其中对应于每一行,我有这种类型的书的总数,即,在第1、2和3行旁边,在第五列中,我想要:7(=2+2+3),在第4和5行旁边,在第五列中,我想要:6(=4+2)。我也试过分组,但还是一样。在DAX中有这样做的方法吗?我尝试了以下代码,但它给出了一个循环依赖错误

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

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

更好的方法可能是这样的

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

这告诉它对数字列求和,忽略除指定列以外的所有列。

谢谢Alexis。它解决了这个问题。如果您能解释ALLEXCEPT的功能以及它在代码中的工作方式,那就太好了。我的最后一句话就是尝试这样做,但完整的解释更复杂,需要额外的阅读才能完全理解。移除通过“由计算导出”从行上下文生成的筛选器上下文,但指定的列(保留上下文的列)除外。