度量体系结构
度量体系结构
度量体系结构是一个规则,工件和服务系统,可在整个组织中提供明确的定义,可复制的计算,透明的访问和可靠的指标操作。目的是使"MAU","Retention D30"或"ARPPU"在所有行车记录,实验和报告中都被视为相同。
1)原则
1.公式和手册的单一真相来源(单一真相来源)。
2.语义与实现分离:业务定义生活在语义层而不是每个SQL/笔记本电脑中。
3.带有历史迁移控制的指标,方案和公式(v1→v2)的转换。
4.可重复性和可测试性:计算是确定性的,由测试覆盖。
5.可观察性:新鲜,饱满,一致性和漂移-具有SLO和Alert。
6.安全性和私有性:最小化PII,RLS/CLS,审核。
7.操作作为代码:定义、转换、策略-在CI/CD存储库中。
2)体系结构层
原始数据:事件/事务,参考书,模型逻辑/infra。
集成和清理:CDC/增量加载,去除,统一临时区域。
数据模型(DWH):恒星/雪花,缓慢变化的测量(SCD),代理密钥。
语义层度量:单一定义、聚合、过滤器、时间表、滚动逻辑。
设计层:batch/microbatch/流;窗户,水印,按键去除。
目录和词典:"指标护照",线性,所有者,权利。
访问和消耗:BI/dashbords,API指标,卸载,实验/AV。
3)数据合同和指标
来源合同(事件/表)
方案:字段,类型,零弹性,主键。
SLA:新鲜(例如"≤10分钟放电"),频率,最大延迟教区。
质量:键的唯一性,有效的值域,时区,等效性。
更改:模式演变策略(backward/forward),执行计划。
指标合同
名称/代码: "RET_D30_v2"
Domein/所有者: 产品分析
定义(人文语言)
公式: SQL/伪代码+输入店面/语义对象
粒度/时间逻辑: 每天/每周;时间点规则,时间区
默认分段/过滤器
单位和货币(汇率/转换日期)
SLO: 新鲜≤ X,精度≥ Y,可用性≥ Z
版本/更改历史记录/加入日期
Guardrails: 允许的范围,p1/p99 vinzorization规则
4)语义层度量
图层任务集中存储聚合定义和规则:- 元素:测量(日期,国家,平台),事实(事件,revenue),度量(ARPU,Retention D 30),可计算字段,日历(奴隶/周末,假期)。
- 时间行为:日历表,滞后,队列,"滚动"窗口(7/30/90)。
- Rollup和一致性:每天的总和=一个月,同时排除双重核算(distinct users)。
- Mix-adjustment:正常化为诚实YoY的永久渠道/国家组合。
- 多种货币/时差:在交易日带到基本货币;本地和"规范"UTC切片。
5)计算: butch、microbatch、stream
Butch:每晚/每小时的乔巴舞,完整/增量重新计票,等速控制。
Microbatch:操作行车记录仪的窗口1-15分钟。
流:通过轮胎的事件;窗口(tumbling/sliding/session)、水标签(late data)、单词语义(按+offset store键排序)。
- 用于操作KPI的"HOP 5m,WINDOW 1h";
- 日间指标的"TUMBLE 1d";
- 会议的"SESSION 30 m"。
6)质量和可验证性
数据测试:示意图、域(范围)、参考关系。
度量测试:不变量(DAU≤MAU),非空段,单调性期望(累积性)。
对账(重新计算):语义层和参考报告/会计之间。
数据健康:新鲜,完整,复制,空值,异常跳跃。
漂移度量:关键峰上的PSI/KL/JS,尤其是ML度量。
7)验证和迁移
公式版本:"METRIC_NAME_vN"。禁止在不更改版本的情况下悄悄更改定义。
迁移策略:- 侧面:v1和v2被认为是平行的;对用户进行核对和培训。
- 切断:在低负载窗口中将消费者切换到v2;存档v1。
- 重新计算历史:根据历史数据重新计算历史;差值协议(diff报告)。
- 通讯:changelog,进入日期,谁会受到影响,说明。
8)度量数据模型
事实:谷物(event_id,transaction_id,user_day),事件时间,总和/数量。
测量:用户,设备,地理,通道,产品,日历;SCD类型用于历史性。
密钥: 代理ID,稳定的业务密钥,对应表(映射).
反配对:身份规则(user merge),会话的"滑动"窗口。
9)单位,货币,季节性
单位/格式:显式单位,四舍五入,量表(日志/线性)。
Multivaluta:在操作日按路线转换;保存"原始"和标准化金额。
季节性:YoY和季节性指数;单独的"节日"效果。
10)安全和访问
Row-Level Security (RLS):访问国家/品牌/合作伙伴的度量标准。
Column-Level Security (CLS):掩盖PII/财务领域。
审计:谁要求一个指标,哪些过滤器,哪些数据导出。
API区分:"按角色分组"vs"详细上载"。
11)可观察性和SLO
SLO新鲜: 例如,"运行KPI-Lag ≤ 15分钟,每天-直到当地时间06:00。"
SLO可用性:≥ 99。API/语义层为 9%。
Alerts: SLO延迟,指标跳跃,NULL/重复增长, v1 vs v2> X%差异。
Runbooks:降级时该怎么做-RCA步骤,fallback(例如,切换到最后一个有效的"快照度量")。
12)实验和指标
Guardrail度量:潜在性,容错性,FPR/FNR得分。
A/B的统一定义:转换,保留,NSM-通过相同的语义层。
最小可区分效应(MDE),电力分析:将参数存储在度量卡中。
Causal归属:混合调整和对照组的策略。
13) API指标和消费
Запросы: `GET /metrics/{name}?from=2025-09-01&to=2025-10-01&dims=country,platform&filters=channel:paid`.
策略:限制,缓存,分离,等效的"出口"。
版本:标题"X-Metric-Version: v2",deprecation警告。
14)模板和工件
指标护照(示例)
代码/版本: "ARPPU_v3"
定义: 期间每个付费用户的平均收入
Формула: `sum(revenue_net) / count_distinct(user_id where paying_flag=1)`
粒度: 一天;滚动:周/月=分子总和/分母总和
资料来源: 'fact_payments_v2','dim_users_scd'
单位: 货币"base_ccy";日期的汇率转换
默认过滤器: 活动市场,排除测试交易
SLO: 新鲜≤ 1小时;API可用性≥ 99。9%
Guardrails: ARPPU ∈ [0;10 000];vinzorization p1/p99
所有者: Monetization Analytics;审计日期:2025-10-01
查看指标发布列表
- 定义和公式一致,包含在测试中
- 创建语义对象;lineage已记录
- Backfill和裁判员对账完成
- SLO/Alertes定制;runbook准备就绪
- 权利和RLS设置;隐藏的PII
- 在dashbords/实验中替换了旧版本
- Changelog/通信发送
SQL伪代码点对点(Retention D30示例)
sql
WITH cohort AS (
SELECT user_id, MIN(event_date) AS signup_date
FROM fact_events
WHERE event_type = 'signup'
GROUP BY 1
),
activity AS (
SELECT user_id, event_date
FROM fact_events
WHERE event_type = 'app_open'
),
ret AS (
SELECT c. signup_date,
COUNT(DISTINCT CASE WHEN a. event_date = c. signup_date + INTERVAL '30 day' THEN a. user_id END) AS returned,
COUNT(DISTINCT c. user_id) AS cohort_size
FROM cohort c
LEFT JOIN activity a
ON a. user_id = c. user_id
AND a. event_date BETWEEN c. signup_date AND c. signup_date + INTERVAL '30 day'
GROUP BY 1
)
SELECT signup_date, returned / cohort_size AS retention_d30
FROM ret;
15)频繁的错误以及如何避免错误
安静的公式编辑:始终通过版本和changelog。
"在每个笔记本电脑中以不同的方式"的度量标准:强制执行语义层/API。
不一致的时间段/货币:中央日历和FX表。
双重用户核算:滚动规则和唯一密钥。
不透明的新鲜度:清晰显示变量/更新时间。
依赖一个工程师:一切都像代码,有咆哮和肿瘤。
底线
度量体系结构是词典+语义层+可靠计算+hovernance和SLO。按照所描述的原则(合同,测试,版本,可观察性,安全性),您将度量标准从"数字争议"转变为可持续的产品和业务管理机制。