523 lines
19 KiB
JSON
523 lines
19 KiB
JSON
[
|
||
{
|
||
"id": "snpt_daily_gmv_trend",
|
||
"title": "日GMV趋势",
|
||
"desc": "按日统计GMV与订单量趋势",
|
||
"type": "trend",
|
||
"applicability": {
|
||
"required_columns": [
|
||
"order_date",
|
||
"price",
|
||
"quantity"
|
||
],
|
||
"time_column": "order_date",
|
||
"constraints": {
|
||
"dim_cardinality_hint": null,
|
||
"fk_join_available": false,
|
||
"notes": [
|
||
"GMV=SUM(price*quantity)",
|
||
"请避免选择地址等PII字段"
|
||
]
|
||
}
|
||
},
|
||
"variables": [
|
||
{
|
||
"name": "start_date",
|
||
"type": "date"
|
||
},
|
||
{
|
||
"name": "end_date",
|
||
"type": "date"
|
||
}
|
||
],
|
||
"dialect_sql": {
|
||
"mysql": "SELECT DATE(order_date) AS dt, SUM(price*quantity) AS gmv, COUNT(*) AS orders\nFROM {{table}}\nWHERE DATE(order_date) BETWEEN {{start_date}} AND {{end_date}}\nGROUP BY dt\nORDER BY dt;"
|
||
},
|
||
"business_caliber": "GMV口径:price×quantity;订单量:记录条数;粒度=日。",
|
||
"examples": [
|
||
"近30天GMV趋势",
|
||
"2025Q1每日GMV与订单数"
|
||
]
|
||
},
|
||
{
|
||
"id": "snpt_daily_gmv_ma7",
|
||
"title": "7日GMV均线",
|
||
"desc": "GMV按日与7日滑动平均",
|
||
"type": "trend",
|
||
"applicability": {
|
||
"required_columns": [
|
||
"order_date",
|
||
"price",
|
||
"quantity"
|
||
],
|
||
"time_column": "order_date",
|
||
"constraints": {
|
||
"dim_cardinality_hint": null,
|
||
"fk_join_available": false,
|
||
"notes": [
|
||
"窗口=包含当日的过去7天",
|
||
"若日期有缺口,均线可能偏移"
|
||
]
|
||
}
|
||
},
|
||
"variables": [
|
||
{
|
||
"name": "start_date",
|
||
"type": "date"
|
||
},
|
||
{
|
||
"name": "end_date",
|
||
"type": "date"
|
||
}
|
||
],
|
||
"dialect_sql": {
|
||
"mysql": "WITH d AS (\n SELECT DATE(order_date) AS dt, SUM(price*quantity) AS gmv\n FROM {{table}}\n WHERE DATE(order_date) BETWEEN {{start_date}} AND {{end_date}}\n GROUP BY dt\n)\nSELECT dt,\n gmv,\n AVG(gmv) OVER (ORDER BY dt ROWS BETWEEN 6 PRECEDING AND CURRENT ROW) AS gmv_ma7\nFROM d\nORDER BY dt;"
|
||
},
|
||
"business_caliber": "GMV=price×quantity;窗口=7天(含当日),按自然日排序计算。",
|
||
"examples": [
|
||
"本季度GMV与7日均线",
|
||
"促销期走势平滑对比"
|
||
]
|
||
},
|
||
{
|
||
"id": "snpt_yoy_daily_gmv",
|
||
"title": "GMV同比(日)",
|
||
"desc": "对比去年同日GMV与同比%",
|
||
"type": "ratio",
|
||
"applicability": {
|
||
"required_columns": [
|
||
"order_date",
|
||
"price",
|
||
"quantity"
|
||
],
|
||
"time_column": "order_date",
|
||
"constraints": {
|
||
"dim_cardinality_hint": null,
|
||
"fk_join_available": false,
|
||
"notes": [
|
||
"需要查询窗口覆盖到去年的对应日期",
|
||
"闰年按日期对齐处理"
|
||
]
|
||
}
|
||
},
|
||
"variables": [
|
||
{
|
||
"name": "start_date",
|
||
"type": "date"
|
||
},
|
||
{
|
||
"name": "end_date",
|
||
"type": "date"
|
||
}
|
||
],
|
||
"dialect_sql": {
|
||
"mysql": "WITH cur AS (\n SELECT DATE(order_date) AS dt, SUM(price*quantity) AS gmv\n FROM {{table}}\n WHERE DATE(order_date) BETWEEN {{start_date}} AND {{end_date}}\n GROUP BY dt\n),\nprev AS (\n SELECT DATE(DATE_SUB(order_date, INTERVAL 1 YEAR)) AS dt, SUM(price*quantity) AS gmv_last\n FROM {{table}}\n WHERE DATE(order_date) BETWEEN DATE_SUB({{start_date}}, INTERVAL 1 YEAR) AND DATE_SUB({{end_date}}, INTERVAL 1 YEAR)\n GROUP BY DATE(DATE_SUB(order_date, INTERVAL 1 YEAR))\n)\nSELECT c.dt,\n c.gmv,\n p.gmv_last,\n CASE WHEN p.gmv_last IS NULL OR p.gmv_last=0 THEN NULL ELSE (c.gmv - p.gmv_last)/p.gmv_last END AS yoy\nFROM cur c LEFT JOIN prev p ON c.dt = p.dt\nORDER BY c.dt;"
|
||
},
|
||
"business_caliber": "同比=当日GMV与去年同日GMV之差/去年同日GMV;GMV=price×quantity。",
|
||
"examples": [
|
||
"最近90天GMV同比曲线",
|
||
"节假日同比表现"
|
||
]
|
||
},
|
||
{
|
||
"id": "snpt_topn_category_gmv",
|
||
"title": "类目GMV排行",
|
||
"desc": "按类目统计GMV并取TopN",
|
||
"type": "topn",
|
||
"applicability": {
|
||
"required_columns": [
|
||
"order_date",
|
||
"category",
|
||
"price",
|
||
"quantity"
|
||
],
|
||
"time_column": "order_date",
|
||
"constraints": {
|
||
"dim_cardinality_hint": 6,
|
||
"fk_join_available": false,
|
||
"notes": [
|
||
"类目枚举较少,建议TopN<=6用于展示",
|
||
"可追加订单量与件数"
|
||
]
|
||
}
|
||
},
|
||
"variables": [
|
||
{
|
||
"name": "start_date",
|
||
"type": "date"
|
||
},
|
||
{
|
||
"name": "end_date",
|
||
"type": "date"
|
||
},
|
||
{
|
||
"name": "top_n",
|
||
"type": "int",
|
||
"default": 10
|
||
}
|
||
],
|
||
"dialect_sql": {
|
||
"mysql": "SELECT category,\n SUM(price*quantity) AS gmv,\n COUNT(*) AS orders,\n SUM(quantity) AS qty\nFROM {{table}}\nWHERE DATE(order_date) BETWEEN {{start_date}} AND {{end_date}}\nGROUP BY category\nORDER BY gmv DESC\nLIMIT {{top_n}};"
|
||
},
|
||
"business_caliber": "GMV=price×quantity;统计范围=指定日期内;粒度=类目。",
|
||
"examples": [
|
||
"上月类目Top5",
|
||
"本季度类目GMV结构"
|
||
]
|
||
},
|
||
{
|
||
"id": "snpt_share_channel",
|
||
"title": "渠道GMV占比",
|
||
"desc": "统计各渠道GMV及占比",
|
||
"type": "ratio",
|
||
"applicability": {
|
||
"required_columns": [
|
||
"order_date",
|
||
"channel",
|
||
"price",
|
||
"quantity"
|
||
],
|
||
"time_column": "order_date",
|
||
"constraints": {
|
||
"dim_cardinality_hint": 4,
|
||
"fk_join_available": false,
|
||
"notes": [
|
||
"占比以总GMV为分母;占比之和≈100%",
|
||
"适合饼图/堆叠柱"
|
||
]
|
||
}
|
||
},
|
||
"variables": [
|
||
{
|
||
"name": "start_date",
|
||
"type": "date"
|
||
},
|
||
{
|
||
"name": "end_date",
|
||
"type": "date"
|
||
}
|
||
],
|
||
"dialect_sql": {
|
||
"mysql": "WITH base AS (\n SELECT channel, SUM(price*quantity) AS gmv\n FROM {{table}}\n WHERE DATE(order_date) BETWEEN {{start_date}} AND {{end_date}}\n GROUP BY channel\n), total AS (\n SELECT SUM(gmv) AS tg FROM base\n)\nSELECT b.channel, b.gmv, b.gmv/t.tg AS gmv_share\nFROM base b CROSS JOIN total t\nORDER BY b.gmv DESC;"
|
||
},
|
||
"business_caliber": "渠道GMV占比=渠道GMV/全部渠道GMV;时间范围由参数限定。",
|
||
"examples": [
|
||
"本月各渠道占比",
|
||
"Q1渠道结构对比"
|
||
]
|
||
},
|
||
{
|
||
"id": "snpt_topn_product_gmv",
|
||
"title": "商品GMV排行",
|
||
"desc": "按商品ID统计GMV并取TopN",
|
||
"type": "topn",
|
||
"applicability": {
|
||
"required_columns": [
|
||
"order_date",
|
||
"product_id",
|
||
"price",
|
||
"quantity"
|
||
],
|
||
"time_column": "order_date",
|
||
"constraints": {
|
||
"dim_cardinality_hint": 1000,
|
||
"fk_join_available": true,
|
||
"notes": [
|
||
"product_id基数较高,建议LIMIT<=50",
|
||
"可与商品维表联查名称等属性"
|
||
]
|
||
}
|
||
},
|
||
"variables": [
|
||
{
|
||
"name": "start_date",
|
||
"type": "date"
|
||
},
|
||
{
|
||
"name": "end_date",
|
||
"type": "date"
|
||
},
|
||
{
|
||
"name": "top_n",
|
||
"type": "int",
|
||
"default": 20
|
||
}
|
||
],
|
||
"dialect_sql": {
|
||
"mysql": "SELECT product_id,\n SUM(price*quantity) AS gmv,\n SUM(quantity) AS qty,\n COUNT(*) AS orders\nFROM {{table}}\nWHERE DATE(order_date) BETWEEN {{start_date}} AND {{end_date}}\nGROUP BY product_id\nORDER BY gmv DESC\nLIMIT {{top_n}};"
|
||
},
|
||
"business_caliber": "GMV=price×quantity;粒度=商品ID。",
|
||
"examples": [
|
||
"上周热销商品Top20",
|
||
"年度销量Top10商品"
|
||
]
|
||
},
|
||
{
|
||
"id": "snpt_join_product_dim",
|
||
"title": "商品维表联查",
|
||
"desc": "以product_id关联商品维表或使用纯ID",
|
||
"type": "join",
|
||
"applicability": {
|
||
"required_columns": [
|
||
"product_id"
|
||
],
|
||
"time_column": null,
|
||
"constraints": {
|
||
"dim_cardinality_hint": 1000,
|
||
"fk_join_available": true,
|
||
"notes": [
|
||
"若无维表则保留纯ID版输出",
|
||
"谨慎选择PII字段,勿输出地址类字段"
|
||
]
|
||
}
|
||
},
|
||
"variables": [
|
||
{
|
||
"name": "dim_product",
|
||
"type": "identifier"
|
||
},
|
||
{
|
||
"name": "select_cols",
|
||
"type": "string",
|
||
"default": "f.product_id, f.price, f.quantity"
|
||
}
|
||
],
|
||
"dialect_sql": {
|
||
"mysql": "-- 命名版\nSELECT {{select_cols}}\nFROM {{table}} f\nLEFT JOIN {{dim_product}} d ON f.product_id = d.product_id;\n\n-- 纯ID版\nSELECT product_id, price, quantity FROM {{table}};"
|
||
},
|
||
"business_caliber": "外键:product_id→商品维表主键;度量来源于事实表price与quantity。",
|
||
"examples": [
|
||
"联查商品名称后做TopN",
|
||
"仅用ID进行商品分析"
|
||
]
|
||
},
|
||
{
|
||
"id": "snpt_join_customer_dim",
|
||
"title": "客户维表联查",
|
||
"desc": "以customer_id关联客户维表或使用纯ID",
|
||
"type": "join",
|
||
"applicability": {
|
||
"required_columns": [
|
||
"customer_id"
|
||
],
|
||
"time_column": null,
|
||
"constraints": {
|
||
"dim_cardinality_hint": 2713,
|
||
"fk_join_available": true,
|
||
"notes": [
|
||
"如无维表,可直接按customer_id聚合",
|
||
"避免输出shipping_address/billing_address等PII"
|
||
]
|
||
}
|
||
},
|
||
"variables": [
|
||
{
|
||
"name": "dim_customer",
|
||
"type": "identifier"
|
||
},
|
||
{
|
||
"name": "select_cols",
|
||
"type": "string",
|
||
"default": "c.customer_name, f.customer_id, SUM(f.price*f.quantity) AS gmv"
|
||
}
|
||
],
|
||
"dialect_sql": {
|
||
"mysql": "-- 命名版\nSELECT {{select_cols}}\nFROM {{table}} f\nLEFT JOIN {{dim_customer}} c ON f.customer_id = c.customer_id\nGROUP BY c.customer_name, f.customer_id;\n\n-- 纯ID版\nSELECT customer_id, SUM(price*quantity) AS gmv\nFROM {{table}}\nGROUP BY customer_id;"
|
||
},
|
||
"business_caliber": "外键:customer_id→客户维表主键;GMV=price×quantity。",
|
||
"examples": [
|
||
"客户分群GMV",
|
||
"重点客户消费额排行"
|
||
]
|
||
},
|
||
{
|
||
"id": "snpt_quality_dup_order",
|
||
"title": "主键重复检查",
|
||
"desc": "检查order_id唯一性并抽样输出",
|
||
"type": "quality",
|
||
"applicability": {
|
||
"required_columns": [
|
||
"order_id"
|
||
],
|
||
"time_column": null,
|
||
"constraints": {
|
||
"dim_cardinality_hint": 10000,
|
||
"fk_join_available": false,
|
||
"notes": [
|
||
"画像显示order_id应唯一;若结果非空为异常"
|
||
]
|
||
}
|
||
},
|
||
"variables": [
|
||
{
|
||
"name": "limit_sample",
|
||
"type": "int",
|
||
"default": 50
|
||
}
|
||
],
|
||
"dialect_sql": {
|
||
"mysql": "WITH d AS (\n SELECT order_id, COUNT(*) AS cnt\n FROM {{table}}\n GROUP BY order_id\n HAVING COUNT(*)>1\n)\nSELECT * FROM d LIMIT {{limit_sample}};"
|
||
},
|
||
"business_caliber": "主键口径:order_id全表唯一;用于数据质量预警与排查。",
|
||
"examples": [
|
||
"是否存在重复订单?",
|
||
"查看重复订单样本"
|
||
]
|
||
},
|
||
{
|
||
"id": "snpt_quality_price_outlier",
|
||
"title": "价格异常检测",
|
||
"desc": "基于当日均值±3σ识别异常价",
|
||
"type": "quality",
|
||
"applicability": {
|
||
"required_columns": [
|
||
"order_date",
|
||
"price"
|
||
],
|
||
"time_column": "order_date",
|
||
"constraints": {
|
||
"dim_cardinality_hint": null,
|
||
"fk_join_available": false,
|
||
"notes": [
|
||
"仅质量预警,不直接代表业务错误",
|
||
"当天样本过少时波动较大"
|
||
]
|
||
}
|
||
},
|
||
"variables": [
|
||
{
|
||
"name": "start_date",
|
||
"type": "date"
|
||
},
|
||
{
|
||
"name": "end_date",
|
||
"type": "date"
|
||
},
|
||
{
|
||
"name": "limit_sample",
|
||
"type": "int",
|
||
"default": 100
|
||
}
|
||
],
|
||
"dialect_sql": {
|
||
"mysql": "WITH stats AS (\n SELECT DATE(order_date) AS dt, AVG(price) AS mu, STDDEV_POP(price) AS sigma\n FROM {{table}}\n WHERE DATE(order_date) BETWEEN {{start_date}} AND {{end_date}}\n GROUP BY dt\n)\nSELECT f.*\nFROM {{table}} f\nJOIN stats s ON DATE(f.order_date)=s.dt\nWHERE (f.price > s.mu + 3*s.sigma OR f.price < s.mu - 3*s.sigma)\nLIMIT {{limit_sample}};"
|
||
},
|
||
"business_caliber": "异常定义:价格超出当日均值±3×标准差(总体标准差)。",
|
||
"examples": [
|
||
"近30天价格异常样本",
|
||
"促销期异常价监控"
|
||
]
|
||
},
|
||
{
|
||
"id": "snpt_sample_recent_orders",
|
||
"title": "近期明细抽样",
|
||
"desc": "抽样查看近期订单核心字段",
|
||
"type": "sample",
|
||
"applicability": {
|
||
"required_columns": [
|
||
"order_date",
|
||
"order_id",
|
||
"customer_id",
|
||
"product_id",
|
||
"category",
|
||
"price",
|
||
"quantity",
|
||
"channel",
|
||
"payment_method",
|
||
"delivery_status"
|
||
],
|
||
"time_column": "order_date",
|
||
"constraints": {
|
||
"dim_cardinality_hint": null,
|
||
"fk_join_available": true,
|
||
"notes": [
|
||
"为保护隐私,不展示shipping_address与billing_address",
|
||
"仅用于人工核验"
|
||
]
|
||
}
|
||
},
|
||
"variables": [
|
||
{
|
||
"name": "start_date",
|
||
"type": "date"
|
||
},
|
||
{
|
||
"name": "end_date",
|
||
"type": "date"
|
||
},
|
||
{
|
||
"name": "limit_rows",
|
||
"type": "int",
|
||
"default": 100
|
||
}
|
||
],
|
||
"dialect_sql": {
|
||
"mysql": "SELECT DATE(order_date) AS dt,\n order_id, customer_id, product_id, category,\n price, quantity, channel, payment_method, delivery_status\nFROM {{table}}\nWHERE DATE(order_date) BETWEEN {{start_date}} AND {{end_date}}\nORDER BY dt DESC\nLIMIT {{limit_rows}};"
|
||
},
|
||
"business_caliber": "明细抽样用于数据核验;不输出PII地址信息。",
|
||
"examples": [
|
||
"抽样查看上周订单",
|
||
"核对节假日订单明细"
|
||
]
|
||
},
|
||
{
|
||
"id": "snpt_filter_paid_delivered",
|
||
"title": "支付已送达筛选",
|
||
"desc": "过滤支付方式为信用卡且配送状态为已送达",
|
||
"type": "sample",
|
||
"applicability": {
|
||
"required_columns": [
|
||
"payment_method",
|
||
"delivery_status"
|
||
],
|
||
"time_column": null,
|
||
"constraints": {
|
||
"dim_cardinality_hint": 5,
|
||
"fk_join_available": false,
|
||
"notes": [
|
||
"此片段为WHERE条件模板,可拼接到任意查询",
|
||
"delivery_status枚举包含Delivered/Pending/Returned/Shipped"
|
||
]
|
||
}
|
||
},
|
||
"variables": [],
|
||
"dialect_sql": {
|
||
"mysql": "WHERE payment_method = 'Credit Card' AND delivery_status = 'Delivered'"
|
||
},
|
||
"business_caliber": "口径:支付渠道=信用卡;物流状态=已送达(Delivered)。可与时间或维度条件叠加。",
|
||
"examples": [
|
||
"筛选信用卡已送达订单",
|
||
"在TopN商品中仅看已送达信用卡订单"
|
||
]
|
||
},
|
||
{
|
||
"id": "snpt_filter_device_channel",
|
||
"title": "设备渠道筛选",
|
||
"desc": "按设备类型与渠道过滤分析范围",
|
||
"type": "sample",
|
||
"applicability": {
|
||
"required_columns": [
|
||
"device_type",
|
||
"channel"
|
||
],
|
||
"time_column": null,
|
||
"constraints": {
|
||
"dim_cardinality_hint": 7,
|
||
"fk_join_available": false,
|
||
"notes": [
|
||
"device_type枚举:Desktop/Mobile/Tablet",
|
||
"channel枚举:Email/Organic/Paid Search/Social"
|
||
]
|
||
}
|
||
},
|
||
"variables": [],
|
||
"dialect_sql": {
|
||
"mysql": "WHERE device_type IN ('Mobile','Desktop') AND channel IN ('Paid Search','Social')"
|
||
},
|
||
"business_caliber": "限制分析在指定设备与渠道;可直接作为WHERE子句片段复用。",
|
||
"examples": [
|
||
"仅看移动端付费渠道GMV",
|
||
"桌面+社媒渠道订单明细"
|
||
]
|
||
}
|
||
] |