PowerBI中如何按年月拆分计算客户日期区间天数并在矩阵展示
按年、月拆分客户日期区间的天数统计方案
一、生成日期拆分明细的物理表
如果数据量不大,可先创建一张物理表存储每个客户日期区间的每日明细,直接关联年月维度:
客户日期拆分表 = ADDCOLUMNS( GENERATE( 客户表, -- 替换为你的客户数据表,需包含From、To、客户ID、价格等字段 CALENDAR(客户表[From], 客户表[To]) ), "统计年", YEAR([Date]), "统计月", MONTH([Date]), "年月标识", FORMAT([Date], "YYYY-MM") )
生成表后,用以下度量值统计天数:
_拆分天数 = COUNTROWS('客户日期拆分表')
将日期表的年、月字段(或表中自带的统计年/统计月)拖到矩阵行/列区域,客户字段拖到行,再把_拆分天数拖到值区域,即可实现拆分展示。
二、纯度量值方案(无需新增物理表)
如果不想创建物理表,用度量值直接计算每个年月的重叠天数,灵活性更高:
_年月拆分天数 = VAR 当前年月 = MAX('日期表'[日期]) -- 基于日期表的日期字段 VAR 当月第一天 = DATE(YEAR(当前年月), MONTH(当前年月), 1) VAR 当月最后一天 = EOMONTH(当前年月, 0) RETURN SUMX( 客户表, VAR 实际起始 = MAX(客户表[From], 当月第一天) VAR 实际结束 = MIN(客户表[To], 当月最后一天) RETURN IF(实际起始 <= 实际结束, DATEDIFF(实际起始, 实际结束, DAY) + 1, 0) )
关键说明:
- 必须加
+1:DATEDIFF返回的是两个日期的间隔天数,比如1号到2号间隔1天,但实际是2天,需要补1天修正统计结果。 - 矩阵设置:把日期表的
年、月拖到行/列区域,客户字段拖到行,将_年月拆分天数拖到值区域,价格数据直接拖入值区域并设置合适的聚合方式(求和/平均等)即可。
内容的提问来源于stack exchange,提问作者Jonas
相关产品推荐
相关产品推荐

