本次实测环境和目标
这个模型没有可用的时间维度,因此本次真实闭环按公司代码切片,展示采购金额和采购订单量。它不能被描述成月度趋势模型;如果业务需要月度趋势,应换用存在合法时间维度的已发布模型,再使用
query_metric_snapshot 或带时间维度的 Cube slice。
本次生成的 LiveArtifact 分享页:
新系统的执行链路
发布语义模型后,系统自动生成datax-semantic-model-${modelId} 资源。该资源在本体空间中以 business_ontology 类型保存,capabilities 中的 runtimeAdapterId: semantic_model 将查询路由到语义模型运行时。因此不需要手工创建旧式 semantic_model resource、填写 modelIds 或再发一个补偿请求。
创建者保存 binding 时要有资源和业务域权限;看板查看者打开或刷新时,会针对每个 binding 重新检查资源访问和 live_artifact action policy。组织内分享不会绕过查看者权限。
前置条件
- 可以登录 Data X Web 和 Xpert 工作台;
- 有权查看已发布的 SAP BW 语义模型和本体空间;
- 有权在
采购部门业务域中创建或编辑 Assistant; - 对目标资源拥有读取权限,并允许执行
mdx.query_cube_slice; - 若要复现实测结果,需要使用同一个本地租户和可访问
公网 BW XMLA 测试的账号。
simulateAction 会返回拒绝。
1. 确认已发布的 SAP BW 模型
打开语义模型列表,搜索公网BW采购订单分析_20260913,确认状态为“已发布”。发布是后续生成本体资源的前提。

2. 在模型工作台确认 Cube 契约
打开模型工作台,确认数据源为公网 BW XMLA 测试,查看 Cube 2CREPM_PURCHASEO/2CREPM_PURCHASEQ 的度量和维度。

这份模型没有合法时间维度,所以不要在 prompt 中要求“最近 12 个月趋势”,也不要让 Agent 自动补默认时间窗。
3. 查看系统托管本体资源
进入本体空间,搜索模型名称或resourceId,确认模型、Cube、度量和维度已经出现在 ontology snapshot 中。

business_ontology,通过 runtimeAdapterId: semantic_model 使用语义模型适配器。
这里不要按旧系统教程手工注册第二个 semantic_model 外部资源,也不要填写一套 modelIds、endpoints 和 full sync 表单。只需确认:
- 资源状态可用,snapshot 已生成;
- 目标 Cube、度量和维度出现在本体中;
- 资源没有归档,当前租户和组织可以访问;
- 目标 action 属于该资源的只读能力集合。
4. 将资源绑定到 Assistant
在 Assistant 配置页选择业务域采购部门,在资源访问配置中勾选本次模型的系统托管资源。

5. 真实执行本体动作
使用统一链路:5.1 定位 Cube
5.2 发现并预演 action
本次对目标 Cube 发现并执行mdx.query_cube_slice,payload 为:
simulateAction 返回 ALLOWED 后,才用完全相同的 payload 调用 executeAction。保存 LiveArtifact 时服务端也会重新预演,确保保存的 binding 与预演 payload 一致。

queryEntities → discoverActions → simulateAction → executeAction 响应生成,包含动作、策略、返回行数、耗时、审计引用和标准 effect v2,不是 mock 数据,也不是原始 XMLA 响应。
返回结果是标准 effect v2 的
kind: rows,包含 columns、rows 和 summary。适配器负责转换 SAP BW 响应;HTML 和图表层不读取 XMLA envelope 或 SAP BW 专用字段。
6. 生成 LiveArtifact Dashboard
向 Assistant 提出一句业务需求即可:
146,803.12,返回订单量为 26,公司数为 10,policyDecision 为 allow,truncated 为“否”。这些数字来自本次 Cube slice 返回范围,不代表 SAP BW 历史订单的全量聚合。
7. 标准 effect v2 和图表
LiveArtifact 的 HTML 或 ECharts 渲染层只读取统一结构:kind: rows:columns 描述列,rows 提供公司真实返回值,summary.returnedRowCount 表示实际行数,summary.truncated 表示是否截断。ECharts 只负责展示,不能负责资源发现、动作执行或授权;不能读取 raw、XMLA envelope 或 adapter-specific 字段。首版 OData 动作最多返回 200 行,截断数据不能直接作为全量 KPI。
8. 验收清单
- 模型已发布,
modelId和系统托管resourceId与当前版本一致。 - 本体空间可以看到
business_ontology、Cube、度量和维度实体。 - Assistant 业务域为
采购部门,资源白名单包含目标资源。 -
queryEntities能定位目标semantic_cube。 -
discoverActions返回只读mdx.query_cube_slice。 - 保存前和运行前的
simulateAction均返回ALLOWED。 -
executeAction返回标准 effect v2、策略结果、行数和审计引用。 - LiveArtifact 显示资源、Cube、
returnedRowCount和truncated。 - 无权查看者刷新会被拒绝;组织分享不会绕过权限。
常见问题
为什么资源类型是 business_ontology?
这是新系统的正式资源类型。已发布语义模型由系统生成 datax-semantic-model-${modelId},再通过 runtimeAdapterId: semantic_model 路由到语义模型运行时。不要再手工创建第二个同模型资源。
为什么本次没有生成月度趋势?
公网BW采购订单分析_20260913 没有可用时间维度。没有时间维度时,运行时不会自动补默认时间窗,本次使用公司维度 Cube slice;需要趋势时请换用带时间维度的模型并重新预演。
simulateAction 返回 ACTION_PARAMS_INVALID 怎么办?
确认 target 的 entityRef 来自当前 snapshot,并确认 dimensions 和 measures 都来自该 Cube 的分析契约。不要把另一个 Cube 的技术名称复制过来,也不要把 business_ontology 错误地当成旧 semantic_model 注册。
为什么能看到 Cube,却不能查询事实数据?
本体可见性和事实数据访问是两层权限。查看者还需要资源读取权限和live_artifact action policy;资源归档或策略撤销后,已有看板下一次刷新也会被拒绝。
为什么看板数字不一定等于 SAP BW 全量报表?
本教程 binding 设置limit: 10,看板展示的是本次返回范围。必须同时展示 returnedRowCount 和 truncated;需要全量聚合时,应在语义模型中定义指标,而不是在 LiveArtifact HTML 中对截断行自行求和。