|
@@ -26,7 +26,7 @@
|
|
|
|
|
|
|
|
**收益**:schema 不绑定标签维度组合;新增维度(如 channel / device 等)只需新 tag_code 命名,**不需 ALTER**。
|
|
**收益**:schema 不绑定标签维度组合;新增维度(如 channel / device 等)只需新 tag_code 命名,**不需 ALTER**。
|
|
|
|
|
|
|
|
-**代价**:维度切片需 `tag_code LIKE 'usr_pref_trade_%_amt_30d'` 模式匹配;数值标签聚合 / 排序需 `CAST(tag_value AS DECIMAL)`。
|
|
|
|
|
|
|
+**代价**:维度切片需 `tag_code LIKE 'usr_trade_%_amt_30d'` 模式匹配;数值标签聚合 / 排序需 `CAST(tag_value AS DECIMAL)`。
|
|
|
|
|
|
|
|
### 1.3 表分类:_d 日更 / _o 一次性凝固
|
|
### 1.3 表分类:_d 日更 / _o 一次性凝固
|
|
|
|
|
|
|
@@ -34,8 +34,8 @@
|
|
|
|
|
|
|
|
| 后缀 | 写入策略 | 含哪些标签 |
|
|
| 后缀 | 写入策略 | 含哪些标签 |
|
|
|
|---|---|---|
|
|
|---|---|---|
|
|
|
-| `_d` | 每天 INSERT OVERWRITE 单分区 dt=T-1 | 属性 snap + 偏好滚动窗口(30d)+ 偏好当年累计(y{当年})|
|
|
|
|
|
-| `_o` | 一次性写入永远不动 | 偏好往年总额(y{往年},跨年凝固时新建一张)|
|
|
|
|
|
|
|
+| `_d` | 每天 INSERT OVERWRITE 单分区 dt=T-1 | 属性 snap + 消费明细滚动窗口(30d)+ 消费明细当年累计(y{当年})|
|
|
|
|
|
+| `_o` | 一次性写入永远不动 | 消费明细往年总额(y{往年},同表多 dt 分区凝固,不新建表)|
|
|
|
|
|
|
|
|
**为什么分两类**:
|
|
**为什么分两类**:
|
|
|
|
|
|
|
@@ -51,7 +51,7 @@
|
|
|
|
|
|
|
|
### 1.5 调度依赖
|
|
### 1.5 调度依赖
|
|
|
|
|
|
|
|
-- `_d` sche:DS DEPENDENT 同 dt `dim_usr_user_ful_d`(属性源)+ 同 dt `dws_usr_user_trade_1d`(偏好源)
|
|
|
|
|
|
|
+- `_d` sche:DS DEPENDENT 同 dt `dim_usr_user_ful_d`(属性源)+ 同 dt `dwd_trd_order_pay_apd_d`(消费明细源,1 期跨层下钻 kb/93 ADR-10)
|
|
|
- `_o`:不挂日调度,手跑 once
|
|
- `_o`:不挂日调度,手跑 once
|
|
|
|
|
|
|
|
---
|
|
---
|
|
@@ -60,7 +60,7 @@
|
|
|
|
|
|
|
|
### 2.1 用途
|
|
### 2.1 用途
|
|
|
|
|
|
|
|
-承载 1 期用户标签的日更部分:7 个属性 + 16 品类 × 4 偏好窗口(30d 金额/次数 + y{当年} 金额/次数)。
|
|
|
|
|
|
|
+承载 1 期用户标签的日更部分:7 个属性 + 16 品类 × 4 消费明细统计窗口(30d 金额/次数 + y{当年} 金额/次数,1 期拼团粒度 `order_type='group'`)。
|
|
|
|
|
|
|
|
### 2.2 粒度
|
|
### 2.2 粒度
|
|
|
|
|
|
|
@@ -69,8 +69,8 @@
|
|
|
### 2.3 来源
|
|
### 2.3 来源
|
|
|
|
|
|
|
|
- 属性 7 个 ← `dim_usr_user_ful_d WHERE dt='${dt}'`
|
|
- 属性 7 个 ← `dim_usr_user_ful_d WHERE dt='${dt}'`
|
|
|
-- 偏好 30d 金额/次数 ← `dws_usr_user_trade_1d WHERE dt BETWEEN $[yyyyMMdd-30] AND ${dt}` 滚动聚合
|
|
|
|
|
-- 偏好 y{当年} 金额/次数 ← `dws_usr_user_trade_1d WHERE dt BETWEEN '{当年}0101' AND ${dt}` 滚动覆盖(1 期当年 = 2026)
|
|
|
|
|
|
|
+- 消费明细 30d 金额/次数 ← `dwd_trd_order_pay_apd_d WHERE dt BETWEEN $[yyyyMMdd-30] AND ${dt} AND order_type='group' AND category IS NOT NULL` 跨层下钻按 (user_id, category) 重 GROUP BY(kb/93 ADR-10)
|
|
|
|
|
+- 消费明细 y{当年} 金额/次数 ← `dwd_trd_order_pay_apd_d WHERE dt BETWEEN '{当年}0101' AND ${dt} AND order_type='group' AND category IS NOT NULL` 同口径滚动覆盖(1 期当年 = 2026)
|
|
|
|
|
|
|
|
### 2.4 tag_code 清单
|
|
### 2.4 tag_code 清单
|
|
|
|
|
|
|
@@ -86,20 +86,22 @@
|
|
|
| `usr_birth_month` | 生日年月 | dim_usr_user.birthday_cert 派生(未实名 NULL)| `yyyyMM` |
|
|
| `usr_birth_month` | 生日年月 | dim_usr_user.birthday_cert 派生(未实名 NULL)| `yyyyMM` |
|
|
|
| `usr_generation` | 出生世代 | dim_usr_user.birthday_cert 派生(按 §6 切片)| 世代名("90后" / "00后" 等)|
|
|
| `usr_generation` | 出生世代 | dim_usr_user.birthday_cert 派生(按 §6 切片)| 世代名("90后" / "00后" 等)|
|
|
|
|
|
|
|
|
-#### 偏好类(tag_type=stat,16 品类 × 4 窗口 = 64 个)
|
|
|
|
|
|
|
+#### 消费明细统计类(tag_type=stat,16 品类 × 4 窗口 = 64 个,1 期拼团粒度)
|
|
|
|
|
|
|
|
| tag_code 模板 | 描述 | 来源 |
|
|
| tag_code 模板 | 描述 | 来源 |
|
|
|
|---|---|---|
|
|
|---|---|---|
|
|
|
-| `usr_pref_trade_{category}_amt_30d` | 某品类近 30 天金额 | `SUM(pay_amt_cny)` WHERE dt IN [T-30, T-1] |
|
|
|
|
|
-| `usr_pref_trade_{category}_cnt_30d` | 某品类近 30 天次数 | `SUM(pay_order_cnt)` 同口径 |
|
|
|
|
|
-| `usr_pref_trade_{category}_amt_y2026` | 某品类 26 年累计金额 | `SUM(pay_amt_cny)` WHERE dt IN [20260101, T-1](每天滚动覆盖)|
|
|
|
|
|
-| `usr_pref_trade_{category}_cnt_y2026` | 某品类 26 年累计次数 | `SUM(pay_order_cnt)` 同口径 |
|
|
|
|
|
|
|
+| `usr_trade_{category}_amt_30d` | 某品类近 30 天金额 | `SUM(pay_amt_cny)` from dwd WHERE dt IN [T-30, T-1] + order_type='group' |
|
|
|
|
|
+| `usr_trade_{category}_cnt_30d` | 某品类近 30 天次数 | `COUNT(DISTINCT order_id)` 同口径 |
|
|
|
|
|
+| `usr_trade_{category}_amt_y2026` | 某品类 26 年累计金额 | `SUM(pay_amt_cny)` from dwd WHERE dt IN [20260101, T-1] + order_type='group'(每天滚动覆盖)|
|
|
|
|
|
+| `usr_trade_{category}_cnt_y2026` | 某品类 26 年累计次数 | `COUNT(DISTINCT order_id)` 同口径 |
|
|
|
|
|
|
|
|
`{category}` 是 16 品类占位(kb/28 §3.2 DIM 已清洗):Basketball / Soccer / MLB / TCG / PTCG / 影视收藏 / 综合体育 / 综合收藏 / NFL / NHL / UFC / WWE / Tennis / Esports / F1 / Golf。
|
|
`{category}` 是 16 品类占位(kb/28 §3.2 DIM 已清洗):Basketball / Soccer / MLB / TCG / PTCG / 影视收藏 / 综合体育 / 综合收藏 / NFL / NHL / UFC / WWE / Tennis / Esports / F1 / Golf。
|
|
|
|
|
|
|
|
-**金额口径**:`SUM(pay_amt_cny)` = Net Revenue 偏好金额(A3 锁 1 期不扣减退款;GMV = `payable_amt_cny`,偏好 amt 用 pay_amt_cny,见 kb/27 §2.5 / kb/29 §2.5)。
|
|
|
|
|
|
|
+**金额口径**:`SUM(pay_amt_cny)` = Net Revenue(A3 锁 1 期不扣减退款;GMV = `payable_amt_cny`,统计 amt 用 pay_amt_cny,见 kb/27 §2.5 / kb/29 §2.5)。
|
|
|
|
|
|
|
|
-**次数口径**:`SUM(pay_order_cnt)` = `COUNT(DISTINCT order_id)`(A2 锁定,1 期不用份数)。
|
|
|
|
|
|
|
+**次数口径**:`COUNT(DISTINCT order_id)`(A2 锁定,1 期不用份数;dwd 订单粒度需 DISTINCT 而非 SUM)。
|
|
|
|
|
+
|
|
|
|
|
+> 详细 tag_code 字典 + 业务价值 + 圈选示例见 [kb/34-标签字典.md](34-标签字典.md)。
|
|
|
|
|
|
|
|
### 2.5 字段表
|
|
### 2.5 字段表
|
|
|
|
|
|
|
@@ -125,16 +127,16 @@
|
|
|
|
|
|
|
|
### 3.3 来源
|
|
### 3.3 来源
|
|
|
|
|
|
|
|
-`dws_usr_user_trade_1d WHERE dt BETWEEN '{凝固年}0101' AND '{凝固年}1231'` 一次性聚合。1 期凝固 25 年用 `[20250101, 20251231]`。
|
|
|
|
|
|
|
+`dwd_trd_order_pay_apd_d WHERE dt BETWEEN '{凝固年}0101' AND '{凝固年}1231' AND order_type='group' AND category IS NOT NULL` 一次性跨层下钻聚合(kb/93 ADR-10)。1 期凝固 25 年用 `[20250101, 20251231]`。
|
|
|
|
|
|
|
|
### 3.4 tag_code 清单(tag_type=stat,每凝固年 32 个)
|
|
### 3.4 tag_code 清单(tag_type=stat,每凝固年 32 个)
|
|
|
|
|
|
|
|
| tag_code 模板 | 描述 | 来源 |
|
|
| tag_code 模板 | 描述 | 来源 |
|
|
|
|---|---|---|
|
|
|---|---|---|
|
|
|
-| `usr_pref_trade_{category}_amt_y{凝固年}` | 某品类该年总额 | `SUM(pay_amt_cny)` WHERE dt IN [该年 01-01, 12-31] |
|
|
|
|
|
-| `usr_pref_trade_{category}_cnt_y{凝固年}` | 某品类该年总次数 | `SUM(pay_order_cnt)` 同口径 |
|
|
|
|
|
|
|
+| `usr_trade_{category}_amt_y{凝固年}` | 某品类该年总额 | `SUM(pay_amt_cny)` from dwd WHERE dt IN [该年 01-01, 12-31] + order_type='group' |
|
|
|
|
|
+| `usr_trade_{category}_cnt_y{凝固年}` | 某品类该年总次数 | `COUNT(DISTINCT order_id)` 同口径 |
|
|
|
|
|
|
|
|
-`{category}` 同 §2.4 16 品类。1 期 `{凝固年}=2025`,落 `usr_pref_trade_basketball_amt_y2025` 等 32 个 tag_code。
|
|
|
|
|
|
|
+`{category}` 同 §2.4 16 品类。1 期 `{凝固年}=2025`,落 `usr_trade_Basketball_amt_y2025` 等 32 个 tag_code。
|
|
|
|
|
|
|
|
### 3.5 dt 锚点 + 写入
|
|
### 3.5 dt 锚点 + 写入
|
|
|
|
|
|
|
@@ -154,9 +156,11 @@
|
|
|
| 类型 | 模板 | 示例 |
|
|
| 类型 | 模板 | 示例 |
|
|
|
|---|---|---|
|
|
|---|---|---|
|
|
|
| 属性 | `usr_{属性名}` | `usr_sex` / `usr_city` / `usr_generation` |
|
|
| 属性 | `usr_{属性名}` | `usr_sex` / `usr_city` / `usr_generation` |
|
|
|
-| 偏好 | `usr_pref_{主题}_{category}_{metric}_{window}` | `usr_pref_trade_basketball_amt_30d` / `usr_pref_trade_mlb_cnt_y2025` |
|
|
|
|
|
|
|
+| 消费明细统计 | `usr_{主题}_{category}_{metric}_{window}` | `usr_trade_Basketball_amt_30d` / `usr_trade_MLB_cnt_y2025` |
|
|
|
|
|
+
|
|
|
|
|
+**所有维度(品类 / 窗口 / 度量)全部 encode 到 tag_code**。下游按维度切片用 `tag_code LIKE 'usr_trade_%_amt_30d'` 等模式匹配。
|
|
|
|
|
|
|
|
-**所有维度(品类 / 窗口 / 度量)全部 encode 到 tag_code**。下游按维度切片用 `tag_code LIKE 'usr_pref_trade_%_amt_30d'` 等模式匹配。
|
|
|
|
|
|
|
+> 详细字段说明 + 业务价值 + 示例值见 [kb/34-标签字典.md](34-标签字典.md)。
|
|
|
|
|
|
|
|
`{window}` 取值约定:
|
|
`{window}` 取值约定:
|
|
|
|
|
|