Power BI中基于双日期列的每周案例计数计算需求
解决方案
1. 核心数据计算逻辑(SQL示例)
要统计每周被修改但非当周创建的案例,关键是筛选出modifiedon所在周和Createdon所在周不一致的记录,再按修改周分组计数。
以T-SQL为例(其他SQL方言逻辑一致,仅周函数可能略有差异):
SELECT -- 生成周起始日期,方便可视化时显示清晰的周标签 DATEADD(WEEK, DATEDIFF(WEEK, 0, modifiedon), 0) AS 周起始日, DATEPART(WEEK, modifiedon) AS 修改周数, COUNT(DISTINCT [Case ID]) AS 符合条件案例数 FROM 你的表名 WHERE -- 排除修改周和创建周相同的记录,同时加上年份判断避免跨年周混淆 DATEPART(WEEK, modifiedon) <> DATEPART(WEEK, Createdon) AND DATEPART(YEAR, modifiedon) = DATEPART(YEAR, Createdon) GROUP BY DATEADD(WEEK, DATEDIFF(WEEK, 0, modifiedon), 0), DATEPART(WEEK, modifiedon) ORDER BY 周起始日
2. 可视化交互实现(以Power BI/Tableau为例)
Power BI 配置步骤
- 数据预处理:
- 添加计算列
修改周:WEEKNUM('表'[modifiedon]) - 添加计算列
创建周:WEEKNUM('表'[Createdon]) - 创建动态统计度量值:
符合条件案例数 = CALCULATE( DISTINCTCOUNT('表'[Case ID]), FILTER( '表', '表'[修改周] <> '表'[创建周] && YEAR('表'[modifiedon]) = YEAR('表'[Createdon]) ) )
- 添加计算列
- 制作柱状图:将
周起始日拖到X轴,符合条件案例数拖到Y轴。 - 开启交互:确保柱状图的筛选交互设置为“筛选当前页”,点击任意周的柱子,页面上的其他组件(比如卡片图)会自动显示该周的统计数值。
Tableau 配置步骤
- 创建计算字段:
修改周:DATEPART('week', [modifiedon])创建周:DATEPART('week', [Createdon])是否符合条件:IF [修改周] != [创建周] AND YEAR([modifiedon]) = YEAR([Createdon]) THEN 1 ELSE 0 END
- 构建视图:把
modifiedon拖到行,选择“周”级别;把是否符合条件拖到列,选择“求和”;再把Case ID拖到标记卡的“详细信息”。 - 交互效果:点击柱状图的某一周,视图会自动筛选出该周的结果,也可以添加文本表来显示具体数值。
内容的提问来源于stack exchange,提问作者Shivam Sarin
相关产品推荐
相关产品推荐

