全部文档
文档中心数据流3.0场景案例0301-销售&费用&分摊流程

0301-销售&费用&分摊流程

数据处理流程与规则示例.xlsx

介绍业务背景、数据流核心配置、实现效果。

模拟销售和费用数据:

使用连接器模拟旧系统数据库,环境与权限说明参见DEMO概述。

在本系统中,创建相关数据表元素,用于提供规则和承接输出数据,以 MySQL 数据表为例。
1737430360956-55211f21-d6dc-405e-b4b4-fb443f911a77

为方便编辑数据,可以用电子表格组件统一管理相关规则表:
1737430447142-f26a2a77-d925-4056-8849-61dcbb3736be

1737430526559-af611ad1-a5a8-4443-ade6-5e638f1b0d86

1737430571240-db271ec9-5e11-4c34-a92c-2822ae5891b6

注意:由于数据原因,此处的配置说明与 DEMO 中实际配置可能略有差异,最终以 DEMO 环境中实际配置为准!
1737438768936-2e65a40a-f0f5-4b6e-baea-a1042392157d

  1. 在开始节点配置启动参数{"YearMonth":"202301"},需要传入【年月】

  2. 无需定时触发,只要手动触发即可
    1737438814327-1a98a3bb-a6a4-42af-8bdb-fa1c592df550

  • 连接器查询节点用于获取 SAP 系统中指定年月的发票明细

  • 数据表查询节点用户获取本系统中的相关业务规则

两个查询节点都提供了 UI 模式和 SQL 模式用于查询,以 UI 模式为例:
1737439018585-485b2af1-3006-4d8f-a224-514d03128210

数据表查询节点直接全表查询即可:
1737439099187-a63b7f69-cd7f-494a-9e68-a5d758a18bf7

进阶:使用参数和变量

如果节点之间有执行的前后顺序,后续节点可以通过 Operator.nodeX.data 引用前序节点的运行结果,更多引用方式参见预置变量。

举个例子,本场景中,连接器查询节点仅需查询指定年月的数据,指定年月为启动参数,也是开始节点的输出结果,因此在过滤条件中可以需要引用Pipeline.params.YearMonth。
1737439228166-a0590815-6200-4ce1-8e85-248310a6b4be

用于处理数据集,也就是按业务规则处理数据,这里可以与业务要求的步骤一一对应。
1737439816715-7accd064-9809-45e7-8d74-9ba9529568d6

  • 数据源选择连接器查询节点得到的 SAP 发票明细

  • 使用连接(join)步骤,连接数据表查询节点得到的各种业务规则,举例
    1737440692447-f7e1f753-fbe6-4c9d-ac7b-1a75f06fc98a

  • 使用列选择步骤,只保留需要的列
    1737440730930-41db5cff-a29f-4270-bdb5-8bdd49289040

  • 使用列计算步骤,进行列间计算,得到新列,计算需要使用 SQL 表达式(DuckDB 语法)
    1737440769701-4748fe54-71aa-4e60-bd1a-05850428a534

此步骤完成后,就能得到需要的结果了,接下来只需要映射到目标表即可。

带前序节点一同调试,检查数据:202301期间有3100条数据
1737441071775-67c89029-d89c-4177-88e3-5e0bd50471a9

使用数据表操作节点提交数据库。

DEMO 中为先删后插,实际根据业务需求决定是否需要先删除。

  • 数据源选择内置业务数据源
    1737441424729-c07dbdaf-41a6-465a-9cdc-9cf8fae36ceb

  • 先用删除步骤,删除本年月的数据
    1737441459065-1557d042-5293-4146-b331-519f50208f0e

  • 再用数据集-新增步骤,将UI 转换节点输出的结果,映射到目标数据表
    1737441499130-2fdc9681-f75f-41c2-8f19-5da31c9bec4d

注意:由于数据原因,此处的配置说明与 DEMO 中实际配置可能略有差异,最终以 DEMO 环境中实际配置为准!
1737441995164-f2b026c1-b311-40e9-9310-f5fc2e22a2f4

同销售流程,不赘述。

  • 连接器查询节点用于获取 SAP 系统中指定年月的发票明细

  • 数据表查询节点用户获取本系统中的相关业务规则

同销售流程,不赘述。

区别于销售流程,费用流程这里按业务规则,拆分成 5 个独立的 UI 转换节点了,每个 UI 节点的数据源是上一个节点的输出结果。

当然,也可以和销售费用一样,编排在一个节点中,使用多个步骤区分,按需选择即可。
1737442338533-f2ab4865-41f5-439f-a143-40c9db2ea177

费用流程的UI 转换节点,主要有按条件更新字段的需求,例如【更新物流费】,需要只更新【二级科目=物流费】的数据,其他数据不受影响
1737442524937-4445167c-f5be-46b0-a195-d0c265d65d8c

那么就需要用到列计算步骤,在 SQL 表达式中用CASE WHEN语法处理,这里支持 DuckDB 的 SQL语法。
1737442642139-48249aff-ca70-44ed-86c7-653e2ca343a1

列计算步骤定义的字段名,如果和已有字段名重复,则为更新该字段。

按规则配置完成后,就能得到需要的结果了,接下来只需要映射到目标表即可。

带前序节点一同调试,检查数据:202301期间有100条数据
1737442834974-0ba7c7bf-4028-4634-8665-3fdcdb4ea2c3

使用数据表操作节点提交数据库。

DEMO 中为先删后插,实际根据业务需求决定是否需要先删除。

同销售流程,不赘述。

注意:由于数据原因,此处的配置说明与 DEMO 中实际配置可能略有差异,最终以 DEMO 环境中实际配置为准!
1739961601795-b7378e7c-6dd2-4df2-bdf6-e4bbae3c0e50

同销售流程,不赘述。

区别于其他流程,分摊流程需要将 1 条费用明细,按分摊比例计算到多个事业部中,有 N 个事业部就需要多 N 列展示对应的分摊金额。

这里可以使用到透视节点来完成:
1739962104022-0ba3081e-4e24-4af4-88c8-13db4581f56a

效果:
1739962077483-787bc561-fd7a-4e48-a437-9b6c3b0dc792

区别于其他流程:

  1. 为了计算分摊比例的分母,也就是总销量或总人数,用到了【列计算-窗口聚合】步骤:
    1739962587987-eb0b2aec-7994-40b0-882a-0d602f0e70d7

  2. 为了将 N 条费用明细连接 M 个事业部对应的分摊比例,在【连接】步骤中,用到了【交叉】的连接方式,得到 N*M 条数据;
    1739962526646-862a1b40-4f13-4e67-9cfe-7a5fc9bd332b

  3. 费用明细数据中规定了不同的分摊规则,各数据按照不同规则计算完成后需要将结果取并集,因此使用了【集合(union)】步骤;
    1739962216451-3817eab5-901e-4431-9ecb-ba46afbeb620

回到顶部

咨询热线

400-821-9199