Power BI数据表如何显示缺失日期 车辆静止日期字段补零操作
Power BI 补全车辆移动缺失日期的实现方案
核心逻辑为通过完整日期维度匹配原始业务数据,无匹配记录的数值默认填充为0,分两种场景实现:
场景1:仅统计单辆车的日期补全
- 第一步:新建日期维度表,覆盖需要统计的全量日期范围,DAX新建表代码:
日期表 = CALENDAR(起始日期, 结束日期)
示例:覆盖2021年7月整月可写为:
日期表 = CALENDAR(DATE(2021,7,1), DATE(2021,7,31))
- 第二步:创建两个度量值,实现无数据时自动填0:
Count ASSET_ID = COALESCE(SUM('车辆原始表'[Count ASSET_ID]), 0) Mileage = COALESCE(SUM('车辆原始表'[Mileage]), 0)
- 第三步:配置表格视觉对象:将日期表的日期字段、上述两个度量值拖入表格值区域,选中日期列,在属性面板的「项目」选项下开启「显示没有数据的项」,即可展示全量日期,未出行日期的数值自动显示为0。
场景2:多车辆批量统计日期补全
如果需要同时统计多辆车的每日出行情况,需要先生成所有车辆+所有日期的全量组合:
- 第一步:同上先创建覆盖统计范围的日期维度表
- 第二步:创建去重的车辆维度表,DAX新建表代码:
车辆维度表 = DISTINCT('车辆原始表'[ASSET_ID])
- 第三步:生成全量车辆日期基表,交叉关联日期和车辆维度,DAX新建表代码:
全量车辆日期基表 = CROSSJOIN('日期表', '车辆维度表')
- 第四步:给基表新增两个计算列,补全数值:
Count ASSET_ID = VAR cur_date = '全量车辆日期基表'[Date] VAR cur_asset = '全量车辆日期基表'[ASSET_ID] RETURN COALESCE(CALCULATE(SUM('车辆原始表'[Count ASSET_ID]), FILTER('车辆原始表', '车辆原始表'[Date] = cur_date && '车辆原始表'[ASSET_ID] = cur_asset)), 0)
Mileage = VAR cur_date = '全量车辆日期基表'[Date] VAR cur_asset = '全量车辆日期基表'[ASSET_ID] RETURN COALESCE(CALCULATE(SUM('车辆原始表'[Mileage]), FILTER('车辆原始表', '车辆原始表'[Date] = cur_date && '车辆原始表'[ASSET_ID] = cur_asset)), 0)
- 第五步:直接使用该基表的字段创建表格即可得到全量日期的统计结果。
内容的提问来源于stack exchange,提问作者Raihan Nisreen
相关产品推荐
相关产品推荐

