DAX按日期分组拼接合同列值问题求助
解决方案:按到期日期分组拼接合同Key
你可以基于已生成的T1表,通过SUMMARIZE结合CONCATENATEX函数实现按日期分组并拼接合同Key的需求,修改后的DAX代码如下:
Table contracts by date = VAR T1 = CALCULATETABLE( SUMMARIZE(contracts, contracts[Contrat], contracts[Mandat], contracts[CléContratDemande], "date",[_mesure_date_expire], "fullKey", contracts[CléContratDemande] ), contracts[Statut] = "Active", ALLEXCEPT(contracts, contracts[Contrat],contracts[Mandat]) ) RETURN SUMMARIZE( T1, T1[date], "合同Key列表", CONCATENATEX(T1, T1[fullKey], ", ") )
关键说明:
SUMMARIZE的第一参数是要聚合的表(这里是T1),第二参数指定分组依据(T1[date]),第三参数定义聚合列,用CONCATENATEX遍历当前分组内的所有行,将fullKey用指定分隔符(这里是,)拼接成字符串。- 如果需要保留
Contrat和Mandat维度的分组,只需在SUMMARIZE的分组参数中添加对应字段即可,示例如下:
Table contracts by date = VAR T1 = CALCULATETABLE( SUMMARIZE(contracts, contracts[Contrat], contracts[Mandat], contracts[CléContratDemande], "date",[_mesure_date_expire], "fullKey", contracts[CléContratDemande] ), contracts[Statut] = "Active", ALLEXCEPT(contracts, contracts[Contrat],contracts[Mandat]) ) RETURN SUMMARIZE( T1, T1[Contrat], T1[Mandat], T1[date], "合同Key列表", CONCATENATEX(T1, T1[fullKey], ", ") )
常见问题排查:
- 若之前使用
GROUPBY未成功,需注意GROUPBY的聚合函数必须用CURRENTGROUP()限定当前分组的上下文,写法示例:
RETURN GROUPBY( T1, T1[date], "合同Key列表", CONCATENATEX(CURRENTGROUP(), [fullKey], ", ") )
这种写法也能实现相同效果,区别在于SUMMARIZE会自动处理上下文筛选,而GROUPBY需要显式指定CURRENTGROUP()来锁定当前分组的行范围。
内容的提问来源于stack exchange,提问作者Pat N.
相关产品推荐
相关产品推荐

