Power BI使用DATESBETWEEN计算时段出勤值及DAX调试方法求助
Power BI出勤统计需求解决方案
一、DAX计算代码修正
你原有代码存在几个语法和逻辑问题:迭代函数参数顺序颠倒、未添加排除最后4行的逻辑、多值返回格式错误、变量名定义缺空格。修正后可用代码如下:
/* START QUERY BUILDER */ DEFINE VAR StartDate = DATE ( 2020, 04, 12 ) VAR EndDate = DATE ( 2020, 05, 30 ) // 提取需排除的最近4天日期 VAR ExcludeLast4Dates = SELECTCOLUMNS( TOPN(4, FILTER(ALL('DATA'[Date]), 'DATA'[Date] <= EndDate), 'DATA'[Date], DESC), "Date", [Date] ) // 预生成符合要求的筛选后表 VAR FilteredTable = FILTER( 'DATA', 'DATA'[Date] >= StartDate && 'DATA'[Date] <= EndDate && NOT('DATA'[Date] IN ExcludeLast4Dates) ) EVALUATE VAR MaxAttendance = MAXX(FilteredTable, 'DATA'[Employees present at 11:00]) VAR MinAttendance = MINX(FilteredTable, 'DATA'[Employees present at 11:00]) VAR AverageAttendance = AVERAGEX(FilteredTable, 'DATA'[Employees present at 11:00]) RETURN ROW( "封控期最大出勤", MaxAttendance, "封控期最小出勤", MinAttendance, "封控期平均出勤", ROUND(AverageAttendance, 2) // 可按需调整保留小数位数 ) /* END QUERY BUILDER */
如果需要把这三个指标做成可用于报表的度量值,单独定义三个度量值即可,上下文会自动适配报表筛选器。
二、DAX等效Python print调试方法
和你常用的Python调试逻辑对应,DAX有以下替代方案:
- 打印变量/数据集内容:使用DAX Studio工具,直接用
EVALUATE + 你要查看的变量/表即可完整输出结果,和print打印变量的效果完全一致。如果是临时校验也可以在Power BI Desktop里新建临时度量值,放到卡片图上直接看结果 - 打印变量类型:使用DAX内置的
TYPE()函数,返回值对应类型如下:1=数值、2=文本、3=日期、4=布尔值、5=空值,用法示例:EVALUATE ROW("变量类型", TYPE(MaxAttendance))等效Python的print(type(变量)) - 分步校验:可以把复杂逻辑拆成多个VAR变量,逐个输出变量结果排查问题,和Python分段打print调试的逻辑一致
内容的提问来源于stack exchange,提问作者Bende
相关产品推荐
相关产品推荐

