欢迎光临散文网 会员登陆 & 注册

对“Power BI之DAX神功:第3卷第13回”官方说法不认同

2023-07-27 01:22 作者:催老道  | 我要投稿

我不认同官方的说法。

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('成绩表'[分数]),'成绩表') //看第二个参数是一个表时就有问题

)




运行后的结果图如下

结果图
外面筛选生效
列2的复制器是表时,外面的筛选没生效
外面筛选生效

这三列的代码如下:

列1 = CALCULATE(  SUM('成绩表'[分数])  ,'成绩表'[分数]>1)



列2 = CALCULATE(  SUM('成绩表'[分数])  ,FILTER('成绩表','成绩表'[分数]>1)      )



列3 =

CALCULATE(

SUM('成绩表'[分数]),

CALCULATETABLE(

FILTER('成绩表','成绩表'[分数]>1),

ALLEXCEPT('成绩表','成绩表'[学号],'成绩表'[科目],'成绩表'[分数]))

)


对“Power BI之DAX神功:第3卷第13回”官方说法不认同的评论 (共 条)

分享到微博请遵守国家法律