运营小满上周月底对账,发现财务那边的收缴率、运营那边的收缴率、老板心里那个收缴率,三个数。问数平台接进来之前,这种事每月都来一回。我把口径怎么从人脑子里的算法,固化进经验库的过程记下来,给同样要上问数平台的园区参考。

大楼外立着一道空白拱门,那是问数平台的入口,只问不写。
同一个数,三种算法
收缴率就是个现成的例子。财务按已收除以应收,把预交的也算进去。运营按当期已收除以当期应收,预交的不算。老板按到账除以合同额,时间窗又不一样。三套算法,源表都是同一张合同账单,结果却对不上。数本身没错,是口径散在三个人脑子里。

一个人对着三组高低不同的竖条柱发懵,明明是同一个指标。
根因,口径写在人身上
指标没有统一定义,取数范围、时间窗、分子分母都靠人记。谁被问到,谁就按自己的习惯重算一遍,算出来自然不一样。问数平台要让人敢用,先得把口径钉死,光连上数据库不够。它只读不写,不替换原系统,只是在外面加一层问数入口,口径中心就挂在这一层。
解法,一个指标一套口径
我们把每个常用指标固化成一条口径定义,存进经验库。谁问,都走同一段 SQL、同一组取数范围。拿收缴率举例。
yaml
metric: 月度收缴率
definition: 当月实收 / 当月应收
scope:
source: 合同账单
filter: 账单状态 in (已出, 已收部分, 已收完)
time_window: 自然月
numerator: 实收金额
denominator: 应收金额
version: 2026.10
口径定下来,取数的 SQL 也就定了,谁跑都是同一个结果。
sql
-- 经验库锁定的统一口径
SELECT
楼栋,
SUM(应收金额) AS 应收,
SUM(实收金额) AS 实收,
ROUND(SUM(实收金额) / NULLIF(SUM(应收金额), 0), 4) * 100 AS 收缴率
FROM 合同账单
WHERE 账单状态 IN ('已出', '已收部分', '已收完')
AND 出账月份 = '2026-10'
GROUP BY 楼栋;

一只手把三组竖条柱压进同一个空白方框,口径被锁成一套。
经验库怎么落
建一张口径表,把定义、取数范围、版本都存下来。问数平台命中一个指标时,先查这张表,再按它去取数。
sql
CREATE TABLE 指标口径中心 (
指标编码 VARCHAR(32) PRIMARY KEY,
指标名称 VARCHAR(64) NOT NULL,
定义说明 TEXT,
取数源 VARCHAR(64),
过滤条件 TEXT,
分子字段 VARCHAR(32),
分母字段 VARCHAR(32),
时间窗 VARCHAR(32),
版本号 VARCHAR(16),
生效日期 DATE
);
怎么验证口径对得上
口径钉死之后,每月我还顺手对一次总账,把账单汇总的应收和合同那边的应收比一遍。差得多的楼栋单独拉明细。
sql
SELECT b.楼栋,
SUM(b.应收金额) AS 账单应收,
SUM(c.合同月租) AS 合同应收,
SUM(b.应收金额) - SUM(c.合同月租) AS 差额
FROM 合同账单 b
JOIN 租赁合同 c ON c.合同号 = b.合同号
WHERE b.出账月份 = '2026-10'
AND c.合同状态 = '生效中'
GROUP BY b.楼栋
HAVING ABS(SUM(b.应收金额) - SUM(c.合同月租)) > 0;
跑出来有差额的楼栋,点开明细,多半是漏出账单,或者合同变更没同步过来。口径统一之后,这类对账从半天缩到几分钟。
哪些能固化,哪些不能
能固化的,是常用稳态指标,空置率、收缴率、到期合同数,算法明确,每月都要问。不能固化的,是临时维度,比如上个月那批退租的,还有自然语言歧义,比如收得怎么样,可能指收缴率也可能指回款节奏。后者交给语义层动态去拼,但落回的底层算法,还是这张表里的口径。

房子在细线后面,放大镜在界外往里看,口径只读不写原表。
踩坑表
| 当时踩的坑 | 现象 | 怎么兜住 |
|---|---|---|
| 口径版本没人管 | 十月改了分母,九月旧报表还在用老算法,两边对不上 | 口径带版本号,报表记生效日期,查历史走旧版 |
| 自然语言歧义放大 | 同一意思多种问法,命中不同口径碎片 | 先语义归一,再到口径中心取算法 |
| 临时口径写死 | 某次临时口径被当成常态,后面全错 | 临时维度走语义层动态拼,不进口径中心 |
| 只看分子不看窗 | 收缴率算的是年内累计,老板要的是当月,差好几倍 | 口径强制带时间窗字段,缺窗不返回 |
回头看
两套系统分工没变,一个管发生,一个管看懂。口径中心归看懂这层,它不管业务发生,只把怎么算这件事钉死,谁问都一样。

大楼、拱门和蜿蜒小路连成一个闭环,发生、沉淀、提问、看懂走完一圈。
少等一次取数,少做一次重复报表,少一次反复解释。