基于不同日期统计事件出现次数的计算字段实现方法咨询
基于不同日期统计事件出现次数的计算字段实现方法咨询
嗨,我完全懂你的需求啦——你要统计每个事件ID(Inc ID)对应的不同日期的数量,而不是简单按行数计数,毕竟同一个事件ID可能对应多行产品数据,但你只关心它在多少个不同日期被上报过对吧?下面我针对几种常用工具给你具体的实现方法,按需选用就行:
1. Excel 环境下的实现方法
方法一:适合Excel 365/2021(支持动态数组)
- 先提取所有唯一的事件ID:在空白单元格(比如E2)输入公式
=UNIQUE(A2:A9),回车后会自动列出所有不重复的Inc ID。 - 统计每个ID的唯一日期数:在F2单元格输入公式
=COUNT(UNIQUE(FILTER(C2:C9,A2:A9=E2))),下拉填充即可得到每个Inc ID对应的不同日期数量。
方法二:适合旧版Excel(无动态数组支持)
直接在每行的空白列(比如D列)输入公式:
=SUMPRODUCT((A$2:A$9=A2)/COUNTIFS(A$2:A$9,A$2:A$9,C$2:C$9,C$2:C$9))
下拉填充后,每行都会显示当前Inc ID对应的唯一日期总数,重复的Inc ID会显示相同的计数结果。
2. SQL 环境下的实现方法
如果你的数据存在数据库里,用COUNT(DISTINCT)分组统计是最直接的方式:
SELECT "Inc ID", COUNT(DISTINCT "Date Raised") AS unique_date_count FROM your_table_name -- 替换成你的表名 GROUP BY "Inc ID";
这个查询会按Inc ID分组,自动去重每个组内的重复日期,返回每个事件ID对应的不同日期数量。
3. Tableau 环境下的实现方法
方式一:创建计算字段
新建一个计算字段,输入以下LOD表达式:
{FIXED [Inc ID]: COUNTD([Date Raised])}
这个字段会固定每个Inc ID维度,计算其关联的不同日期数量,不管有多少行产品数据,都能得到正确的计数。
方式二:可视化拖放操作
- 将[Inc ID]拖到“行”功能区;
- 将[Date Raised]拖到标记卡的“文本”区域;
- 右键点击标记卡中的[Date Raised],选择「度量 > 计数(不同)」,即可自动展示每个Inc ID的唯一日期数。
4. Power BI 环境下的实现方法
可以创建一个度量值或者计算列:
- 度量值(适合报表交互):
Unique Date Count = CALCULATE(DISTINCTCOUNT('Table'[Date Raised]), ALLEXCEPT('Table','Table'[Inc ID]))
- 计算列(适合直接在表格中显示):
Unique Date Count = CALCULATE(DISTINCTCOUNT('Table'[Date Raised]), FILTER('Table','Table'[Inc ID]=EARLIER('Table'[Inc ID])))
核心思路其实很简单:对每个Inc ID,统计其关联的唯一日期的数量,不同工具的实现都是围绕“去重后计数”这个核心来的,选你常用的工具方法就行~
备注:内容来源于stack exchange,提问作者user9351236
相关产品推荐
相关产品推荐

