D365 Electronic Reporting分组映射问题:聚合字段无法访问及函数缺失
Dynamics 365 Electronic Reporting (ER) 分组聚合字段访问问题解决方案
问题背景
使用Electronic Reporting从D365导出JSON数据时,简单查询可正常运行,但添加GroupBy函数时持续报错。Copilot提示:
在部分ER框架版本(尤其是基于Web的设计器)中,通过$MatchedGroup这类计算字段访问GroupBy数据源的聚合字段时,存在已知限制。即便分组有效且记录存在,.aggregated.Total_Hours字段在公式上下文也无法查看或访问,进而引发[error]。
现有数据源结构:
- 10_BaseTables
- ProdTable
- ProdRoute
- ProdJournalRoute
- 20_Filtered
- $ProdTable
- $ProdRoute(通过$ProdTable的ProdID字段关联)
- $ProdJournalRoute(通过$ProdRoute的ProdID、OprNum字段关联)
- $ProdRoute(通过$ProdTable的ProdID字段关联)
- $ProdTable
需求是为$ProdJournalRoute添加按ProdID、OprNum分组的聚合字段Total_Qty,但尝试在单独节点30_GroupBy中创建分组,并在$ProdJournalRoute或$ProdRoute的计算字段中引用时,要么所有记录返回静态值,要么输出[error]。同时Formula Designer中缺少Join、GroupBy、Exists、ISNULL等函数,常规变通方案失效。
可行解决方案
1. 调整分组节点层级,避免跨层级引用
不要创建独立的30_GroupBy节点,直接在关联层级内完成分组:
- 进入20_Filtered下的
$ProdRoute节点,添加GroupBy数据源 - 数据源选择
$ProdJournalRoute,分组键设置为ProdID和OprNum - 聚合字段配置:
Total_Qty=Sum($ProdJournalRoute.Qty) - 后续JSON输出直接引用该分组后的聚合字段,无需通过计算字段中转
2. 利用ER层级上下文直接访问聚合值
针对Web版ER设计器的$MatchedGroup限制:
- 跳过计算字段跨节点引用的方式,在分组后的数据源节点下,直接将
Total_Qty映射到JSON输出结构中 - 确保聚合字段的引用上下文与分组节点处于同一层级,避免跨层级调用导致的上下文无法识别问题
3. 用数据源关联替代缺失的函数
由于Formula Designer缺少Join/Exists等函数,改用ER原生的数据源链接配置:
- 重新检查
$ProdTable与$ProdRoute的关联:通过ProdID字段建立数据源链接(而非公式计算) - 重新检查
$ProdRoute与$ProdJournalRoute的关联:通过ProdID+OprNum组合字段建立数据源链接 - 确保关联条件完全匹配业务逻辑,保证分组时能正确筛选并聚合目标记录
内容的提问来源于stack exchange,提问作者Barnabeck
相关产品推荐
相关产品推荐

