salesforce - 按参考字段 SQQL Salesforce 分组
问题描述
我即将在SOQL Apex Salesforce查询 中使用参考字段创建GROUP BY,我收到以下消息:该字段无法在查询调用中分组
我的解决方案是创建自定义字段并使用流程构建器更新它们,但此解决方案仅对新记录有帮助,我必须更新数据库中的所有现有记录(超过 100 万条)以填充这些自定义字段新创建的。
我可以用父级的引用字段创建分组依据是什么?
这是我的查询:
SELECT Delivery__r.Beneficiaire__r.ASPO_Master__r.Name, Delivery__r.Beneficiaire__r.ASPO_Master__r.New_ID__c, UM__c, SUM(Quantity__c)qty
FROM Item_Distributed__c
WHERE Quantity__c !=0 AND Delivery__r.Beneficiaire__r.ASPO_Master__c !=''
AND Del_Status__c='Delivered'
AND Product__c IN :articleContainersId
GROUP BY Delivery__r.Beneficiaire__r.ASPO_Master__r.Name, Delivery__r.Beneficiaire__r.ASPO_Master__r.New_ID__c, UM__c];
我想注意到查询是在一个名为 Item_Distributed__c 的自定义对象上进行的,其父对象为 Delivery,它是 Account 的子对象。我要查询的字段来自Account。
解决方案
您可以按参考字段(查找和主详细信息)进行分组。这两个应该工作得很好:
SELECT Account.Name, COUNT(Id)
FROM Contact
GROUP BY Account.Name
HAVING COUNT(Id) > 1
LIMIT 5
SELECT Account.Owner.Profile.Name, COUNT(Id)
FROM Contact
GROUP BY Account.Owner.Profile.Name
您不能使用公式字段,也许是其他类型。您应该检查您的所有字段的“描述”调用结果,调用GROUP BY
它们isGroupable()
。从顶点或 API(https://workbench.developerforce.com/可能是最快的),或者您甚至可以在FieldDefinition
表中查询它......
一旦你确定了那个公式......如果数据修复是不可能的,那么想想你是否可以稍微分解一下公式,以某种方式按其源字段分组,然后再执行一些步骤来解释结果。这有点讨厌,因为如果有人编辑公式并且不更新您的查询,它将不同步。
如果你分两步做呢?抓取父母(您已标记apex
,因此您可以将它们放入 helper 中Map<Id, Account>
。在 SOQL 组中仅通过帐户 ID?您仍然需要遍历结果并为不同的父母添加行但具有相同的公式值但可能会有所帮助?
推荐阅读
- javascript - 如何在 typeorm 中使用 userId 或 null 查找?
- typescript - 打字稿中的默认字符串类型值
- c# - Oracle:使用参数时防止 SQL 注入的正确方法是不可能的
- javascript - 如何通过将数组与另一个数组进行比较来过滤 ReactJs 中的数组
- java - 如何通过 onclick 从 ListView 项目中获取 URI?
- list - Dart 程序将列表中给定数字中的连续数字分组
- linux - android模拟器在Linux服务器上使用多核cpu性能低下
- arrays - 跳过一次迭代并添加条件 Python(基本问题)
- python - Pandas-Lambda 用于同一列中的不同对象
- python - 熊猫和数据库之间的自动(一种方式)同步?