多币种存哪几层
多币种场景在事实表里存三层信息:原币金额、币种键,以及折算金额与折算所用汇率日期。折算按业务指定的汇率类型执行,交易日汇率、月末汇率还是期间平均汇率由财务口径决定,事实表只负责忠实落库并记录汇率类型与版本。把折算留在展示层会导致历史报表随汇率漂移,同一份月报两次打开数字不同,也失去了复核的可能。
基本信息
| 原币层 | 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 | 汇率类型 | 同报表混用两种类型对不上 |
折算与重估不要混:折算把交易统一表达为某一币种,重估是期末对未结算外币余额按期末汇率重新计价,两者的汇率时点与涉及科目都不同。
汇率表要有生效日期与版本,历史汇率原则上不覆盖;确需修正时记录修正原因,并按汇率日期重算受影响的事实分区。