首页/数据/数仓建模速查/账户维度:主账户与子账户结构
维度与事实设计149 条

账户维度:主账户与子账户结构

计费与金融场景的账户层级(主-子)用父子列加层级列表达;余额类事实挂到最细账户,上卷时按层级过滤防重复计数。

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

主账户与子账户怎么表达

计费、金融与会员场景常见账户层级:一个主账户下挂多个子账户。用父账户列加层级列表达结构,再物化路径列支持子树查询;余额与流水这类事实挂到最细账户,上卷时按层级过滤,避免父子账户被重复计入同一笔金额。

基本信息

结构列父账户编码、层级、路径
事实挂载挂到最细账户(通常是子账户)
上卷规则按层级过滤后再汇总,避免重复计数
典型层级主账户与子账户两层,也支持三层
常见用途计费、账单、余额与信用管理

典型使用场景

  • 账单出账:按子账户汇总用量,再上卷到主账户出账
  • 余额查询:区分主账户总余额与子账户可用余额
  • 信用管理:主账户控制总授信,子账户按额度消费
  • 权限划分:不同团队共用主账户结算但使用不同子账户
  • 成本分摊:子账户用量按部门或项目分摊成本

子树查询与按层级汇总

子树查询与按层级汇总
-- 子树查询:路径前缀一次拿到所有子账户
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;

各层对象与汇总

对象含义汇总注意
主账户顶层结算单位统计总额时只取主账户行
子账户实际使用与计费单位余额与流水通常挂在子账户
层级父子深度按层级过滤决定统计口径
余额同时挂主账户与子账户会导致双重计数:汇总前先确定统计层级,主账户余额究竟是子账户余额之和还是独立字段,要在口径里写清。
账户层级变化要迁移历史事实或保留旧层级:直接把子账户挂到新主账户会让历史账单归属改变,对账时无法还原当时的结构。

易错点

  • 余额同时挂主账户与子账户:汇总双重计数,金额翻倍
  • 层级变化未迁移历史事实:历史账单归属改变,无法对账
  • 路径列在账户移动后未级联重写:子树查询结果与实际结构不一致
  • 账户号在多个业务域重复:跨域关联到错误的账户
  • 账户状态(销户、冻结)不参与过滤:已销户账户仍计入在用账户数

数据来源与参考

  • 数仓建模实践:账户维度设计
​‌‌​​‌​​​‌‌​‌‌‌‌​‌‌​​​‌‌​‌‌‌​​‌‌​​‌​‌‌‌​​‌‌‌​​​‌​‌‌​‌​​‌​‌‌‌​​​‌​‌‌​‌​​‌​‌‌​​​‌‌​‌‌‌​‌​​​‌‌​‌‌‌‌​​‌​‌‌‌​​‌‌​​​‌‌​‌‌​‌‌‌‌​‌‌​‌‌​‌