首页/数据/数仓建模速查/多币种事实表设计
维度与事实设计149 条

多币种事实表设计

多币种场景存三层:原币金额 + 币种键 + 折算金额与汇率日期;折算按业务要求的汇率类型(交易日/月末)执行,汇率版本可追溯。

数仓建模速查数据更新于 2026-10-13

多币种存哪几层

多币种场景在事实表里存三层信息:原币金额、币种键,以及折算金额与折算所用汇率日期。折算按业务指定的汇率类型执行,交易日汇率、月末汇率还是期间平均汇率由财务口径决定,事实表只负责忠实落库并记录汇率类型与版本。把折算留在展示层会导致历史报表随汇率漂移,同一份月报两次打开数字不同,也失去了复核的可能。

基本信息

原币层amount_orig 与 currency_sk
折算层amount_cny 等目标币种金额
汇率信息fx_rate、fx_date、fx_type
口径来源交易日、月末、期间平均按财务要求
可复现汇率日期与类型落库,结果可重算

典型使用场景

  • 跨境电商与境外子公司报表把多币种收入折算为集团币种
  • 支付事实记录渠道币种与结算币种,用于手续费核对
  • 期末重估外币余额,需要月末汇率快照支撑
  • 同一批数据按经营口径(平均汇率)与报表口径(期末汇率)分别出数
  • 汇率表变更后按汇率日期定向重算受影响期间的折算金额

多币种支付事实

多币种支付事实
-- 原币、汇率、折算金额并存,折算参数落库
CREATE TABLE fact_pay (
  pay_id      string,
  currency_sk int,
  amount_orig decimal(18,2) COMMENT '原币金额',
  fx_rate     decimal(18,6) COMMENT '折算汇率',
  amount_cny  decimal(18,2) COMMENT '折算金额',
  fx_date     date          COMMENT '折算所用汇率日期',
  fx_type     string        COMMENT '汇率类型:交易日/月末/平均'
) PARTITIONED BY (dt string) STORED AS ORC;

字段读法

字段含义异常表现
currency_sk交易币种维键空值无法判断原币口径
amount_orig原币金额与渠道账单币种不一致
amount_cny折算后金额汇率日期缺失则不可复现
fx_type汇率类型同报表混用两种类型对不上
折算与重估不要混:折算把交易统一表达为某一币种,重估是期末对未结算外币余额按期末汇率重新计价,两者的汇率时点与涉及科目都不同。
汇率表要有生效日期与版本,历史汇率原则上不覆盖;确需修正时记录修正原因,并按汇率日期重算受影响的事实分区。

易错点

  • 只在展示层折算,历史报表随汇率漂移,两次打开数字不同
  • 汇率日期不落库,折算结果无法复现也无法复核
  • 同一张报表混用交易日汇率与期末汇率,合计与明细对不上
  • 汇率表历史值被直接覆盖,历史报表悄然变化且不留痕迹

数据来源与参考

  • 数据仓库实践:多币种核算
​‌‌​​‌​​​‌‌​‌‌‌‌​‌‌​​​‌‌​‌‌‌​​‌‌​​‌​‌‌‌​​‌‌‌​​​‌​‌‌​‌​​‌​‌‌‌​​​‌​‌‌​‌​​‌​‌‌​​​‌‌​‌‌‌​‌​​​‌‌​‌‌‌‌​​‌​‌‌‌​​‌‌​​​‌‌​‌‌​‌‌‌‌​‌‌​‌‌​‌