Files
2026-08-19 10:12:27 +08:00

3.9 KiB
Raw Permalink Blame History

title, source_status
title source_status
业务口径与真实案例 混合——枚举为 user_confirmedcatalog 指标定义来自 sql-agent-demo 演示数据,非生产正式口径

业务口径与真实案例

1. 罚单业务(penalty_sheet,已用户确认,2026-07-22

business_type 枚举:

含义
not_timely_sign_in 超时签到
master_refused_service 拒绝服务
not_timely_reserve 超时预约

来源表:wanshifu_dw.dwd_iop_penalty_sheet_base_handle_v

已验证的取数模式(见 queries/):

  • 判定"最新一条罚单处理记录":按 penalty_sheet_id, object_id 分组,ROW_NUMBER() OVER (PARTITION BY penalty_sheet_id, object_id ORDER BY update_time DESC, callback_time DESC, penalty_handle_id DESC)row_num = 1
  • 有效罚单过滤:NVL(is_delete, 0) = 0object_type = 'master'master_source_type = 'tob'strategy_type = 'punish'strategy = 'cash',且 extra_status IN ('wait_pay', 'paid')
  • 日报/周报/月报(penalty_daily_report.sqlpenalty_weekly.sqlpenalty_monthly_report.sql)核心指标:去重扣款师傅数(COUNT(DISTINCT master_id))、去重罚单数(COUNT(DISTINCT penalty_sheet_id))、已实际支付的师傅数(extra_status = 'paid' 时再去重)。
  • 师傅扣款月报(penalty_master_deduction_monthly_report.sql)在此基础上按师傅维度展开扣款明细。

这一组 SQL 是"分区+口径+去重"写法的可复用范本:判定最新状态用窗口函数去重、有效性过滤在 CTE 里显式列出、汇总指标全部基于去重后的 _valid CTE 计算,避免同一罚单多条状态记录重复计数。

2. 指标定义示例(来自演示数据 data/catalog.json,非正式生产口径,仅作口径记录格式参考)

指标 别名 定义 表达式 来源表 过滤条件
销售额 GMV、成交金额 已支付且非测试订单的商品成交金额,不扣除后续退款 SUM(pay_amount) fact_orders pay_status='PAID'is_test=0
订单量 支付订单数 已支付且非测试订单去重数 COUNT(DISTINCT order_id) fact_orders 同上
新客销售额 存在歧义:候选定义为"用户首次支付发生在统计期内"或"用户首次下单发生在统计期内" 需先选定新客定义

"新客销售额"是一个真实会卡住 Agent/分析师的典型歧义案例:两种候选定义会得到不同结果,必须先向业务方确认口径,不能自行假设。遇到类似"首次 X"型指标,先检查是否也存在这种候选定义分叉。

3. Agent 工作流对业务口径的处理原则

来自 sql-requirement-review 等 Skill 协议,是通用的取数口径澄清方法论,不局限于本项目:

  • 需求信息分三类:CONFIRMED(用户明确给出或已批准口径)、DERIVED(可直接推导且不改变指标含义)、UNKNOWN(缺失后会导致不同结果,必须确认)。
  • 迭代需求要先区分 NEW/EXISTING/UNCLEAR 范围;存在历史模块时优先要历史 SQL 或已部署任务,历史实现只能作证据,不能自动升级为正确口径。
  • 只问真正影响结果的问题,并合并相关问题一起问;能靠 DDL/表元数据自己查到的信息不要求用户回答。
  • 检查聚合和重复计算风险:明确一行代表什么、什么去重、是否有一对多关联、是否混淆累计值与期间值。

相关