主账户与子账户怎么表达
计费、金融与会员场景常见账户层级:一个主账户下挂多个子账户。用父账户列加层级列表达结构,再物化路径列支持子树查询;余额与流水这类事实挂到最细账户,上卷时按层级过滤,避免父子账户被重复计入同一笔金额。
基本信息
| 结构列 | 父账户编码、层级、路径 |
|---|---|
| 事实挂载 | 挂到最细账户(通常是子账户) |
| 上卷规则 | 按层级过滤后再汇总,避免重复计数 |
| 典型层级 | 主账户与子账户两层,也支持三层 |
| 常见用途 | 计费、账单、余额与信用管理 |
典型使用场景
- 账单出账:按子账户汇总用量,再上卷到主账户出账
- 余额查询:区分主账户总余额与子账户可用余额
- 信用管理:主账户控制总授信,子账户按额度消费
- 权限划分:不同团队共用主账户结算但使用不同子账户
- 成本分摊:子账户用量按部门或项目分摊成本
子树查询与按层级汇总
子树查询与按层级汇总
-- 子树查询:路径前缀一次拿到所有子账户
SELECT acct_id, acct_level, parent_acct_id
FROM dim_account
WHERE path LIKE '/A100/%';
-- 汇总前按层级过滤,避免父子重复计入
SELECT sum(b.balance) AS sub_total
FROM dim_account a
JOIN fact_acct_balance_daily b ON a.acct_sk = b.acct_sk
WHERE a.acct_level = 2;各层对象与汇总
| 对象 | 含义 | 汇总注意 |
|---|---|---|
| 主账户 | 顶层结算单位 | 统计总额时只取主账户行 |
| 子账户 | 实际使用与计费单位 | 余额与流水通常挂在子账户 |
| 层级 | 父子深度 | 按层级过滤决定统计口径 |
余额同时挂主账户与子账户会导致双重计数:汇总前先确定统计层级,主账户余额究竟是子账户余额之和还是独立字段,要在口径里写清。
账户层级变化要迁移历史事实或保留旧层级:直接把子账户挂到新主账户会让历史账单归属改变,对账时无法还原当时的结构。