对“Power BI之DAX神功:第3卷第13回”官方说法不认同
我不认同官方的说法。
CALCULATE(计算器,筛选器):第二个参数值为表时,外面的筛选没有生效(个人感觉第二个参数还是行上下文,必须加CALCULATE/CALCULATETABLE/RELATEDTABLE变成筛选上下文)。
要么像孙兴华在外面套CALCULATE,要么在第二个参数上加CALCULATETABLE/RELATEDTABLE
代码如下:
实验表12 =
ADDCOLUMNS (
VALUES ('学生表'[姓名]),
//VALUES ('成绩表'[学号]),
"列筛选", CALCULATE([总分],'成绩表'[分数] > 1),
"表筛选", CALCULATE([总分],FILTER ('成绩表','成绩表'[分数] > 1)), //不正常:外面的筛选没有生效
/*
CALCULATE(计算器,筛选器):第二个参数值为表时,外面的筛选没有生效(个人感觉第二个参数还是行上下文,必须加CALCULATE/CALCULATETABLE/RELATEDTABLE)。
要么像孙兴华在外面套CALCULATE,要么在第二个参数上加CALCULATETABLE/RELATEDTABLE
*/
"表筛选2", calculate(CALCULATE ([总分],FILTER ('成绩表','成绩表'[分数] > 1))), //正常
"表筛选3", CALCULATE([总分], CALCULATETABLE(FILTER ('成绩表','成绩表'[分数] > 1)) ), //正常
"表筛选4", CALCULATE([总分], FILTER (RELATEDTABLE('成绩表'),'成绩表'[分数] > 1) ), //正常
"表筛选5", CALCULATE([总分], FILTER(RELATEDTABLE('成绩表'), '成绩表'[分数] > 1) ), //正常
"FILTER改为ADDCOLUMNS函数", CALCULATE ([总分],ADDCOLUMNS( '成绩表',"值为1",1)), //不正常:外面的筛选没有生效,FILTER改为ADDCOLUMNS也会出现这个问题
"FILTER改为ADDCOLUMNS函数2", CALCULATE( CALCULATE([总分],ADDCOLUMNS( '成绩表',"值为1",1)) ), //正常
"FILTER改为ADDCOLUMNS函数3", CALCULATE( [总分],CALCULATETABLE( ADDCOLUMNS( '成绩表',"值为1",1) ) ) , //正常
/*
"FILTER外面套ADDCOLUMNS", CALCULATE( [总分],CALCULATETABLE( ADDCOLUMNS( FILTER ('成绩表','成绩表'[分数] > 1),"值为1",1) ) ) , //正常
"FILTER外面套ADDCOLUMNS_2", CALCULATE( CALCULATE([总分],ADDCOLUMNS( FILTER ('成绩表','成绩表'[分数] > 1),"值为1",1)) ), //正常
*/
"总分",SUM('成绩表'[分数]),
"总分2",calculate(SUM('成绩表'[分数])),
"总分3",calculate(SUM('成绩表'[分数]),'成绩表') //看第二个参数是一个表时就有问题
)
运行后的结果图如下




这三列的代码如下:
列1 = CALCULATE( SUM('成绩表'[分数]) ,'成绩表'[分数]>1)
列2 = CALCULATE( SUM('成绩表'[分数]) ,FILTER('成绩表','成绩表'[分数]>1) )
列3 =
CALCULATE(
SUM('成绩表'[分数]),
CALCULATETABLE(
FILTER('成绩表','成绩表'[分数]>1),
ALLEXCEPT('成绩表','成绩表'[学号],'成绩表'[科目],'成绩表'[分数]))
)