基于客户ID为对应订单时期生成顺序编号(DAX需求)
为客户订单时期标注顺序的DAX解决方案
方法一:使用RANKX函数(推荐,处理重复日期更灵活)
在新建列中输入以下DAX公式,替换成你的实际表名和列名:
订单顺序 = RANKX( FILTER('订单表', '订单表'[客户ID] = EARLIER('订单表'[客户ID])), '订单表'[订单时期], , ASC, DENSE )
FILTER('订单表', '订单表'[客户ID] = EARLIER('订单表'[客户ID])):仅筛选当前行对应客户的所有订单数据'订单表'[订单时期]:指定按订单日期排序的依据ASC:设置升序排列,最早的订单标注为第1DENSE:确保排名连续,若同一客户有相同订单日期,会给相同排名,后续日期继续按顺序编号
方法二:使用COUNTROWS函数(适合无重复日期的场景)
如果你的订单时期没有重复值,也可以用这个更直观的公式:
订单顺序 = CALCULATE( COUNTROWS('订单表'), FILTER( '订单表', '订单表'[客户ID] = EARLIER('订单表'[客户ID]) && '订单表'[订单时期] <= EARLIER('订单表'[订单时期]) ) )
这个公式的逻辑是:统计当前客户所有订单时期早于或等于当前行时期的记录数,结果就是该订单的顺序号。
操作步骤
- 在Power BI(或Excel的Power Pivot)中,切换到「建模」选项卡
- 点击「新建列」
- 粘贴上述任意一个公式,替换表名和列名为你实际使用的名称
- 回车确认,即可生成标注顺序的新列
内容的提问来源于stack exchange,提问作者Thijs van den Engel
相关产品推荐
相关产品推荐

