Code Extension in Data 360 — 用自定义代码扩展数据转换能力

Code Extension in Data 360 模块讲解如何用自定义 Python 代码扩展 Data 360 数据转换:认识 Code Extension 及其工作流与集成方式,本地编写与验证转换逻辑(Salesforce CLI 设置、编写环境、写入模式),以及部署、运行、监控执行,并用 DevOps 数据包从沙盒迁移到生产。以 Bloomington Caregivers 的 XML 解析用例贯穿全程。...

📅 2026/4/15 ✍️ ponybai 🏷️ headless-360, salesforce, data-360

一、认识 Code Extension

探索 Code Extension

虽然 Data 360 为数据操作提供了强大的原生工具(低代码/无代码工具),但某些复杂的业务需求需要通过批量数据转换原生执行编程语言的灵活性。Code Extension 正是弥合这一差距的桥梁——它让您在 Data 360 中安全地运行自定义 Python 代码,执行复杂的、业务特定的转换。

Code Extension 让您能用原生可视化转换构建器无法实现的自定义逻辑来创建批量数据转换。例如,您需要在互动数据(如邮件打开、网站访问)上计算窗口百分位数,以及在线索备注上计算文本相似度以匹配理想客户画像。有了 Code Extension,您就可以在自定义转换逻辑中使用 scikit-learndifflib 等 Python 库来计算这些。

Code Extension 工作流

Code Extension 工作流横跨本地开发、沙盒验证和生产部署:开发者在本机编写和调试代码,然后部署到 Data 360 沙盒;拥有 Data Cloud Architect 权限集的用户在 Data 360 环境中管理代码执行、监控和迁移。

您必须手动为 Code Extension 脚本创建或更新的目标 DLO(数据湖对象)或 DMO(数据模型对象)分配并审计相应的治理标签(governance tags),以确保符合组织的治理数据政策(目标对象的自动标签传播即将支持)。

Code Extension 如何与 Data 360 集成

Code Extension 与 Data 360 中的 Data Transforms 集成,让您能把自定义逻辑应用到高级转换。您从 Data Transforms 调用 Code Extension,Data 360 会在隔离的计算环境中执行您的代码。

集成点:

  • 输入:从数据湖对象(DLO)或数据模型对象(DMO)读取数据;
  • 转换:应用自定义 Python 逻辑;
  • 输出:把转换后的数据写入新的或已有的 DLO/DMO;
  • 计划:按需或按计划运行;
  • 监控:通过 Data 360 UI 追踪执行情况。

Code Extension 补充声明式工具,而非取代它们——为每个转换需求选择合适的工具。

用例:Bloomington Caregivers

Bloomington Caregivers 想优先联系需要接种疫苗的患者。员工必须找出未接种新冠疫苗的患者,或超过 60 岁仍缺一剂疫苗的老年人。与其人工审查记录,护理团队使用在 Data 360 中构建的细分(如「需要新冠疫苗」和「60 岁以上缺疫苗」),从而在 UI 中运行活动、在不离开 Data 360 的情况下触达正确的患者。

挑战在于:疫苗接种记录以原始 XML形式存储在 Data 360 中,而原生 Data 360 工具(联接、过滤和标准转换)无法解析 XML 或将其重塑为细分和报表所需的结构化数据。由于数据格式无法用于构建细分,团队面临识别患者需求的手工工作。

解决方案:开发者用 Code Extension 编写脚本,读取 XML、提取必要字段(患者姓名、年龄、接种历史),并把输出作为结构化行写入数据湖对象;架构师在 Data 360 中运行该脚本,再用输出来构建细分做定向外联。通过 Code Extension,Bloomington Caregivers 把原始 XML 转成了 Data 360 中可操作的结构化数据,让护理团队无需离开平台或迁移数据即可构建细分、运行疫苗接种外联活动。

接下来是什么

现在您已了解 Code Extension 的基础知识和用例。要点:

  • Code Extension = 在 Data 360 中原生运行的自定义 Python 代码
  • 四阶段工作流:编写 → 验证 → 部署 → 监控与迁移
  • 通过 DLO/DMO 集成输入与输出;
  • Bloomington Caregivers 用例展示了真实应用场景。

接下来:设置编写环境,并用 Code Extension SDK 在本地编写和验证转换逻辑。

二、在本地编写并验证 Code Extension

Salesforce CLI 设置的重要性

您可以在本机开发和测试 Code Extension 脚本,再部署到 Data 360。为此需要一个能与沙盒 org 通信的本地环境:您的机器必须运行 macOS、Linux 或 Windows,并安装 Python 3.11OpenJDK 17

Salesforce CLI(含 Code Extension 插件)与 Data Custom Code Python SDK 一起构成您的本地工具链,提供:

  • CLI:配置与沙盒的连接、初始化项目、本地运行脚本、从脚本更新配置、部署;
  • 库(Libraries):脚本运行时使用,保证同一份代码在本地和 Data 360 中运行一致;
  • 工作流(Workflows):标准项目布局(payload/entrypoint.pyconfig.json)、本地运行时的沙盒连接、以及「本地跑的就是要部署的」打包流程。

用 CLI 初始化脚本包,会生成预期布局(含 payload/ 文件夹和 entrypoint.py),让脚本和配置位于本地运行与部署打包的正确位置。

编写环境

Code Extension 支持标准的 Python 虚拟环境用于编写和测试脚本,适合快速原型和简单开发。您创建并激活虚拟环境,构建逻辑,并把最终代码保存到 payload/entrypoint.py 以供部署。

项目的标准布局包括:payload/(脚本与转换逻辑)、entrypoint.py(主脚本)、config.json(配置)。这个布局让本地运行能从 Data 360 读取数据、在部署前验证行为。

在本地编写并验证转换逻辑

使用您偏好的 IDE(如 Visual Studio Code 或 Jupyter Notebook)编写和修改转换逻辑。主脚本位于 payload/entrypoint.py。本地开发让您快速迭代、在部署前就发现问题。

编写脚本时,请使用 Data 360 对象字段的精确 API 名称——它们通常遵循 FieldName__c 模式。您的沙盒必须包含脚本要读取或写入的数据湖对象(DLO)或数据模型对象(DMO)。

编写自定义逻辑的最佳实践:

  • 一个脚本读写必须使用同一种对象类型:要么 DLO 到 DLO,要么 DMO 到 DMO——这能保持数据模型一致,并与 Data 360 运行任务的方式匹配;
  • requirements.txt 中列出任何额外依赖,以便正确安装和打包。

本地运行脚本时,它在您的机器上运行、从 Data 360 沙盒读取数据、应用转换逻辑,并在本地终端显示结果——这样您就能在部署到 Data 360 之前确认转换正确。

支持的写入模式

Code Extension 支持把结果写入目标对象的不同方式:

  • Append(追加):向目标对象添加新记录,不影响现有数据;
  • Overwrite(覆盖):用新数据替换目标对象中的所有现有数据——适用于每次都产生完整新数据集的转换;
  • Merge(合并):基于键字段更新现有记录并添加新记录——适用于增量更新场景。

选择与用例匹配的写入模式——模式决定了转换后的数据如何与目标对象中的现有数据整合。接下来,部署并运行脚本。

三、部署、运行、监控并迁移 Code Extension

部署并调用 Code Extension

脚本在本地验证通过后,就部署到 Data 360。部署会把脚本、其依赖和配置上传到沙盒,让代码在 Data 360 中可用。

部署与调用是分开的:部署上传代码,调用则执行转换。您可以在 Data Transforms 标签页点击 Run Now 立即运行,也可以为批量转换创建计划自动运行。

为部署选择合适的计算规格

部署自定义代码时,您选择一个计算规格(compute size),它定义了脚本运行时 Data 360 分配的 CPU 和内存量——这个选择同时影响性能和成本

更大的规格提供更多 vCPU 和内存,让转换能处理更大的数据集、更复杂的逻辑或更重的依赖(如大型 pandas 操作或多个库)。每升一级,CPU 核数和内存翻倍,但每小时执行消耗的额度(credits)也更多。

选择建议:从适合预期数据量和脚本复杂度的最小规格开始;用本地运行和沙盒运行评估内存/CPU 需求;若出现超时、内存不足或运行缓慢,再升一级。生产环境要计入峰值数据量和增长,避免欠配置。若成本敏感,先优化脚本(如增量处理或尽早过滤),再升级规格。

运行 Code Extension

通过运行「使用您已部署 Code Extension 的批量数据转换」来运行 Code Extension:可在 Data Transforms 标签页点击 Run Now 立即运行,或为批量转换创建计划自动运行。

每次运行时,Data 360 执行您的代码、从转换的 DLO/DMO 读取并写入,并记录运行历史详情(如状态、读取/写入的行数、耗时)。

监控代码执行

代码作为批量数据转换的一部分运行后,您需要监控它,以确认成功、查看处理了多少数据,并在失败时排障。Data 360 提供两种方式:Run History执行日志

  • Run History(运行历史):位于每个自定义代码部署上,列出每次执行——何时运行、由什么触发(如批量数据转换)、运行状态(Running/Success/Failure)、以及读取和写入的行数。打开某次运行可查看运行时长、完成时间等详情,从而发现失败、检查数据量、查看哪个功能使用了该代码;
  • 执行日志(Execution logs):存储在数据湖对象 DataCustomCodeLogs__dll 中,可在 Query Editor 查询或在 Data Explorer 查看。日志通常在执行后几分钟内出现,可按转换名、执行 ID 或消息内容过滤,用于排障或验证代码行为。

用 DevOps 数据包把 Code Extension 从沙盒迁移到生产

您在沙盒中创建一个 DevOps 数据包,添加要推广的组件:已验证的批量数据转换,以及(如需要)自定义代码部署。当您添加一个批量数据转换时,数据包会自动包含它使用的自定义代码。您还要添加代码读取或写入、且生产中还不存在的任何 DLO 或 DMO。

数据包按固定顺序部署——先数据对象,再自定义代码,最后批量转换——确保依赖按正确顺序落地。您发布数据包、加入包(package),再把这个包部署到生产 org。

DevOps 数据包确保与沙盒中测试过的完全相同的 Code Extension 配置到达生产,消除环境间的配置漂移。

总结

您已完成 Code Extension in Data 360 的完整生命周期:

  1. 探索 → 理解 Code Extension 是什么、如何与 Data 360 集成;
  2. 编写 → 用 Python 在本地编写转换逻辑;
  3. 验证 → 对样本数据在本地测试;
  4. 部署 → 打包并上传到 Data 360(选择合适的计算规格);
  5. 运行 → 按需、计划或事件触发执行;
  6. 监控 → 追踪执行健康与性能;
  7. 迁移 → 用 DevOps 数据包从沙盒迁移到生产。

Code Extension 让您在 Data 360 平台内拥有代码的力量——当声明式工具触达极限时使用它,同时仍在受治理的 Data 360 环境中运行,把原始数据变成可构建细分并采取行动的结构化数据。


文章来源:Trailhead - Code Extension in Data 360