如何按年周汇总SWITCH度量值并与目标值进行对比?
按年周汇总项目工时并对比预算实现方案
现有基础
目前已实现度量值Daily_Hours,可将项目总工时平均分配至项目周期内的每日,项目起止日期外的日期工时为0。同时通过Daily_Hours_Visual度量值,完成了以项目ID为行、Calendar_Table日期层级为列的矩阵可视化,且行总计计算逻辑正确。
项目数据表
| 项目ID | 总工时 | 开始日期 | 结束日期 |
|---|---|---|---|
| 1 | 100 | 2023年1月1日 | 2023年1月9日 |
| 2 | 50 | 2023年1月5日 | 2023年1月30日 |
| 3 | 200 | 2023年1月10日 | 2023年1月29日 |
| 4 | 75 | 2023年1月16日 | 2023年2月3日 |
| 5 | 125 | 2023年2月2日 | 2023年2月21日 |
现有度量值
每日工时分配度量值
Daily_Hours = VAR current_day = CALCULATE(MAX(CALENDAR_TABLE[Date])) VAR start_date = CALCULATE(MAX(Project_Table[Start Date])) VAR end_date = CALCULATE(MAX(Project_Table[End Date])) VAR date_diff = CALCULATE(DATEDIFF(start_date, end_date, DAY)) VAR daily = DIVIDE(CALCULATE(MAX(Project_Table[Total Work Hours])), date_diff) RETURN SWITCH(TRUE(), (current_day >= start_date && current_day <= end_date) = False, 0, daily )
可视化用度量值(修正行总计)
Daily_Hours_Visual = VAR __table = SUMMARIZE(Project_Table, Project_Table[Project ID], "_VALUE", [Daily_Hours]) RETURN IF(HASONEVALUE(Project_Table[Project ID]), [Daily_Hours], SUMX(__table, [_VALUE]))
需求实现:按年周汇总并对比预算
步骤1:为日历表添加年周计算列
若Calendar_Table中没有年周字段,可添加以下计算列(二选一即可):
- 常规年周格式:
年周 = FORMAT(CALENDAR_TABLE[Date], "yyyy第ww周")
- ISO标准年周格式:
ISO年周 = "ISO " & FORMAT(CALENDAR_TABLE[Date], "yyyy-\WW")
步骤2:创建年周汇总工时度量值
用于计算单年周内的总工时:
周汇总工时 = SUMX( SUMMARIZE( CALENDAR_TABLE, CALENDAR_TABLE[Date], "每日工时", [Daily_Hours] ), [每日工时] )
步骤3:创建预算对比相关度量值
假设预算阈值为100,可创建以下两个度量值:
预算状态判断
预算状态 = VAR 周总工时 = [周汇总工时] VAR 预算阈值 = 100 -- 可替换为参数或表中存储的动态预算值 RETURN SWITCH(TRUE(), 周总工时 <= 预算阈值, "在预算内", 周总工时 > 预算阈值, "超出预算", "无数据" )
工时与预算差值
工时预算差值 = [周汇总工时] - 100
可视化配置
- 新建矩阵或表格可视化组件:
- 行/列区域:选择
Calendar_Table中的年周字段 - 值区域:添加
周汇总工时、预算状态、工时预算差值(按需选择)
- 行/列区域:选择
- 若需按项目分组查看年周汇总,可将
Project_Table[项目ID]添加到行/列区域。
内容的提问来源于stack exchange,提问作者Knovolt
相关产品推荐
相关产品推荐

