关于 data360-schema-get
此 Salesforce Data Cloud 技能可列出 Data Lake Object(DLO)和 Data Model Object(DMO),或获取单个对象的架构,供探索数据结构与字段元数据的用户使用。它通过 SF CLI 和 SSOT REST API 获取信息。
主要功能
- 01列出 DLO 和 DMO
- 02获取对象架构
- 03查看字段类型和元数据
- 04显示对象详情与记录数
适用场景
- 01探索 Data Cloud 组织中的对象
- 02创建 DMO 映射前检查字段
安装
复制下面的命令,在终端中运行。
npx skills add https:/ / github.com/ forcedotcom/ sf-skills --skill data360-schema-get安装后在 Claude Code 中输入/data360-schema-get确认已加载。
包含的文件
除 SKILL.md 外,安装时一起下载的参考资料和脚本。
references/README.mdscripts/get_dlo_schema.pyget_dmo_schema.py详细介绍
data360-schema-get 技能
概述
此技能使用 SSOT REST API 从 Salesforce Data Cloud 检索数据湖对象(DLO)和数据模型对象(DMO)的架构信息。它可以列出组织中的所有 DLO 或 DMO,也可以检索特定 DLO 或 DMO 的详细架构。
适用场景
- 用户想查看 Data Cloud 组织中的所有 DLO 或 DMO
- 用户需要特定 DLO 或 DMO 的字段架构
- 用户正在探索 Data Cloud 数据结构
- 用户需要了解 DLO 或 DMO 的字段类型和元数据
前提条件
- 已安装 SF CLI 并通过身份验证连接到目标组织
- 组织已启用 Data Cloud
- 用户拥有相应的 Data Cloud 权限
技能执行
参数
- org_alias(必填):SF CLI 组织别名(例如:'afvibe'、'myorg')
- dlo_name(可选):特定 DLO 的开发者名称(例如:'Employee__dll')
- dmo_name(可选):特定 DMO 的开发者名称(例如:'Individual__dlm')
步骤 1:查找已连接的组织
首先,运行 sf org list,确认连接的是哪个组织,并提取别名以供后续所有调用使用:
sf org list
输出示例:
┌────┬───────┬──────────────────────────┬────────────────────┬───────────┐
│ │ Alias │ Username │ Org Id │ Status │
├────┼───────┼──────────────────────────┼────────────────────┼───────────┤
│ │ myorg │ [email protected] │ 00DKZ00000b80NT2AY │ Connected │
└────┴───────┴──────────────────────────┴────────────────────┴───────────┘
从输出中提取 Alias 值(例如:myorg),并将其作为后续所有调用的 <org_alias>。使用 --all 还可以查看已过期和已删除的临时组织。
步骤 2:验证 SF CLI 身份验证
调用 API 前,确认组织已连接:
sf org display --target-org <org_alias> --json
如果尚未连接,请告知用户运行:
sf org login web --alias <org_alias>
步骤 3a:执行 DLO 架构脚本
Python 脚本与此技能一同打包在 scripts/ 子目录中。
列出所有 DLO:
python3 ./scripts/get_dlo_schema.py <org_alias>
获取特定 DLO 的架构:
python3 ./scripts/get_dlo_schema.py <org_alias> <dlo_name>
步骤 3b:执行 DMO 架构脚本
列出所有 DMO:
python3 ./scripts/get_dmo_schema.py <org_alias>
获取特定 DMO 的架构:
python3 ./scripts/get_dmo_schema.py <org_alias> <dmo_name>
步骤 4:呈现结果
解析结果,并以便于用户理解的格式呈现:
DLO 列表:
- 显示 DLO 名称、标签、类别和 ID
- 标明总数
- 突出显示包含数据的 DLO(totalRecords > 0)
DLO 架构:
- 显示基本信息(名称、标签、类别、状态)
- 列出所有字段,包括:
- 字段名称
- 数据类型
- 主键标识
- 是否可为空
- 突出显示自定义字段(排除 DataSource__c、cdp_sys_* 等系统字段)
- 如果有记录数,则显示记录数
DMO 列表:
- 显示 DMO 名称、标签、类别和 ID
- 标明总数
DMO 架构:
- 显示基本信息(名称、标签、类别、描述)
- 列出所有字段,包括:
- 字段名称
- 数据类型
- 主键标识
- 是否可为空
- 如果有数据空间信息,则显示该信息
步骤 5:提供后续步骤建议
显示结果后,建议相关的后续操作:
- 查询 DLO 中的数据
- 创建计算洞察
- 构建细分
- 设置数据流
- 创建 DMO 映射
使用的 API 端点
列出所有 DLO
GET /services/data/v64.0/ssot/data-lake-objects
响应结构:
{
"dataLakeObjects": [
{
"name": "Employee__dll",
"label": "Employee",
"category": "Profile",
"id": "1dlXXXXXXXXXXXXXXX",
"status": "ACTIVE",
"totalRecords": 12,
"fields": [...]
}
],
"totalSize": 5
}
获取 DLO 架构
GET /services/data/v64.0/ssot/data-lake-objects/{dlo_name}
响应结构(与列表响应中的单个对象相同,但采用分页格式包装)。
列出所有 DMO
GET /services/data/v64.0/ssot/data-model-objects
响应结构:
{
"dataModelObjects": [
{
"name": "Individual__dlm",
"label": "Individual",
"category": "Profile",
"id": "0dmXXXXXXXXXXXXXXX",
"fields": [...]
}
],
"totalSize": 10
}
获取 DMO 架构
GET /services/data/v64.0/ssot/data-model-objects/{dmo_name}
响应结构(与列表响应中的单个对象相同,但采用分页格式包装)。
错误处理
常见问题:
-
组织未连接
- 消息:"Org not connected"
- 解决方案:请用户通过 SF CLI 完成身份验证
-
未找到 DLO
- 消息:"DLO 'XYZ__dll' not found"
- 解决方案:先列出所有 DLO 以确认名称
-
未找到 DMO
- 消息:"DMO 'XYZ__dlm' not found"
- 解决方案:先列出所有 DMO 以确认名称
-
权限问题
- 消息:HTTP 403 错误
- 解决方案:确认用户拥有 Data Cloud 权限
-
API 版本不匹配
- 当前版本:v64.0
- 解决方案:可更新脚本以使用较新的 API 版本
示例用法
示例 1:列出所有 DLO
User: "Show me all DLOs in afvibe org"
Response:
1. Run sf org list to discover connected org alias
2. Authenticate to afvibe
3. Run: python3 ./scripts/get_dlo_schema.py afvibe
4. Display formatted list of DLOs
示例 2:获取指定 DLO 的架构
User: "Get the schema for Employee__dll in afvibe"
Response:
1. Run sf org list to discover connected org alias
2. Authenticate to afvibe
3. Run: python3 ./scripts/get_dlo_schema.py afvibe Employee__dll
4. Display field schema with types and metadata
示例 3:探索 DLO,然后获取架构
User: "What DLOs exist in myorg and show me the schema for the Employee one"
Response:
1. Run sf org list to discover connected org alias
2. List all DLOs in myorg
3. Identify Employee__dll
4. Get detailed schema for Employee__dll
5. Present both results
示例 4:列出所有 DMO
User: "Show me all DMOs in afvibe org"
Response:
1. Run sf org list to discover connected org alias
2. Authenticate to afvibe
3. Run: python3 ./scripts/get_dmo_schema.py afvibe
4. Display formatted list of DMOs
示例 5:获取指定 DMO 的架构
User: "Get the schema for Individual__dlm in afvibe"
Response:
1. Run sf org list to discover connected org alias
2. Authenticate to afvibe
3. Run: python3 ./scripts/get_dmo_schema.py afvibe Individual__dlm
4. Display field schema with types and metadata
示例 6:探索 DMO,然后获取架构
User: "What DMOs exist in myorg and show me the schema for the Individual one"
Response:
1. Run sf org list to discover connected org alias
2. List all DMOs in myorg
3. Identify Individual__dlm
4. Get detailed schema for Individual__dlm
5. Present both results
输出格式
DLO 列表输出
Found 5 DLOs in org 'afvibe':
1. DataCustomCodeLogs__dll
Label: DataCustomCodeLogs
Category: Engagement
Records: 233
2. Employee__dll
Label: Employee
Category: Profile
Records: 12
[...]
DLO 架构输出
DLO: Employee__dll
Label: Employee
Category: Profile
Status: ACTIVE
Records: 12
Custom Fields:
• id__c (Text) - Primary Key
• name__c (Text)
• position__c (Text)
• manager_id__c (Number)
System Fields:
• DataSource__c (Text)
• InternalOrganization__c (Text)
• cdp_sys_SourceVersion__c (Text)
Next steps:
- Query data: SELECT * FROM Employee__dll LIMIT 10
- Create segment based on position field
- Set up data stream for real-time updates
DMO 列表输出
Found 10 DMOs in org 'afvibe':
1. Individual__dlm
Label: Individual
Category: Profile
2. ContactPointEmail__dlm
Label: Contact Point Email
Category: Profile
[...]
DMO 架构输出
DMO: Individual__dlm
Label: Individual
Category: Profile
Description: Represents an individual person
Fields:
• Id__c (Text) - Primary Key
• FirstName__c (Text)
• LastName__c (Text)
• BirthDate__c (DateTime)
Next steps:
- Query data: SELECT * FROM Individual__dlm LIMIT 10
- View DLO mappings to this DMO
- Create calculated insights
注意事项
- DLO 名称始终以
__dll后缀结尾 - DMO 名称始终以
__dlm后缀结尾 - 字段名称始终以
__c后缀结尾 - 系统字段(DataSource__c、KQ_、cdp_sys_)会自动添加
- DLO 和 DMO 查询必须包含主键字段
- API 支持对大型结果集进行分页(limit/offset)
相关技能
- datakit_workflow:用于 DMO 映射操作
- datakit_validation:用于验证 datakit 配置
- 创建 DMO 映射前,请先使用此技能了解源 DLO 结构