Data Foundation:Common Finance Model
Data Foundation 是 PlaidCloud 项目的财务数据基础。其 Common Finance Model 将来自多个 ERP 系统(以及每个系统的多个实例)的 ERP 数据汇集到单一模型中:一套会计科目表、一组实体和一种报告货币。基于该模型构建的报表、指标和 AI 助手读取的都是相同的数字,无论数据来自哪个 ERP。
ERP 通过其 PlaidCloud 连接接入,因此总账、试算平衡表、主数据和预算直接从源头到达,无需导出任何内容。文件用于补充系统本身不包含的数据,例如汇率、分摊动因或在 ERP 之外维护的预算,并且可以替换其所覆盖的 ERP 行。加载会将每个来源整合到模型中,折算为报告货币,并检查合计是否一致,这一切都在项目的基础数据选项卡中完成。模板(例如企业盈利能力)在其基础上构建自己的报表和模型。
连接 ERP
Section titled “连接 ERP”ERP 通过其 PlaidCloud 连接接入 Data Foundation。Data Foundation 直接从中读取总账、试算平衡表、主数据、汇率和预算,并且只读取。可以选择现有连接,也可以在该选项卡中创建连接;连接指南介绍了各个 ERP 的访问设置。
-
在 Analyze 中,打开项目并点击新建项目。输入名称,在起始来源下选择模板(例如企业盈利能力(模板)),而不是空白项目。点击创建。
项目会在其基础数据选项卡中打开。在您共享之前,它是私有的,您是它唯一的架构师。
-
在基础数据选项卡中,为 ERP 选择一个现有连接,或选择创建新连接。每个现有连接都会列出已使用它的工作流,或显示暂无工作流使用。
-
对于新连接,输入连接名称,选择环境,并填写 ERP 连接所要求的凭据。
还没有凭据?表单会显示一份现成的访问请求,供您发给 ERP 管理员。点击复制请求或通过电子邮件发送请求,发送出去,然后输入对方返回的值。
-
点击测试连接。PlaidCloud 会登录并尝试读取每个数据集,然后将每个数据集列为可读取、缺少权限或错误。如果缺少某些内容,会列出需要请 ERP 管理员添加的权限名称。
-
设置历史月数:要回溯加载多少个月,范围为 1 到 120。默认为 24。
-
对于现有连接,勾选要加载的实体,或全部不勾选以加载所有实体。非活动实体和抵销实体会保持隐藏,直到您选择显示。然后点击连接。
-
对于新连接,点击连接来创建它。然后勾选要加载的实体,再次点击连接以保存。在此之前,会加载所有实体。
连接完成后,卡片会说明项目加载的是哪个连接、环境、实体以及多少个月的历史。
每次加载只读取发生变化的内容:未结账期间和最近一个已结账期间会被重新读取,已加载的已结账期间则保持不变。调高历史月数只会读取新增的月份。汇率、实体对照表或报告货币发生变化时,会重新读取受其影响的月份。
为 ERP 之外的数据添加文件
Section titled “为 ERP 之外的数据添加文件”文件用于补充 ERP 连接中系统本身不包含的数据,例如汇率、分摊动因、实体对照表或在 ERP 之外维护的预算。每个文件都属于 Common Finance Model 表下列出的某一个数据集。
-
在文件下,选择用于存放文件的文档账户。
-
将 CSV 或 Excel 文件拖放到将 CSV 或 Excel 文件拖放到此处,或点击选择文件。文件会上传到文档账户的
/foundation/文件夹。对于已在文档账户中的文件,输入其文件路径,例如
/foundation/budget.csv,然后点击添加文件。 -
PlaidCloud 读取该文件并给出映射建议:
- 检测到的分隔符、小数分隔符和日期。 分隔符(逗号、分号、制表符或竖线)、小数分隔符和日期格式都会自动检测。
- 数据集:文件所属的 Common Finance Model 表,根据文件名和列标题匹配得出。匹配不明确时,请从列表中选择。
- 小数分隔符:句点(1,234.56) 或逗号(1.234,56)。
- 日期格式:文件包含日期时显示。如果检测到的格式有误,请进行更改:
YYYY-MM-DD、DD.MM.YYYY、DD/MM/YYYY或MM/DD/YYYY。 - 由文件中的列、类型、示例和去向组成的网格。更改去向可将某一列发送到其他字段,或选择不加载。
-
检查每一列的去向,然后点击确认映射。
当 PlaidCloud 无法自行确定数据集、小数分隔符或日期顺序时,例如文件中的日期既可能是日/月,也可能是月/日,会要求您在确认之前先做选择。为同一个数据集再添加第二个文件会替换第一个。
接受的文件包括 CSV、TSV 和 TXT 文本文件、Excel .xlsx 文件(读取第一个工作表)以及 Parquet 文件。
加载您的数据
Section titled “加载您的数据”点击加载卡片或上次加载卡片上的加载。加载会读取已连接的 ERP 和已确认的文件,将它们整合到 Common Finance Model 中,折算为报告货币,运行就绪状态检查,并重建模板的模型。
- 一个项目同一时间只能运行一次加载。再次点击加载会提示已有加载正在运行。
- 如果其他工作流使用同一个 ERP 连接,首次加载会列出它们并要求您确认,因为加载会从 ERP 读取数据,可能拖慢这些工作流。点击仍然加载即可继续。
- 失败的加载会以红色显示,绝不会隐藏在之前的结果背后。来自较早加载的行会显示来自较早的加载。请重新加载。,直到加载成功。
- 如果某个实体和期间读取失败,其余部分仍会加载。再次运行加载,只获取失败的部分。
ERP 数据与文件并用
Section titled “ERP 数据与文件并用”文件只替换其所覆盖的内容,来自 ERP 的其他行保持不变。
- 主数据文件(科目、部门、客户、产品和分部值)会替换代码相同的 ERP 行。
- 交易文件会替换同一实体和月份的 ERP 行。总账和试算平衡表文件还会按账簿匹配,预算文件按方案匹配,统计动因文件按方案和动因匹配。
如果某个文件之后不再覆盖某个月份,该月份来自 ERP 的数据会在下次加载时恢复。
每个来源都用自己的代码命名其实体。实体对照表将这些代码映射到实体主数据中的实体,使来自各个来源的明细行落到同一个实体上。
要使用它,请添加 CSV 或 Excel 文件并选择实体对照表数据集:
| 列 | 内容 |
|---|---|
source_entity |
来源所使用的代码,例如公司代码。 |
entity |
它所属的实体,与实体主数据中的名称一致。 |
- 不在对照表中的代码按原样使用。
- 多个代码可以映射到同一个实体。它们的明细行会合并,且只有在全部代码都已结账时,该月才算已结账。
- 对照表中的代码适用于每个来源,因此各来源的实体代码在来源之间必须唯一。
- 实体文件中的一行会替换 ERP 中实体代码相同的实体。
未映射的实体检查会标记出这样的明细行:其实体既不在实体主数据中,也没有通过对照表映射到某个实体。在加载实体主数据之前,它显示 – 不适用。
每次加载都会将总账、试算平衡表、销售、库存和预算的金额从本位币折算为一种报告货币。报表和模型读取的是折算后的金额,因此来自任何系统、使用不同货币的实体都能正确合计。
要选择报告货币,请将项目变量 reporting_currency 设置为货币代码,例如 USD。参阅管理项目变量。模板创建时它为空。在为空期间,每次加载会使用以下各项中第一个恰好指向一种货币的:
- 实体的集团货币。
- 顶层实体(没有上级的实体)的本位币。
- 文件的本位币。
如果没有任何一项恰好指向一种货币,货币折算会显示问题,直到您设置 reporting_currency。
已经是报告货币的金额保持不变,因此数据全部使用同一种货币的项目不需要汇率。
销售、库存和预算文件也可以带有货币。映射名为 Currency 或 Local Currency 的列,系统会自动识别,并将文件中的本位币金额折算为报告货币。文件中已有的集团金额或报告金额会按原样保留。产品标准成本不进行折算。
汇率将某月一个单位的某种货币换算为报告货币:折算后的金额等于本位币金额乘以汇率。
- 来自 ERP:每次加载都会读取 ERP 中保存的汇率。
- 来自文件:添加 CSV 或 Excel 文件并选择汇率数据集。文件中的汇率会替换 ERP 中相同货币和月份的汇率。如果要使用您的 ERP 未发布汇率的货币来报告,或要为预算月份添加计划汇率,请使用文件。
| 列 | 内容 |
|---|---|
from_currency |
折算的源货币,例如 EUR。 |
to_currency |
报告货币,例如 USD。 |
period |
月份,格式为 YYYY-MM。 |
average_rate |
当月的平均汇率。 |
closing_rate |
月末汇率。 |
historical_rate |
历史汇率,用于权益以及设置为使用历史汇率的科目。 |
仅使用折算为报告货币的汇率。反向报价的汇率(从报告货币折算为其他货币)不会被取倒数。
适用哪种汇率
Section titled “适用哪种汇率”每一行都按其自身的货币折算,因此与其实体货币不同的明细行,会按其所用的货币折算。适用第一条符合该行的规则:
| 行 | 汇率 |
|---|---|
| 统计科目和非过账科目 | 不折算。 |
| 已经是报告货币 | 不折算。 |
| 设有汇率类型的科目 | 该汇率:平均汇率、期末汇率或历史汇率。没有历史汇率时,历史汇率回退为期末汇率。来自 ERP 时,汇率类型即科目自身的汇率类型。在会计科目表文件中,将汇率类型列映射到 fx_rate_type,取值为 average、closing 或 historical。 |
| 销售明细行 | 该期间的平均汇率。 |
| 库存余额 | 该期间的期末汇率。 |
| 预算行 | 按科目处理,与总账相同:损益科目使用平均汇率,资产负债表科目使用期末汇率。 |
| 损益科目 | 该期间的平均汇率。 |
| 权益科目 | 历史汇率;没有历史汇率时使用期末汇率。 |
| 其他任何资产负债表科目 | 该期间的期末汇率。 |
折算后的金额不做四舍五入,因此合计不会出现偏差。
每次加载都会根据所有来源的主数据重建七个维度:
| 维度 | 构建来源 |
|---|---|
| 实体 | 实体及其上级 |
| 科目 | 会计科目表和上级科目 |
| 部门 | 部门及其上级 |
| 客户 | 客户及其上级客户 |
| 产品 | 产品及其上级产品 |
| 分部 1 | segment_1 的分部值 |
| 分部 2 | segment_2 的分部值 |
- 没有上级的记录,或将自身指定为上级的记录,会作为顶层成员加载。
- 由于每次加载都会重建层次结构,请在 ERP 或文件中更改上级,而不要在维度中更改。
- 某个层次结构中的问题只影响该维度。加载和模板的模型仍会完成。
- 可以将分部 1和分部 2重命名为它们所保存的内容,例如类别和位置。
要通过文件提供分部层次结构,请选择分部值数据集:
| 列 | 内容 |
|---|---|
segment |
该值所属的分部:segment_1 到 segment_5。分部 1和分部 2有对应的维度。 |
segment_value |
值,与总账、销售和预算明细行中的写法一致。 |
segment_value_name |
其名称。 |
parent_segment_value |
其在同一分部内的上级。 |
就绪状态检查
Section titled “就绪状态检查”每次加载之后,就绪状态网格会列出每个实体和期间的所有检查,状态为以下之一:
| 状态 | 含义 |
|---|---|
| ● 就绪 | 检查已通过。 |
| ▲ 需要关注 | 值得查看,但数字可以使用。 |
| ■ 问题 | 在依赖结果之前请先修复。 |
| – 不适用 | 尚无可用于此项检查的数据。 |
检查项如下:
| 检查 | 确认内容 |
|---|---|
| 数据已加载 | 每个财务期间都有总账明细行,且每次 ERP 读取都已成功。没有明细行的已结账期间属于问题;没有明细行的未结账期间则需要关注。 |
| 试算平衡表与总账一致 | 每个实体、期间和科目的试算平衡表都与总账相等。如果某个科目的试算平衡表和总账都带有部门,还会逐个部门核对。 |
| 销售与总账一致 | 销售明细行与每个期间的总账收入和销货成本科目相等。 |
| 未知产品/客户 | 每条销售明细行所指的产品和客户都存在于产品主数据和客户主数据中。 |
| 科目表中缺失的科目 | 每条总账明细行所指的科目都在会计科目表中。科目未知的明细行不会计入损益表。 |
| 货币折算 | 每条总账、试算平衡表、销售、库存和预算行都有报告货币金额。没有汇率的损益行或销售行属于问题,因为损益表读取的是折算后的金额。没有汇率的资产负债表行、库存行或预算行需要关注。尚无汇率的预算月份显示为琥珀色,因此请为预算月份加载计划汇率。参阅货币折算。 |
| 未映射的实体 | 每条总账、试算平衡表和销售明细行所指的实体都在实体主数据中,或通过实体对照表映射到其中。在加载实体主数据之前不适用。参阅实体对照表。 |
每个未就绪的行都会在操作列中说明该怎么做,例如加载会计科目表、加载汇率,或针对某个期间再次运行加载。
网格还会显示两项设置检查,仅在需要关注时才会出现:
| 检查 | 出现时机 |
|---|---|
| 间接费用分摊 | 项目变量 overhead_department 和 overhead_driver 中只设置了一个,或没有任何分摊动因与 overhead_driver 匹配,因此分摊不会起作用。请同时设置两者,或同时清除两者以关闭间接费用分摊。 |
| 预算对比 | 已加载预算行,但没有任何一行属于项目变量 budget_version 所指定的版本,因此预算对比将为空。 |
通过 ERP 连接的加载顺利完成且没有问题后,上次加载卡片上会出现每晚刷新。点击它,即可每晚在您所在时区的 2:00 运行加载。随后卡片会显示 Nightly refresh: Every night at 2:00 以及设置者。
每晚的加载以设置它的人的身份运行。如果该人无法再使用 ERP 连接,网格会提示每晚加载被跳过;请重新设置。仅包含示例数据的项目无法设置计划。
每晚加载时缺失或为空的文件,会以指明路径的警告而不是错误结束,模型的其余部分仍会加载。
使用模板在模型之上构建
Section titled “使用模板在模型之上构建”模板在 Common Finance Model 之上构建自己的报表和模型,因此无论由哪些 ERP 提供数据,它们的工作方式都相同。从模板(例如企业盈利能力)创建项目时,会创建:
- Common Finance Model 表,为空或已填充示例数据。
- 根据这些表构建的实体、科目、部门、客户、产品、分部 1和分部 2维度。参阅层次结构。
- 加载工作流,以及它为读取 ERP 和文件、整合数据、检查就绪状态并构建模板模型而运行的工作流。
- 模板自有的报表和模型。企业盈利能力增加了一张损益表,包含收入、销货成本、毛利、直接和间接运营费用、贡献和营业利润率,以及同比和对比预算的利润率桥。
- 用于就结果提问的指标和分析路径。
要在连接自己的 ERP 之前先行探索,请在创建项目时勾选从示例数据开始。项目会立即运行首次加载,因此基础数据选项卡会显示一个完整的示例,其中包括一个折算为美元的欧元实体。连接自己的 ERP 或添加自己的文件后,示例行会被清除,由您的数据取而代之。
基础数据选项卡
Section titled “基础数据选项卡”基础数据选项卡是连接、加载和检查数据的地方。它由以下部分组成,自上而下依次为:
| 部分 | 显示内容 |
|---|---|
| 上次加载 | 上次加载是成功、失败还是仍在运行,以及加载、刷新和每晚刷新按钮。 |
| 设置 | 设置清单:连接您的数据、加载您的数据、检查合计是否一致、查看您的层级结构和与团队共享。当前项以粗体显示。 |
| 文件 | 您添加的每个文件及其数据集(例如总账或汇率),以及其映射是 ✓ 已确认还是 ○ 等待确认。 |
| 数据已加载 | 每个实体首次和最后加载的期间,以及有多少个期间已就绪。 |
| 期间 | 每个实体的财务期间,以及每个期间是 ✓ 已关闭还是 ○ 未结账。 |
| 就绪状态 | 就绪状态网格:每个实体、期间和检查各占一行,并显示其状态和操作。 |
| 连接 | 连接 ERP,选择实体以及要加载多少个月的历史。 |
| 文件(添加) | 添加 CSV、TSV、TXT、Excel 或 Parquet 文件,并确认其列的映射方式。 |
| 加载 | 开始加载。 |
加载运行期间,选项卡会自动刷新。
设置清单会跟踪您的进度:
- 一旦接入来源并且加载成功,连接您的数据和加载您的数据就会自动勾选。
- 合计一致性检查通过后,检查合计是否一致会自动勾选。
- 查看您的层级结构:点击打开维度查看实体、科目和部门层次结构,然后勾选我已查看。这一项由您自行确认。
- 与团队共享:项目准备就绪后进行共享。参阅管理项目访问权限。
Common Finance Model 表
Section titled “Common Finance Model 表”Data Foundation 将每个来源(无论是 ERP 还是文件)整合到同样的十五张表中,因此基于它们构建的报表、指标和模型无论来源如何,工作方式都相同。每一行还会记录其来源系统以及读取时间。数据集列是添加文件时选择的名称。
| 数据集 | 表 | 内容 |
|---|---|---|
| 实体 | cfm_entity |
法人实体,含上级、本位币和集团货币以及国家。 |
| 实体对照表 | cfm_entity_map |
来源实体代码及其所属的实体。参阅实体对照表。 |
| 汇率 | cfm_fx_rate |
按货币对划分的月度平均汇率、期末汇率和历史汇率。参阅汇率。 |
| 财务日历 | cfm_fiscal_calendar |
每个实体的每个财务期间一行,含起止日期以及是否已结账。 |
| 会计科目表 | cfm_account |
科目,含上级、类型(Revenue、COGS、Opex、NonOperating、Asset、Liability、Equity)、报表、正常余额方向和汇率类型。 |
| 部门 | cfm_department |
部门和成本中心,含上级和利润中心。 |
| 产品 | cfm_product |
产品主数据,含上级、系列、组、计量单位和标准成本。 |
| 客户 | cfm_customer |
客户主数据,含上级、组、区域和国家。客户名称不做遮蔽。 |
| 分部值 | cfm_segment |
分部值,含名称和上级。参阅层次结构。 |
| 总账 | cfm_gl_journal |
以交易货币、本位币和报告货币表示的日记账明细行。 |
| 试算平衡表 | cfm_trial_balance |
按实体、科目和部门划分的期间借方、贷方和净额,以本位币和报告货币表示。 |
| 销售明细行 | cfm_sales_line |
已开票的销售明细行,含数量、毛额、折扣、净额和销货成本金额。 |
| 库存余额 | cfm_inventory_balance |
按产品和仓库划分的期末库存。 |
| 预算 | cfm_budget |
按方案、版本、科目和部门划分的预算和预测。 |
| 分摊动因 | cfm_stat_driver |
统计动因,例如人数、平方英尺或单位数。 |
期间的写法为 YYYY-MM,交易按过账期间归属。预算是可选的:没有预算的 ERP 仍会加载其他所有内容。
试算平衡表文件可以包含借方和贷方列、净额列,或两者兼有。只有借方和贷方时,净额为借方减去贷方,空白的一侧按零计算。只有净额时,正的净额记为借方,负的净额记为贷方,且以正数表示。部门列是可选的。
| 现象 | 处理方法 |
|---|---|
| 测试连接提示 ERP 拒绝了凭据 | 检查连接的凭据,并确认集成用户可以登录 ERP。 |
| 测试连接对某个数据集显示缺少权限 | 请 ERP 管理员添加它所列出的权限。您所用 ERP 的连接指南列出了连接所需的内容。 |
| ERP 错误消息比 ERP 自身的更短 | PlaidCloud 在显示提供商的错误之前会移除其中的凭据、令牌和密钥,因此部分细节会被省略。运行测试连接可查看哪个数据集受到影响。 |
| 某个期间的数据已加载为问题 | 该期间的 ERP 读取失败。再次运行加载;已加载的期间会被跳过。 |
| 科目表中缺失的科目为问题 | 在 ERP 或文件中向会计科目表添加缺失的科目,然后再次运行加载。 |
| 货币折算为问题 | 某个实体的货币在该期间没有折算为报告货币的汇率,或未找到唯一的报告货币。请在汇率文件中添加汇率,检查连接是否能读取 ERP 的汇率,或设置项目变量 reporting_currency。然后再次运行加载。 |
| 货币折算需要关注 | 资产负债表、库存或预算行在该期间没有期末汇率、历史汇率或计划汇率。损益表不受影响。请添加汇率(包括预算月份的计划汇率),然后再次运行加载。 |
| 未映射的实体为问题 | 将该实体添加到实体主数据,或在实体对照表文件中将其代码映射到现有实体,然后再次运行加载。 |