此文本使用 Salesforce 的自动翻译系统翻译。参加我们的调查,提供有关此内容的反馈,并告诉我们您接下来想要查看的内容。

自动 - 数据完整性

了解有关架构良好的轻松自动数据完整性数据处理的更多信息

Where to look?
产品区域 | 位置
好是什么样子?
模式
Data 360 | 数据字典✅ 存在所有数据源和数据湖对象的字段级数据和优先级逻辑
Data 360 | 组织✅ 如果不存在唯一主键,复合键用于构建唯一主键。当数据集中没有唯一字段时,使用公式字段从数据集联接多个字段。
Data 360 | 组织✅ 使用 CRM Connector 的数据流利用两周一次的完全刷新 当使用 CRM Connector 进行增量加载时,每两周启动一次完全刷新。虽然这会增加数据摄取,但它保护元数据(例如公式字段)的数据完整性,元数据不会触发 DML 事务,因此不会包含在增量加载中
Data 360 | 组织✅ 个人 ID 用于将 Data 360 数据映射到其他系统使用个人 ID 将 Data 360 中的个人映射到其他系统。例如,Marketing Cloud 参与订阅者密钥应映射到 Data 360 中的个人 ID
Data 360 | 组织✅ 完全限定密钥用于准确解释数据 所有包含密钥值的 DLO 都有一个密钥限定符字段,并且完全限定密钥 (FQK) 在组织中启用,以确保避免在多个数据流协调到一个数据模型对象 (DMO) 时可能发生的冲突
Data 360 | 组织✅ 在匹配规则可用时使用规范化匹配方法 精确规范化匹配转换源数据,以解决尾随空格、格式不一致和特殊字符等常见匹配问题。在可用字段上使用此方法,而不是使用模糊匹配,除非您已配置多个规则集进行测试,并确认整合率不符合业务需求
Einstein | 文档✅ 数据有用性被记录为 AI 项目设计的一部分 贵公司的数据有用性定义被记录下来并投入使用,以改善 AI 响应
平台 | Apex✅ Future Apex 谨慎使用,适用于标注或系统对象 DML
平台 | Apex✅ 异步 Apex 调用使用可排队以在事务之间“链接”复杂的 DML
平台 | Apex✅ 批量 Apex 专用于大数据量 批量 Apex 最适合处理大量数据。异步 Apex 的限制高于同步 Apex,因此可以完成更多工作。尽可能避免非常小的批处理大小,以避免流控制(队列泛滥)、开销和耗尽每日异步 Apex 限制的后果
平台 | Apex✅ 所有同步 DML 语句或数据库类方法都在触发器执行上下文之前执行
平台 | Apex✅ 批量 API 仅在必须处理大量数据时使用 批量 API 仅在必须处理大量数据时使用本地 SOAP 和 REST API 可用于少量数据处理
平台 | 数据字典✅ 存在从数据湖对象到数据模型对象的字段映射
平台 | 流✅ 在用户上下文中启动的所有流将所有系统上下文事务抽象到子流,子流一致放在暂停元素之后,以创建新事务
平台 | 流✅ 所有记录触发的流都填充了触发顺序值
平台 | 流✅ 涉及外部系统标注或长时间运行的流程的流使用异步路径
平台 | 流✅ 使用 Orchestrator 创建相关数据操作的复杂序列(而不是在单片流中调用多个子流)
平台 | 组织✅ 身份解析协调规则遵循数据字典中的优先级逻辑

了解有关架构良好的轻松自动数据完整性错误处理的更多信息

Where to look?
产品区域 | 位置
好是什么样子?
模式
Einstein | 组织✅ 提示指定预期输出 包含 LLM 的直接指令,以仅生成预期类型的内容。
平台 | Apex✅ 自定义异常用于创建高级错误消息和逻辑
平台 | Apex✅ 代码将所有 DML、SOQL、标注和其他关键流程步骤封装在try-catch块中
平台 | Apex✅ 数据库类方法可以专用于所有数据操作(而不是 DML)
平台 | Apex✅ 在异步和批量上下文中,使用数据库类方法,而不是 DML
平台 | Aura✅ JavaScript 将所有数据操作和关键流程步骤封装在try-catch块中
平台 | Aura✅ 在try-catch块中,本地 JavaScript Error 用于 throw 语句(不使用 $A.error()
平台 | Aura✅ 所有可恢复的错误逻辑都出现在 catch 语句中,并提供明确的用户消息
平台 | 流✅ 具有数据操作、标注和其他关键处理逻辑的流具有所有关键操作的错误路径
平台 | 流✅ 屏幕流始终使用错误连接器向用户显示错误
平台 | 流✅ 为屏幕上显示的错误配置自定义错误消息
平台 | Lightning Web 组件 (LWC)✅ JavaScript 将所有数据操作和关键流程步骤封装在 if ()/else if () 块中
平台 | Lightning Web 组件 (LWC)✅ 所有@wire函数使用 API 提供的dataerror属性
平台 | Lightning Web 组件 (LWC)✅ 所有 if (error)/else if (error) 语句都包含处理错误和提供信息性消息的逻辑

了解有关架构良好的轻松自动数据完整性数据处理的更多信息

Where to look?
产品区域 | 位置
要避免什么?
反模式
Data 360 | 组织支持使用模糊匹配的规范化匹配方法的字段 模糊匹配应用于提供精确规范化匹配方法的字段
Data 360 | 组织统一个人 ID 被假定为不可变 统一个人 ID 用作组织其余部分使用的主 ID 或全局 ID
Data 360 | 组织事件日期映射到可变日期时间值事件日期映射到可变日期时间字段,例如 LastUpdated 或 LastExtracted
Data 360 | 组织主键映射到非唯一的字段如果数据集中没有主键,则选择任何字段作为数据流的主键,而不首先验证选定字段是否唯一
Data 360 | 组织批量加载数据,然后尝试实时激活。例如,常见但有缺陷的方法可能涉及每小时从 Amazon S3 存储桶加载数据,然后通过数据操作激活它
平台 | ApexDML 语句定期出现在将在触发器上下文后调用的代码中
平台 | Apex批处理 Apex 作业的范围非常小 使用非常小的批处理大小(例如范围大小 = 1)
平台 | Apex批处理 Apex 用于外部标注 使用批处理 Apex 将大量 Salesforce 数据从 Salesforce 推送到外部系统
平台 | Apex无论发布订单要求或记录锁定风险如何,都会使用临时的立即发布(实时)事件,而不是提交后发布(非实时)。
平台 | Apex异步 Apex 功能被任意使用 未来方法和可排队 Apex 被不一致或交替使用
平台 | Apex异步 Apex 功能被任意使用;不清楚开发人员何时使用未来 Apex 与可排队 Apex,何时将 DML 移交给批处理作业
平台 | Apex异步 Apex 很少使用
平台 | Apex异步 Apex 功能被任意使用 数据库操作没有明确一致的逻辑来在需要时将执行传递给批处理 Apex
平台 | 数据字典不包括从数据湖对象到数据模型对象的字段映射
平台 | 数据字典不包括数据源和数据湖对象的字段级数据和优先级逻辑
平台 | 流使用屏幕组件的输出的集合执行 DML 当集合是屏幕组件的输出时,利用创建、更新或删除元素上的“使用记录或记录集合中的 ID 和所有字段值”设置
平台 | 流记录触发的流根本不使用触发顺序属性,或者没有一致使用触发顺序值
平台 | 流异步路径的使用不一致或根本不一致
平台 | 流大型单片流尝试协调相关数据操作的复杂序列(带或不带子流)
平台 | 组织身份解析协调规则不遵循数据字典中的优先级逻辑

了解有关架构良好的轻松自动数据完整性错误处理的更多信息

Where to look?
产品区域 | 位置
要避免什么?
反模式
平台 | ApexDML、SOQL、标注或其他关键流程步骤没有一致地封装在 Try-Catch 块中
平台 | Apex不使用数据库类方法
平台 | Apex⚏ 数据操作仅通过 DML 完成
平台 | ApexSystem.debug 语句出现在生产代码中(不会被注释掉)
平台 | AuraJavaScript 没有一致地将数据操作和关键流程步骤封装在try-catch块中
平台 | Aura组件使用 $A.error()
平台 | Aura可恢复的错误逻辑并不总是出现在 catch 语句中,并且对用户的错误消息不清楚
平台 | 流⚏ 流不会一致或根本不使用错误路径
平台 | 流不使用自定义错误消息,因此用户会看到默认的“此流中发生未处理的错误”消息
平台 | Lightning Web 组件 (LWC)@wire 函数不使用 API 提供的dataerror属性(或没有一致使用)
平台 | Lightning Web 组件 (LWC)if (error)/else if (error) 语句如果使用,实际上不包含处理错误和提供有用错误消息的逻辑
平台 | Lightning Web 组件 (LWC)JavaScript 没有一致使用带有数据操作或关键流程步骤的 if ()/else if ()