更新数据库文档 20260201-2
This commit is contained in:
@@ -174,7 +174,8 @@ def build_recording_client(
|
||||
tz = ZoneInfo(tz_name)
|
||||
ts = datetime.now(tz).strftime("%Y%m%d-%H%M%S")
|
||||
fetch_root = _cfg_get(cfg, "pipeline.fetch_root") or _cfg_get(cfg, "io.export_root") or "export/JSON"
|
||||
output_dir = Path(fetch_root) / f"{str(task_code).upper()}-{run_id}-{ts}"
|
||||
task_upper = str(task_code).upper()
|
||||
output_dir = Path(fetch_root) / task_upper / f"{task_upper}-{run_id}-{ts}"
|
||||
|
||||
return RecordingAPIClient(
|
||||
base_client=base_client,
|
||||
|
||||
@@ -2,7 +2,6 @@
|
||||
|
||||
> 生成时间:2026-01-28
|
||||
|
||||
|
||||
## 表信息
|
||||
|
||||
| 属性 | 值 |
|
||||
@@ -69,6 +68,21 @@
|
||||
|
||||
## 使用说明
|
||||
|
||||
**版本与最新值**
|
||||
本表为 SCD2 维度表,版本字段:scd2_start_time / scd2_end_time / scd2_is_current / scd2_version。
|
||||
|
||||
- 最新版本:scd2_is_current = 1
|
||||
- 按业务主键取最新:按 scd2_start_time 倒序
|
||||
|
||||
```sql
|
||||
-- 取某业务主键的最新版本
|
||||
SELECT *
|
||||
FROM billiards_dwd.dim_assistant_ex
|
||||
WHERE assistant_id = <value>
|
||||
ORDER BY scd2_start_time DESC
|
||||
LIMIT 1;
|
||||
```
|
||||
**使用示例**
|
||||
```sql
|
||||
-- 关联主表与扩展表
|
||||
SELECT m.*, e.*
|
||||
|
||||
@@ -2,7 +2,6 @@
|
||||
|
||||
> 生成时间:2026-01-28
|
||||
|
||||
|
||||
## 表信息
|
||||
|
||||
| 属性 | 值 |
|
||||
@@ -53,6 +52,21 @@
|
||||
|
||||
## 使用说明
|
||||
|
||||
**版本与最新值**
|
||||
本表为 SCD2 维度表,版本字段:scd2_start_time / scd2_end_time / scd2_is_current / scd2_version。
|
||||
|
||||
- 最新版本:scd2_is_current = 1
|
||||
- 按业务主键取最新:按 scd2_start_time 倒序
|
||||
|
||||
```sql
|
||||
-- 取某业务主键的最新版本
|
||||
SELECT *
|
||||
FROM billiards_dwd.dim_groupbuy_package_ex
|
||||
WHERE groupbuy_package_id = <value>
|
||||
ORDER BY scd2_start_time DESC
|
||||
LIMIT 1;
|
||||
```
|
||||
**使用示例**
|
||||
```sql
|
||||
-- 关联主表与扩展表
|
||||
SELECT m.package_name, m.duration_seconds, e.start_clock, e.end_clock, e.effective_status
|
||||
|
||||
@@ -2,7 +2,6 @@
|
||||
|
||||
> 生成时间:2026-01-28
|
||||
|
||||
|
||||
## 表信息
|
||||
|
||||
| 属性 | 值 |
|
||||
@@ -77,6 +76,21 @@
|
||||
|
||||
## 使用说明
|
||||
|
||||
**版本与最新值**
|
||||
本表为 SCD2 维度表,版本字段:scd2_start_time / scd2_end_time / scd2_is_current / scd2_version。
|
||||
|
||||
- 最新版本:scd2_is_current = 1
|
||||
- 按业务主键取最新:按 scd2_start_time 倒序
|
||||
|
||||
```sql
|
||||
-- 取某业务主键的最新版本
|
||||
SELECT *
|
||||
FROM billiards_dwd.dim_member_card_account_ex
|
||||
WHERE member_card_id = <value>
|
||||
ORDER BY scd2_start_time DESC
|
||||
LIMIT 1;
|
||||
```
|
||||
**使用示例**
|
||||
```sql
|
||||
-- 关联查询卡片及折扣配置
|
||||
SELECT
|
||||
|
||||
@@ -2,7 +2,6 @@
|
||||
|
||||
> 生成时间:2026-01-28
|
||||
|
||||
|
||||
## 表信息
|
||||
|
||||
| 属性 | 值 |
|
||||
@@ -40,6 +39,21 @@
|
||||
|
||||
## 使用说明
|
||||
|
||||
**版本与最新值**
|
||||
本表为 SCD2 维度表,版本字段:scd2_start_time / scd2_end_time / scd2_is_current / scd2_version。
|
||||
|
||||
- 最新版本:scd2_is_current = 1
|
||||
- 按业务主键取最新:按 scd2_start_time 倒序
|
||||
|
||||
```sql
|
||||
-- 取某业务主键的最新版本
|
||||
SELECT *
|
||||
FROM billiards_dwd.dim_member_ex
|
||||
WHERE member_id = <value>
|
||||
ORDER BY scd2_start_time DESC
|
||||
LIMIT 1;
|
||||
```
|
||||
**使用示例**
|
||||
```sql
|
||||
-- 关联主表与扩展表
|
||||
SELECT m.*, e.point, e.growth_value, e.status
|
||||
|
||||
@@ -2,7 +2,6 @@
|
||||
|
||||
> 生成时间:2026-01-28
|
||||
|
||||
|
||||
## 表信息
|
||||
|
||||
| 属性 | 值 |
|
||||
@@ -46,6 +45,21 @@
|
||||
|
||||
## 使用说明
|
||||
|
||||
**版本与最新值**
|
||||
本表为 SCD2 维度表,版本字段:scd2_start_time / scd2_end_time / scd2_is_current / scd2_version。
|
||||
|
||||
- 最新版本:scd2_is_current = 1
|
||||
- 按业务主键取最新:按 scd2_start_time 倒序
|
||||
|
||||
```sql
|
||||
-- 取某业务主键的最新版本
|
||||
SELECT *
|
||||
FROM billiards_dwd.dim_site_ex
|
||||
WHERE site_id = <value>
|
||||
ORDER BY scd2_start_time DESC
|
||||
LIMIT 1;
|
||||
```
|
||||
**使用示例**
|
||||
```sql
|
||||
-- 关联主表与扩展表
|
||||
SELECT m.*, e.*
|
||||
|
||||
@@ -2,7 +2,6 @@
|
||||
|
||||
> 生成时间:2026-01-28
|
||||
|
||||
|
||||
## 表信息
|
||||
|
||||
| 属性 | 值 |
|
||||
@@ -51,6 +50,21 @@
|
||||
|
||||
## 使用说明
|
||||
|
||||
**版本与最新值**
|
||||
本表为 SCD2 维度表,版本字段:scd2_start_time / scd2_end_time / scd2_is_current / scd2_version。
|
||||
|
||||
- 最新版本:scd2_is_current = 1
|
||||
- 按业务主键取最新:按 scd2_start_time 倒序
|
||||
|
||||
```sql
|
||||
-- 取某业务主键的最新版本
|
||||
SELECT *
|
||||
FROM billiards_dwd.dim_store_goods_ex
|
||||
WHERE site_goods_id = <value>
|
||||
ORDER BY scd2_start_time DESC
|
||||
LIMIT 1;
|
||||
```
|
||||
**使用示例**
|
||||
```sql
|
||||
-- 关联主表与扩展表
|
||||
SELECT m.goods_name, m.sale_price, m.sale_qty, e.unit, e.stock_qty, e.cost_price
|
||||
|
||||
@@ -2,7 +2,6 @@
|
||||
|
||||
> 生成时间:2026-01-28
|
||||
|
||||
|
||||
## 表信息
|
||||
|
||||
| 属性 | 值 |
|
||||
@@ -39,6 +38,21 @@
|
||||
|
||||
## 使用说明
|
||||
|
||||
**版本与最新值**
|
||||
本表为 SCD2 维度表,版本字段:scd2_start_time / scd2_end_time / scd2_is_current / scd2_version。
|
||||
|
||||
- 最新版本:scd2_is_current = 1
|
||||
- 按业务主键取最新:按 scd2_start_time 倒序
|
||||
|
||||
```sql
|
||||
-- 取某业务主键的最新版本
|
||||
SELECT *
|
||||
FROM billiards_dwd.dim_table_ex
|
||||
WHERE table_id = <value>
|
||||
ORDER BY scd2_start_time DESC
|
||||
LIMIT 1;
|
||||
```
|
||||
**使用示例**
|
||||
```sql
|
||||
-- 关联主表与扩展表
|
||||
SELECT m.table_name, m.site_table_area_name, e.show_status, e.table_status
|
||||
|
||||
@@ -2,7 +2,6 @@
|
||||
|
||||
> 生成时间:2026-01-28
|
||||
|
||||
|
||||
## 表信息
|
||||
|
||||
| 属性 | 值 |
|
||||
@@ -43,6 +42,21 @@
|
||||
|
||||
## 使用说明
|
||||
|
||||
**版本与最新值**
|
||||
本表为 SCD2 维度表,版本字段:scd2_start_time / scd2_end_time / scd2_is_current / scd2_version。
|
||||
|
||||
- 最新版本:scd2_is_current = 1
|
||||
- 按业务主键取最新:按 scd2_start_time 倒序
|
||||
|
||||
```sql
|
||||
-- 取某业务主键的最新版本
|
||||
SELECT *
|
||||
FROM billiards_dwd.dim_tenant_goods_ex
|
||||
WHERE tenant_goods_id = <value>
|
||||
ORDER BY scd2_start_time DESC
|
||||
LIMIT 1;
|
||||
```
|
||||
**使用示例**
|
||||
```sql
|
||||
-- 关联主表与扩展表
|
||||
SELECT m.goods_name, m.market_price, e.cost_price, e.min_discount_price
|
||||
|
||||
@@ -2,7 +2,6 @@
|
||||
|
||||
> 生成时间:2026-01-28
|
||||
|
||||
|
||||
## 表信息
|
||||
|
||||
| 属性 | 值 |
|
||||
@@ -51,6 +50,19 @@
|
||||
|
||||
## 使用说明
|
||||
|
||||
**版本与最新值**
|
||||
本表为事实表,无 SCD2 版本字段。
|
||||
|
||||
- 可用时间字段:ledger_start_time, ledger_end_time, composite_grade_time
|
||||
|
||||
```sql
|
||||
-- 取最新一条(按时间字段倒序)
|
||||
SELECT *
|
||||
FROM billiards_dwd.dwd_assistant_service_log_ex
|
||||
ORDER BY ledger_start_time DESC NULLS LAST
|
||||
LIMIT 1;
|
||||
```
|
||||
**使用示例**
|
||||
```sql
|
||||
-- 关联主表与扩展表
|
||||
SELECT m.nickname, m.ledger_amount, e.table_name, e.assistant_name, e.grade_status
|
||||
|
||||
@@ -2,7 +2,6 @@
|
||||
|
||||
> 生成时间:2026-01-28
|
||||
|
||||
|
||||
## 表信息
|
||||
|
||||
| 属性 | 值 |
|
||||
@@ -46,4 +45,18 @@
|
||||
|
||||
## 使用说明
|
||||
|
||||
**版本与最新值**
|
||||
本表为事实表,无 SCD2 版本字段。
|
||||
|
||||
- 主表可用时间字段:create_time
|
||||
|
||||
```sql
|
||||
-- 取最新一条(按主表时间字段)
|
||||
SELECT e.*
|
||||
FROM billiards_dwd.dwd_assistant_trash_event m
|
||||
JOIN billiards_dwd.dwd_assistant_trash_event_ex e ON m.assistant_trash_event_id = e.assistant_trash_event_id
|
||||
ORDER BY m.create_time DESC NULLS LAST
|
||||
LIMIT 1;
|
||||
```
|
||||
**使用示例**
|
||||
与主表 `dwd_assistant_trash_event` 通过 `assistant_trash_event_id` 关联,提供台桌和台区名称信息。
|
||||
|
||||
@@ -2,7 +2,6 @@
|
||||
|
||||
> 生成时间:2026-01-28
|
||||
|
||||
|
||||
## 表信息
|
||||
|
||||
| 属性 | 值 |
|
||||
@@ -59,4 +58,18 @@
|
||||
|
||||
## 使用说明
|
||||
|
||||
**版本与最新值**
|
||||
本表为事实表,无 SCD2 版本字段。
|
||||
|
||||
- 主表可用时间字段:create_time
|
||||
|
||||
```sql
|
||||
-- 取最新一条(按主表时间字段)
|
||||
SELECT e.*
|
||||
FROM billiards_dwd.dwd_groupbuy_redemption m
|
||||
JOIN billiards_dwd.dwd_groupbuy_redemption_ex e ON m.redemption_id = e.redemption_id
|
||||
ORDER BY m.create_time DESC NULLS LAST
|
||||
LIMIT 1;
|
||||
```
|
||||
**使用示例**
|
||||
与主表 `dwd_groupbuy_redemption` 通过 `redemption_id` 关联,提供门店、台桌名称、操作员等扩展信息。
|
||||
|
||||
@@ -2,7 +2,6 @@
|
||||
|
||||
> 生成时间:2026-01-28
|
||||
|
||||
|
||||
## 表信息
|
||||
|
||||
| 属性 | 值 |
|
||||
@@ -46,4 +45,18 @@
|
||||
|
||||
## 使用说明
|
||||
|
||||
**版本与最新值**
|
||||
本表为事实表,无 SCD2 版本字段。
|
||||
|
||||
- 主表可用时间字段:change_time
|
||||
|
||||
```sql
|
||||
-- 取最新一条(按主表时间字段)
|
||||
SELECT e.*
|
||||
FROM billiards_dwd.dwd_member_balance_change m
|
||||
JOIN billiards_dwd.dwd_member_balance_change_ex e ON m.balance_change_id = e.balance_change_id
|
||||
ORDER BY m.change_time DESC NULLS LAST
|
||||
LIMIT 1;
|
||||
```
|
||||
**使用示例**
|
||||
与主表 `dwd_member_balance_change` 通过 `balance_change_id` 关联,提供操作员和门店名称等扩展信息。
|
||||
|
||||
@@ -2,7 +2,6 @@
|
||||
|
||||
> 生成时间:2026-01-28
|
||||
|
||||
|
||||
## 表信息
|
||||
|
||||
| 属性 | 值 |
|
||||
@@ -42,6 +41,19 @@
|
||||
|
||||
## 使用说明
|
||||
|
||||
与主表 `dwd_platform_coupon_redemption` 通过 `platform_coupon_redemption_id` 关联,提供操作员等扩展信息。
|
||||
**版本与最新值**
|
||||
本表为事实表,无 SCD2 版本字段。
|
||||
|
||||
- 主表可用时间字段:coupon_free_time, create_time, consume_time
|
||||
|
||||
```sql
|
||||
-- 取最新一条(按主表时间字段)
|
||||
SELECT e.*
|
||||
FROM billiards_dwd.dwd_platform_coupon_redemption m
|
||||
JOIN billiards_dwd.dwd_platform_coupon_redemption_ex e ON m.platform_coupon_redemption_id = e.platform_coupon_redemption_id
|
||||
ORDER BY m.create_time DESC NULLS LAST
|
||||
LIMIT 1;
|
||||
```
|
||||
**使用示例**
|
||||
与主表 `dwd_platform_coupon_redemption` 通过 `platform_coupon_redemption_id` 关联,提供操作员等扩展信息。
|
||||
**注意**: `coupon_remark` 字段在抖音渠道的核销记录中包含核验信息。
|
||||
|
||||
@@ -2,7 +2,6 @@
|
||||
|
||||
> 生成时间:2026-01-28
|
||||
|
||||
|
||||
## 表信息
|
||||
|
||||
| 属性 | 值 |
|
||||
@@ -64,6 +63,18 @@
|
||||
|
||||
## 使用说明
|
||||
|
||||
与主表 `dwd_recharge_order` 通过 `recharge_order_id` 关联,提供操作员、各类金额明细等扩展信息。
|
||||
**版本与最新值**
|
||||
本表为事实表,无 SCD2 版本字段。
|
||||
|
||||
- 可用时间字段:revoke_time
|
||||
|
||||
```sql
|
||||
-- 取最新一条(按时间字段倒序)
|
||||
SELECT *
|
||||
FROM billiards_dwd.dwd_recharge_order_ex
|
||||
ORDER BY revoke_time DESC NULLS LAST
|
||||
LIMIT 1;
|
||||
```
|
||||
**使用示例**
|
||||
与主表 `dwd_recharge_order` 通过 `recharge_order_id` 关联,提供操作员、各类金额明细等扩展信息。
|
||||
**注意**: 样本数据获取时因日期解析错误未能获取。
|
||||
|
||||
@@ -2,7 +2,6 @@
|
||||
|
||||
> 生成时间:2026-01-28
|
||||
|
||||
|
||||
## 表信息
|
||||
|
||||
| 属性 | 值 |
|
||||
@@ -48,4 +47,18 @@
|
||||
|
||||
## 使用说明
|
||||
|
||||
**版本与最新值**
|
||||
本表为事实表,无 SCD2 版本字段。
|
||||
|
||||
- 主表可用时间字段:pay_time, create_time
|
||||
|
||||
```sql
|
||||
-- 取最新一条(按主表时间字段)
|
||||
SELECT e.*
|
||||
FROM billiards_dwd.dwd_refund m
|
||||
JOIN billiards_dwd.dwd_refund_ex e ON m.refund_id = e.refund_id
|
||||
ORDER BY m.pay_time DESC NULLS LAST
|
||||
LIMIT 1;
|
||||
```
|
||||
**使用示例**
|
||||
与主表 `dwd_refund` 通过 `refund_id` 关联,提供退款状态和渠道等扩展信息。
|
||||
|
||||
@@ -2,7 +2,6 @@
|
||||
|
||||
> 生成时间:2026-01-28
|
||||
|
||||
|
||||
## 表信息
|
||||
|
||||
| 属性 | 值 |
|
||||
@@ -51,6 +50,19 @@
|
||||
|
||||
## 使用说明
|
||||
|
||||
**版本与最新值**
|
||||
本表为事实表,无 SCD2 版本字段。
|
||||
|
||||
- 可用时间字段:revoke_time
|
||||
|
||||
```sql
|
||||
-- 取最新一条(按时间字段倒序)
|
||||
SELECT *
|
||||
FROM billiards_dwd.dwd_settlement_head_ex
|
||||
ORDER BY revoke_time DESC NULLS LAST
|
||||
LIMIT 1;
|
||||
```
|
||||
**使用示例**
|
||||
```sql
|
||||
-- 关联主表与扩展表
|
||||
SELECT
|
||||
@@ -59,7 +71,6 @@ SELECT
|
||||
FROM billiards_dwd.dwd_settlement_head m
|
||||
JOIN billiards_dwd.dwd_settlement_head_ex e
|
||||
ON m.order_settle_id = e.order_settle_id;
|
||||
|
||||
-- 统计备注订单
|
||||
SELECT order_remark, COUNT(*)
|
||||
FROM billiards_dwd.dwd_settlement_head_ex
|
||||
|
||||
@@ -2,7 +2,6 @@
|
||||
|
||||
> 生成时间:2026-01-28
|
||||
|
||||
|
||||
## 表信息
|
||||
|
||||
| 属性 | 值 |
|
||||
@@ -56,4 +55,18 @@
|
||||
|
||||
## 使用说明
|
||||
|
||||
**版本与最新值**
|
||||
本表为事实表,无 SCD2 版本字段。
|
||||
|
||||
- 主表可用时间字段:create_time
|
||||
|
||||
```sql
|
||||
-- 取最新一条(按主表时间字段)
|
||||
SELECT e.*
|
||||
FROM billiards_dwd.dwd_store_goods_sale m
|
||||
JOIN billiards_dwd.dwd_store_goods_sale_ex e ON m.store_goods_sale_id = e.store_goods_sale_id
|
||||
ORDER BY m.create_time DESC NULLS LAST
|
||||
LIMIT 1;
|
||||
```
|
||||
**使用示例**
|
||||
与主表 `dwd_store_goods_sale` 通过 `store_goods_sale_id` 关联,提供销售详情、折扣优惠等扩展信息。
|
||||
|
||||
@@ -2,7 +2,6 @@
|
||||
|
||||
> 生成时间:2026-01-28
|
||||
|
||||
|
||||
## 表信息
|
||||
|
||||
| 属性 | 值 |
|
||||
@@ -36,4 +35,18 @@
|
||||
|
||||
## 使用说明
|
||||
|
||||
**版本与最新值**
|
||||
本表为事实表,无 SCD2 版本字段。
|
||||
|
||||
- 主表可用时间字段:adjust_time
|
||||
|
||||
```sql
|
||||
-- 取最新一条(按主表时间字段)
|
||||
SELECT e.*
|
||||
FROM billiards_dwd.dwd_table_fee_adjust m
|
||||
JOIN billiards_dwd.dwd_table_fee_adjust_ex e ON m.table_fee_adjust_id = e.table_fee_adjust_id
|
||||
ORDER BY m.adjust_time DESC NULLS LAST
|
||||
LIMIT 1;
|
||||
```
|
||||
**使用示例**
|
||||
与主表 `dwd_table_fee_adjust` 通过 `table_fee_adjust_id` 关联,提供调整类型、申请人、操作员等扩展信息。
|
||||
|
||||
@@ -2,7 +2,6 @@
|
||||
|
||||
> 生成时间:2026-01-28
|
||||
|
||||
|
||||
## 表信息
|
||||
|
||||
| 属性 | 值 |
|
||||
@@ -41,4 +40,17 @@
|
||||
|
||||
## 使用说明
|
||||
|
||||
**版本与最新值**
|
||||
本表为事实表,无 SCD2 版本字段。
|
||||
|
||||
- 可用时间字段:ledger_start_time, last_use_time
|
||||
|
||||
```sql
|
||||
-- 取最新一条(按时间字段倒序)
|
||||
SELECT *
|
||||
FROM billiards_dwd.dwd_table_fee_log_ex
|
||||
ORDER BY ledger_start_time DESC NULLS LAST
|
||||
LIMIT 1;
|
||||
```
|
||||
**使用示例**
|
||||
与主表 `dwd_table_fee_log` 通过 `table_fee_log_id` 关联,提供操作员和时间相关的扩展信息。
|
||||
|
||||
@@ -7,22 +7,21 @@
|
||||
## 概述
|
||||
|
||||
`billiards_dwd` 是台球门店数据仓库的明细层(DWD),包含维度表(DIM)和事实表(DWD)。本 Schema 基于 SCD2 缓慢变化维度设计,支持历史数据追溯。
|
||||
|
||||
---
|
||||
|
||||
## 维度表 (Dimension Tables)
|
||||
|
||||
| 序号 | 表名 | 说明 | 主键 | 扩展表 | 文档链接 |
|
||||
|------|------|------|------|--------|----------|
|
||||
| 1 | dim_assistant | 助教信息 | assistant_id | dim_assistant_ex | [主表](BD_manual_dim_assistant.md) / [扩展表](BD_manual_dim_assistant_ex.md) |
|
||||
| 2 | dim_goods_category | 商品分类 | goods_category_id | 无 | [主表](BD_manual_dim_goods_category.md) |
|
||||
| 3 | dim_groupbuy_package | 团购套餐 | groupbuy_package_id | dim_groupbuy_package_ex | [主表](BD_manual_dim_groupbuy_package.md) / [扩展表](BD_manual_dim_groupbuy_package_ex.md) |
|
||||
| 4 | dim_member | 会员信息 | member_id | dim_member_ex | [主表](BD_manual_dim_member.md) / [扩展表](BD_manual_dim_member_ex.md) |
|
||||
| 5 | dim_member_card_account | 会员卡账户 | member_card_account_id | dim_member_card_account_ex | [主表](BD_manual_dim_member_card_account.md) / [扩展表](BD_manual_dim_member_card_account_ex.md) |
|
||||
| 6 | dim_site | 门店信息 | site_id | dim_site_ex | [主表](BD_manual_dim_site.md) / [扩展表](BD_manual_dim_site_ex.md) |
|
||||
| 7 | dim_store_goods | 门店商品 | store_goods_id | dim_store_goods_ex | [主表](BD_manual_dim_store_goods.md) / [扩展表](BD_manual_dim_store_goods_ex.md) |
|
||||
| 8 | dim_table | 台桌信息 | table_id | dim_table_ex | [主表](BD_manual_dim_table.md) / [扩展表](BD_manual_dim_table_ex.md) |
|
||||
| 9 | dim_tenant_goods | 租户商品 | tenant_goods_id | dim_tenant_goods_ex | [主表](BD_manual_dim_tenant_goods.md) / [扩展表](BD_manual_dim_tenant_goods_ex.md) |
|
||||
| 1 | dim_assistant | 助教信息 | assistant_id, scd2_start_time | dim_assistant_ex | [主表](BD_manual_dim_assistant.md) / [扩展表](BD_manual_dim_assistant_ex.md) |
|
||||
| 2 | dim_goods_category | 商品分类 | category_id, scd2_start_time | 无 | [主表](BD_manual_dim_goods_category.md) |
|
||||
| 3 | dim_groupbuy_package | 团购套餐 | groupbuy_package_id, scd2_start_time | dim_groupbuy_package_ex | [主表](BD_manual_dim_groupbuy_package.md) / [扩展表](BD_manual_dim_groupbuy_package_ex.md) |
|
||||
| 4 | dim_member | 会员信息 | member_id, scd2_start_time | dim_member_ex | [主表](BD_manual_dim_member.md) / [扩展表](BD_manual_dim_member_ex.md) |
|
||||
| 5 | dim_member_card_account | 会员卡账户 | member_card_id, scd2_start_time | dim_member_card_account_ex | [主表](BD_manual_dim_member_card_account.md) / [扩展表](BD_manual_dim_member_card_account_ex.md) |
|
||||
| 6 | dim_site | 门店信息 | site_id, scd2_start_time | dim_site_ex | [主表](BD_manual_dim_site.md) / [扩展表](BD_manual_dim_site_ex.md) |
|
||||
| 7 | dim_store_goods | 门店商品 | site_goods_id, scd2_start_time | dim_store_goods_ex | [主表](BD_manual_dim_store_goods.md) / [扩展表](BD_manual_dim_store_goods_ex.md) |
|
||||
| 8 | dim_table | 台桌信息 | table_id, scd2_start_time | dim_table_ex | [主表](BD_manual_dim_table.md) / [扩展表](BD_manual_dim_table_ex.md) |
|
||||
| 9 | dim_tenant_goods | 租户商品 | tenant_goods_id, scd2_start_time | dim_tenant_goods_ex | [主表](BD_manual_dim_tenant_goods.md) / [扩展表](BD_manual_dim_tenant_goods_ex.md) |
|
||||
|
||||
---
|
||||
|
||||
@@ -30,7 +29,7 @@
|
||||
|
||||
| 序号 | 表名 | 说明 | 主键 | 扩展表 | 文档链接 |
|
||||
|------|------|------|------|--------|----------|
|
||||
| 1 | dwd_assistant_service_log | 助教服务流水 | assistant_service_log_id | dwd_assistant_service_log_ex | [主表](BD_manual_dwd_assistant_service_log.md) / [扩展表](BD_manual_dwd_assistant_service_log_ex.md) |
|
||||
| 1 | dwd_assistant_service_log | 助教服务流水 | assistant_service_id | dwd_assistant_service_log_ex | [主表](BD_manual_dwd_assistant_service_log.md) / [扩展表](BD_manual_dwd_assistant_service_log_ex.md) |
|
||||
| 2 | dwd_assistant_trash_event | 助教服务作废 | assistant_trash_event_id | dwd_assistant_trash_event_ex | [主表](BD_manual_dwd_assistant_trash_event.md) / [扩展表](BD_manual_dwd_assistant_trash_event_ex.md) |
|
||||
| 3 | dwd_groupbuy_redemption | 团购券核销 | redemption_id | dwd_groupbuy_redemption_ex | [主表](BD_manual_dwd_groupbuy_redemption.md) / [扩展表](BD_manual_dwd_groupbuy_redemption_ex.md) |
|
||||
| 4 | dwd_member_balance_change | 会员余额变动 | balance_change_id | dwd_member_balance_change_ex | [主表](BD_manual_dwd_member_balance_change.md) / [扩展表](BD_manual_dwd_member_balance_change_ex.md) |
|
||||
@@ -38,7 +37,7 @@
|
||||
| 6 | dwd_platform_coupon_redemption | 平台券核销 | platform_coupon_redemption_id | dwd_platform_coupon_redemption_ex | [主表](BD_manual_dwd_platform_coupon_redemption.md) / [扩展表](BD_manual_dwd_platform_coupon_redemption_ex.md) |
|
||||
| 7 | dwd_recharge_order | 充值订单 | recharge_order_id | dwd_recharge_order_ex | [主表](BD_manual_dwd_recharge_order.md) / [扩展表](BD_manual_dwd_recharge_order_ex.md) |
|
||||
| 8 | dwd_refund | 退款流水 | refund_id | dwd_refund_ex | [主表](BD_manual_dwd_refund.md) / [扩展表](BD_manual_dwd_refund_ex.md) |
|
||||
| 9 | dwd_settlement_head | 结账单 | settlement_head_id | dwd_settlement_head_ex | [主表](BD_manual_dwd_settlement_head.md) / [扩展表](BD_manual_dwd_settlement_head_ex.md) |
|
||||
| 9 | dwd_settlement_head | 结账单 | order_settle_id | dwd_settlement_head_ex | [主表](BD_manual_dwd_settlement_head.md) / [扩展表](BD_manual_dwd_settlement_head_ex.md) |
|
||||
| 10 | dwd_store_goods_sale | 商品销售流水 | store_goods_sale_id | dwd_store_goods_sale_ex | [主表](BD_manual_dwd_store_goods_sale.md) / [扩展表](BD_manual_dwd_store_goods_sale_ex.md) |
|
||||
| 11 | dwd_table_fee_adjust | 台费调整 | table_fee_adjust_id | dwd_table_fee_adjust_ex | [主表](BD_manual_dwd_table_fee_adjust.md) / [扩展表](BD_manual_dwd_table_fee_adjust_ex.md) |
|
||||
| 12 | dwd_table_fee_log | 台费计费流水 | table_fee_log_id | dwd_table_fee_log_ex | [主表](BD_manual_dwd_table_fee_log.md) / [扩展表](BD_manual_dwd_table_fee_log_ex.md) |
|
||||
@@ -58,6 +57,18 @@
|
||||
|
||||
---
|
||||
|
||||
## 最新值获取
|
||||
|
||||
- 维度表(SCD2):使用 scd2_is_current = 1 获取当前版本。
|
||||
- 事实表:无 SCD2 版本字段,按业务时间字段倒序获取最新记录(如 pay_time / create_time / update_time 等)。
|
||||
|
||||
```sql
|
||||
-- 维度表取当前版本
|
||||
SELECT * FROM billiards_dwd.dim_member WHERE scd2_is_current = 1;
|
||||
-- 事实表取最新记录(示例:按 pay_time)
|
||||
SELECT * FROM billiards_dwd.dwd_payment ORDER BY pay_time DESC NULLS LAST LIMIT 1;
|
||||
```
|
||||
|
||||
## 常见 ID 关联说明
|
||||
|
||||
| ID 字段 | 关联表 | 说明 |
|
||||
@@ -79,6 +90,7 @@
|
||||
### 主表 + 扩展表模式
|
||||
|
||||
大部分表采用"主表 + 扩展表"的设计模式:
|
||||
|
||||
- **主表**:包含核心业务字段(如金额、状态、关键 ID)
|
||||
- **扩展表**:包含附属信息(如操作员、门店名称快照、各类详细字段)
|
||||
- 两表通过主键一对一关联
|
||||
@@ -86,6 +98,7 @@
|
||||
### 枚举值说明
|
||||
|
||||
文档中的枚举值格式为 `值(数量)=含义`,例如:
|
||||
|
||||
- `1(100)=有效` 表示值为 1 的记录有 100 条,含义为"有效"
|
||||
- **[待确认]** 表示该值的含义无法从数据中确定
|
||||
|
||||
|
||||
@@ -2,7 +2,6 @@
|
||||
|
||||
> 生成时间:2026-01-28
|
||||
|
||||
|
||||
## 表信息
|
||||
|
||||
| 属性 | 值 |
|
||||
@@ -40,6 +39,7 @@
|
||||
|
||||
## 使用说明
|
||||
|
||||
使用 scd2_is_current = 1 获取当前版本。
|
||||
```sql
|
||||
-- 查询当前在职助教
|
||||
SELECT * FROM billiards_dwd.dim_assistant
|
||||
|
||||
@@ -2,7 +2,6 @@
|
||||
|
||||
> 生成时间:2026-01-28
|
||||
|
||||
|
||||
## 表信息
|
||||
|
||||
| 属性 | 值 |
|
||||
@@ -40,12 +39,10 @@
|
||||
```
|
||||
槟榔(一级)
|
||||
├── 槟榔(二级)
|
||||
|
||||
器材(一级)
|
||||
├── 皮头
|
||||
├── 球杆
|
||||
├── 其他
|
||||
|
||||
酒水(一级)
|
||||
├── 饮料
|
||||
├── 酒水
|
||||
@@ -57,11 +54,25 @@
|
||||
|
||||
## 使用说明
|
||||
|
||||
**版本与最新值**
|
||||
本表为 SCD2 维度表,版本字段:scd2_start_time / scd2_end_time / scd2_is_current / scd2_version。
|
||||
|
||||
- 最新版本:scd2_is_current = 1
|
||||
- 按业务主键取最新:按 scd2_start_time 倒序
|
||||
|
||||
```sql
|
||||
-- 取某业务主键的最新版本
|
||||
SELECT *
|
||||
FROM billiards_dwd.dim_goods_category
|
||||
WHERE category_id = <value>
|
||||
ORDER BY scd2_start_time DESC
|
||||
LIMIT 1;
|
||||
```
|
||||
**使用示例**
|
||||
```sql
|
||||
-- 查询一级分类
|
||||
SELECT * FROM billiards_dwd.dim_goods_category
|
||||
WHERE scd2_is_current = 1 AND parent_category_id = 0;
|
||||
|
||||
-- 查询某一级分类下的二级分类
|
||||
SELECT * FROM billiards_dwd.dim_goods_category
|
||||
WHERE scd2_is_current = 1 AND parent_category_id = <一级分类ID>;
|
||||
|
||||
@@ -2,7 +2,6 @@
|
||||
|
||||
> 生成时间:2026-01-28
|
||||
|
||||
|
||||
## 表信息
|
||||
|
||||
| 属性 | 值 |
|
||||
@@ -41,9 +40,23 @@
|
||||
|
||||
## 使用说明
|
||||
|
||||
**版本与最新值**
|
||||
本表为 SCD2 维度表,版本字段:scd2_start_time / scd2_end_time / scd2_is_current / scd2_version。
|
||||
|
||||
- 最新版本:scd2_is_current = 1
|
||||
- 按业务主键取最新:按 scd2_start_time 倒序
|
||||
|
||||
```sql
|
||||
-- 取某业务主键的最新版本
|
||||
SELECT *
|
||||
FROM billiards_dwd.dim_groupbuy_package
|
||||
WHERE groupbuy_package_id = <value>
|
||||
ORDER BY scd2_start_time DESC
|
||||
LIMIT 1;
|
||||
```
|
||||
**使用示例**
|
||||
```sql
|
||||
-- 查询当前启用的套餐
|
||||
SELECT * FROM billiards_dwd.dim_groupbuy_package
|
||||
WHERE scd2_is_current = 1 AND is_delete = 0 AND is_enabled = 1;
|
||||
|
||||
```
|
||||
|
||||
@@ -32,15 +32,27 @@
|
||||
| 13 | scd2_is_current | INTEGER | YES | | 当前版本标记 |
|
||||
| 14 | scd2_version | INTEGER | YES | | 版本号 |
|
||||
|
||||
|
||||
|
||||
## 使用说明
|
||||
|
||||
**版本与最新值**
|
||||
本表为 SCD2 维度表,版本字段:scd2_start_time / scd2_end_time / scd2_is_current / scd2_version。
|
||||
|
||||
- 最新版本:scd2_is_current = 1
|
||||
- 按业务主键取最新:按 scd2_start_time 倒序
|
||||
|
||||
```sql
|
||||
-- 取某业务主键的最新版本
|
||||
SELECT *
|
||||
FROM billiards_dwd.dim_member
|
||||
WHERE member_id = <value>
|
||||
ORDER BY scd2_start_time DESC
|
||||
LIMIT 1;
|
||||
```
|
||||
**使用示例**
|
||||
```sql
|
||||
-- 查询当前有效会员
|
||||
SELECT * FROM billiards_dwd.dim_member
|
||||
WHERE scd2_is_current = 1;
|
||||
|
||||
-- 按卡类型统计会员数
|
||||
SELECT member_card_grade_name, COUNT(*)
|
||||
FROM billiards_dwd.dim_member
|
||||
|
||||
@@ -50,9 +50,23 @@
|
||||
| 2793306611533637 | 月卡 | 充值获得,时长卡,仅可抵扣台费 |
|
||||
| 2791987095408517 | 年卡 | 充值获得,时长卡,仅可抵扣台费 |
|
||||
|
||||
|
||||
## 使用说明
|
||||
|
||||
**版本与最新值**
|
||||
本表为 SCD2 维度表,版本字段:scd2_start_time / scd2_end_time / scd2_is_current / scd2_version。
|
||||
|
||||
- 最新版本:scd2_is_current = 1
|
||||
- 按业务主键取最新:按 scd2_start_time 倒序
|
||||
|
||||
```sql
|
||||
-- 取某业务主键的最新版本
|
||||
SELECT *
|
||||
FROM billiards_dwd.dim_member_card_account
|
||||
WHERE member_card_id = <value>
|
||||
ORDER BY scd2_start_time DESC
|
||||
LIMIT 1;
|
||||
```
|
||||
**使用示例**
|
||||
```sql
|
||||
-- 查询有效的储值卡
|
||||
SELECT * FROM billiards_dwd.dim_member_card_account
|
||||
|
||||
@@ -2,7 +2,6 @@
|
||||
|
||||
> 生成时间:2026-01-28
|
||||
|
||||
|
||||
## 表信息
|
||||
|
||||
| 属性 | 值 |
|
||||
@@ -44,6 +43,21 @@
|
||||
|
||||
## 使用说明
|
||||
|
||||
**版本与最新值**
|
||||
本表为 SCD2 维度表,版本字段:scd2_start_time / scd2_end_time / scd2_is_current / scd2_version。
|
||||
|
||||
- 最新版本:scd2_is_current = 1
|
||||
- 按业务主键取最新:按 scd2_start_time 倒序
|
||||
|
||||
```sql
|
||||
-- 取某业务主键的最新版本
|
||||
SELECT *
|
||||
FROM billiards_dwd.dim_site
|
||||
WHERE site_id = <value>
|
||||
ORDER BY scd2_start_time DESC
|
||||
LIMIT 1;
|
||||
```
|
||||
**使用示例**
|
||||
```sql
|
||||
-- 查询当前有效门店
|
||||
SELECT * FROM billiards_dwd.dim_site
|
||||
|
||||
@@ -2,7 +2,6 @@
|
||||
|
||||
> 生成时间:2026-01-28
|
||||
|
||||
|
||||
## 表信息
|
||||
|
||||
| 属性 | 值 |
|
||||
@@ -54,6 +53,21 @@
|
||||
|
||||
## 使用说明
|
||||
|
||||
**版本与最新值**
|
||||
本表为 SCD2 维度表,版本字段:scd2_start_time / scd2_end_time / scd2_is_current / scd2_version。
|
||||
|
||||
- 最新版本:scd2_is_current = 1
|
||||
- 按业务主键取最新:按 scd2_start_time 倒序
|
||||
|
||||
```sql
|
||||
-- 取某业务主键的最新版本
|
||||
SELECT *
|
||||
FROM billiards_dwd.dim_store_goods
|
||||
WHERE site_goods_id = <value>
|
||||
ORDER BY scd2_start_time DESC
|
||||
LIMIT 1;
|
||||
```
|
||||
**使用示例**
|
||||
```sql
|
||||
-- 查询当前上架商品
|
||||
SELECT * FROM billiards_dwd.dim_store_goods
|
||||
|
||||
@@ -2,7 +2,6 @@
|
||||
|
||||
> 生成时间:2026-01-28
|
||||
|
||||
|
||||
## 表信息
|
||||
|
||||
| 属性 | 值 |
|
||||
@@ -52,11 +51,25 @@
|
||||
|
||||
## 使用说明
|
||||
|
||||
**版本与最新值**
|
||||
本表为 SCD2 维度表,版本字段:scd2_start_time / scd2_end_time / scd2_is_current / scd2_version。
|
||||
|
||||
- 最新版本:scd2_is_current = 1
|
||||
- 按业务主键取最新:按 scd2_start_time 倒序
|
||||
|
||||
```sql
|
||||
-- 取某业务主键的最新版本
|
||||
SELECT *
|
||||
FROM billiards_dwd.dim_table
|
||||
WHERE table_id = <value>
|
||||
ORDER BY scd2_start_time DESC
|
||||
LIMIT 1;
|
||||
```
|
||||
**使用示例**
|
||||
```sql
|
||||
-- 查询当前有效台桌
|
||||
SELECT * FROM billiards_dwd.dim_table
|
||||
WHERE scd2_is_current = 1;
|
||||
|
||||
-- 按台区统计台桌数
|
||||
SELECT site_table_area_name, COUNT(*)
|
||||
FROM billiards_dwd.dim_table
|
||||
|
||||
@@ -2,7 +2,6 @@
|
||||
|
||||
> 生成时间:2026-01-28
|
||||
|
||||
|
||||
## 表信息
|
||||
|
||||
| 属性 | 值 |
|
||||
@@ -37,9 +36,23 @@
|
||||
| 17 | scd2_is_current | INTEGER | YES | | 当前版本标记 |
|
||||
| 18 | scd2_version | INTEGER | YES | | 版本号 |
|
||||
|
||||
|
||||
## 使用说明
|
||||
|
||||
**版本与最新值**
|
||||
本表为 SCD2 维度表,版本字段:scd2_start_time / scd2_end_time / scd2_is_current / scd2_version。
|
||||
|
||||
- 最新版本:scd2_is_current = 1
|
||||
- 按业务主键取最新:按 scd2_start_time 倒序
|
||||
|
||||
```sql
|
||||
-- 取某业务主键的最新版本
|
||||
SELECT *
|
||||
FROM billiards_dwd.dim_tenant_goods
|
||||
WHERE tenant_goods_id = <value>
|
||||
ORDER BY scd2_start_time DESC
|
||||
LIMIT 1;
|
||||
```
|
||||
**使用示例**
|
||||
```sql
|
||||
-- 查询当前有效的租户商品
|
||||
SELECT * FROM billiards_dwd.dim_tenant_goods
|
||||
|
||||
@@ -50,9 +50,21 @@
|
||||
| 31 | last_use_time | TIMESTAMPTZ | YES | | 服务结束时间 |
|
||||
| 32 | is_delete | INTEGER | YES | | 删除标记。**枚举值**: 0=未删除 |
|
||||
|
||||
|
||||
## 使用说明
|
||||
|
||||
**版本与最新值**
|
||||
本表为事实表,无 SCD2 版本字段。
|
||||
|
||||
- 可用时间字段:create_time, start_use_time, last_use_time
|
||||
|
||||
```sql
|
||||
-- 取最新一条(按时间字段倒序)
|
||||
SELECT *
|
||||
FROM billiards_dwd.dwd_assistant_service_log
|
||||
ORDER BY create_time DESC NULLS LAST
|
||||
LIMIT 1;
|
||||
```
|
||||
**使用示例**
|
||||
```sql
|
||||
-- 统计助教服务收入
|
||||
SELECT
|
||||
|
||||
@@ -28,9 +28,21 @@
|
||||
| 9 | trash_reason | VARCHAR | YES | | 作废原因(当前数据全为 NULL) |
|
||||
| 10 | create_time | TIMESTAMPTZ | YES | | 创建时间 |
|
||||
|
||||
|
||||
## 使用说明
|
||||
|
||||
**版本与最新值**
|
||||
本表为事实表,无 SCD2 版本字段。
|
||||
|
||||
- 可用时间字段:create_time
|
||||
|
||||
```sql
|
||||
-- 取最新一条(按时间字段倒序)
|
||||
SELECT *
|
||||
FROM billiards_dwd.dwd_assistant_trash_event
|
||||
ORDER BY create_time DESC NULLS LAST
|
||||
LIMIT 1;
|
||||
```
|
||||
**使用示例**
|
||||
```sql
|
||||
-- 助教作废金额统计
|
||||
SELECT
|
||||
|
||||
@@ -2,7 +2,6 @@
|
||||
|
||||
> 生成时间:2026-01-28
|
||||
|
||||
|
||||
## 表信息
|
||||
|
||||
| 属性 | 值 |
|
||||
@@ -44,6 +43,19 @@
|
||||
|
||||
## 使用说明
|
||||
|
||||
**版本与最新值**
|
||||
本表为事实表,无 SCD2 版本字段。
|
||||
|
||||
- 可用时间字段:create_time
|
||||
|
||||
```sql
|
||||
-- 取最新一条(按时间字段倒序)
|
||||
SELECT *
|
||||
FROM billiards_dwd.dwd_groupbuy_redemption
|
||||
ORDER BY create_time DESC NULLS LAST
|
||||
LIMIT 1;
|
||||
```
|
||||
**使用示例**
|
||||
```sql
|
||||
-- 各套餐核销统计
|
||||
SELECT
|
||||
|
||||
@@ -2,7 +2,6 @@
|
||||
|
||||
> 生成时间:2026-01-28
|
||||
|
||||
|
||||
## 表信息
|
||||
|
||||
| 属性 | 值 |
|
||||
@@ -58,6 +57,19 @@
|
||||
|
||||
## 使用说明
|
||||
|
||||
**版本与最新值**
|
||||
本表为事实表,无 SCD2 版本字段。
|
||||
|
||||
- 可用时间字段:change_time
|
||||
|
||||
```sql
|
||||
-- 取最新一条(按时间字段倒序)
|
||||
SELECT *
|
||||
FROM billiards_dwd.dwd_member_balance_change
|
||||
ORDER BY change_time DESC NULLS LAST
|
||||
LIMIT 1;
|
||||
```
|
||||
**使用示例**
|
||||
```sql
|
||||
-- 会员消费总额排行
|
||||
SELECT
|
||||
|
||||
@@ -2,7 +2,6 @@
|
||||
|
||||
> 生成时间:2026-01-28
|
||||
|
||||
|
||||
## 表信息
|
||||
|
||||
| 属性 | 值 |
|
||||
@@ -30,10 +29,21 @@
|
||||
| 10 | pay_time | TIMESTAMPTZ | YES | | 支付时间 |
|
||||
| 11 | pay_date | DATE | YES | | 支付日期 |
|
||||
|
||||
|
||||
|
||||
## 使用说明
|
||||
|
||||
**版本与最新值**
|
||||
本表为事实表,无 SCD2 版本字段。
|
||||
|
||||
- 可用时间字段:create_time, pay_time, pay_date
|
||||
|
||||
```sql
|
||||
-- 取最新一条(按时间字段倒序)
|
||||
SELECT *
|
||||
FROM billiards_dwd.dwd_payment
|
||||
ORDER BY pay_time DESC NULLS LAST
|
||||
LIMIT 1;
|
||||
```
|
||||
**使用示例**
|
||||
```sql
|
||||
-- 每日支付金额统计
|
||||
SELECT
|
||||
|
||||
@@ -40,6 +40,19 @@
|
||||
|
||||
## 使用说明
|
||||
|
||||
**版本与最新值**
|
||||
本表为事实表,无 SCD2 版本字段。
|
||||
|
||||
- 可用时间字段:coupon_free_time, create_time, consume_time
|
||||
|
||||
```sql
|
||||
-- 取最新一条(按时间字段倒序)
|
||||
SELECT *
|
||||
FROM billiards_dwd.dwd_platform_coupon_redemption
|
||||
ORDER BY create_time DESC NULLS LAST
|
||||
LIMIT 1;
|
||||
```
|
||||
**使用示例**
|
||||
```sql
|
||||
-- 各渠道核销统计
|
||||
SELECT
|
||||
|
||||
@@ -2,7 +2,6 @@
|
||||
|
||||
> 生成时间:2026-01-28
|
||||
|
||||
|
||||
## 表信息
|
||||
|
||||
| 属性 | 值 |
|
||||
@@ -38,9 +37,21 @@
|
||||
| 18 | create_time | TIMESTAMPTZ | YES | | 创建时间 |
|
||||
| 19 | pay_time | TIMESTAMPTZ | YES | | 支付时间 |
|
||||
|
||||
|
||||
## 使用说明
|
||||
|
||||
**版本与最新值**
|
||||
本表为事实表,无 SCD2 版本字段。
|
||||
|
||||
- 可用时间字段:create_time, pay_time
|
||||
|
||||
```sql
|
||||
-- 取最新一条(按时间字段倒序)
|
||||
SELECT *
|
||||
FROM billiards_dwd.dwd_recharge_order
|
||||
ORDER BY pay_time DESC NULLS LAST
|
||||
LIMIT 1;
|
||||
```
|
||||
**使用示例**
|
||||
```sql
|
||||
-- 充值总额统计(不含撤销)
|
||||
SELECT
|
||||
|
||||
@@ -2,7 +2,6 @@
|
||||
|
||||
> 生成时间:2026-01-28
|
||||
|
||||
|
||||
## 表信息
|
||||
|
||||
| 属性 | 值 |
|
||||
@@ -31,9 +30,21 @@
|
||||
| 11 | member_id | BIGINT | YES | | 会员 ID(当前数据全为 0) |
|
||||
| 12 | member_card_id | BIGINT | YES | | 会员卡 ID(当前数据全为 0) |
|
||||
|
||||
|
||||
## 使用说明
|
||||
|
||||
**版本与最新值**
|
||||
本表为事实表,无 SCD2 版本字段。
|
||||
|
||||
- 可用时间字段:pay_time, create_time
|
||||
|
||||
```sql
|
||||
-- 取最新一条(按时间字段倒序)
|
||||
SELECT *
|
||||
FROM billiards_dwd.dwd_refund
|
||||
ORDER BY pay_time DESC NULLS LAST
|
||||
LIMIT 1;
|
||||
```
|
||||
**使用示例**
|
||||
```sql
|
||||
-- 退款统计
|
||||
SELECT
|
||||
|
||||
@@ -2,7 +2,6 @@
|
||||
|
||||
> 生成时间:2026-01-28
|
||||
|
||||
|
||||
## 表信息
|
||||
|
||||
| 属性 | 值 |
|
||||
@@ -51,9 +50,21 @@
|
||||
| 31 | rounding_amount | NUMERIC(18,2) | YES | | 抹零金额 |
|
||||
| 32 | point_amount | NUMERIC(18,2) | YES | | 积分抵扣等值金额 |
|
||||
|
||||
|
||||
## 使用说明
|
||||
|
||||
**版本与最新值**
|
||||
本表为事实表,无 SCD2 版本字段。
|
||||
|
||||
- 可用时间字段:create_time, pay_time
|
||||
|
||||
```sql
|
||||
-- 取最新一条(按时间字段倒序)
|
||||
SELECT *
|
||||
FROM billiards_dwd.dwd_settlement_head
|
||||
ORDER BY pay_time DESC NULLS LAST
|
||||
LIMIT 1;
|
||||
```
|
||||
**使用示例**
|
||||
```sql
|
||||
-- 每日营收统计
|
||||
SELECT
|
||||
@@ -64,7 +75,6 @@ SELECT
|
||||
FROM billiards_dwd.dwd_settlement_head
|
||||
GROUP BY DATE(pay_time)
|
||||
ORDER BY pay_date DESC;
|
||||
|
||||
-- 台费 vs 商品 vs 助教收入
|
||||
SELECT
|
||||
SUM(table_charge_money) AS table_revenue,
|
||||
|
||||
@@ -2,7 +2,6 @@
|
||||
|
||||
> 生成时间:2026-01-28
|
||||
|
||||
|
||||
## 表信息
|
||||
|
||||
| 属性 | 值 |
|
||||
@@ -42,9 +41,21 @@
|
||||
| 22 | is_delete | INTEGER | YES | | 删除标记。**枚举值**: 0=未删除 |
|
||||
| 23 | create_time | TIMESTAMPTZ | YES | | 创建时间 |
|
||||
|
||||
|
||||
## 使用说明
|
||||
|
||||
**版本与最新值**
|
||||
本表为事实表,无 SCD2 版本字段。
|
||||
|
||||
- 可用时间字段:create_time
|
||||
|
||||
```sql
|
||||
-- 取最新一条(按时间字段倒序)
|
||||
SELECT *
|
||||
FROM billiards_dwd.dwd_store_goods_sale
|
||||
ORDER BY create_time DESC NULLS LAST
|
||||
LIMIT 1;
|
||||
```
|
||||
**使用示例**
|
||||
```sql
|
||||
-- 热销商品排行
|
||||
SELECT
|
||||
|
||||
@@ -2,7 +2,6 @@
|
||||
|
||||
> 生成时间:2026-01-28
|
||||
|
||||
|
||||
## 表信息
|
||||
|
||||
| 属性 | 值 |
|
||||
@@ -33,6 +32,19 @@
|
||||
|
||||
## 使用说明
|
||||
|
||||
**版本与最新值**
|
||||
本表为事实表,无 SCD2 版本字段。
|
||||
|
||||
- 可用时间字段:adjust_time
|
||||
|
||||
```sql
|
||||
-- 取最新一条(按时间字段倒序)
|
||||
SELECT *
|
||||
FROM billiards_dwd.dwd_table_fee_adjust
|
||||
ORDER BY adjust_time DESC NULLS LAST
|
||||
LIMIT 1;
|
||||
```
|
||||
**使用示例**
|
||||
```sql
|
||||
-- 台费调整统计
|
||||
SELECT
|
||||
|
||||
@@ -2,7 +2,6 @@
|
||||
|
||||
> 生成时间:2026-01-28
|
||||
|
||||
|
||||
## 表信息
|
||||
|
||||
| 属性 | 值 |
|
||||
@@ -46,9 +45,21 @@
|
||||
| 26 | is_single_order | INTEGER | YES | | 是否独立订单。**枚举值**: 0=合并订单, 1=独立订单 |
|
||||
| 27 | is_delete | INTEGER | YES | | 删除标记。**枚举值**: 0=未删除 |
|
||||
|
||||
|
||||
## 使用说明
|
||||
|
||||
**版本与最新值**
|
||||
本表为事实表,无 SCD2 版本字段。
|
||||
|
||||
- 可用时间字段:start_use_time, ledger_end_time, create_time
|
||||
|
||||
```sql
|
||||
-- 取最新一条(按时间字段倒序)
|
||||
SELECT *
|
||||
FROM billiards_dwd.dwd_table_fee_log
|
||||
ORDER BY create_time DESC NULLS LAST
|
||||
LIMIT 1;
|
||||
```
|
||||
**使用示例**
|
||||
```sql
|
||||
-- 各台区台费收入统计
|
||||
SELECT
|
||||
|
||||
@@ -163,7 +163,7 @@ class TaskPanel(QWidget):
|
||||
sync_layout.setSpacing(8)
|
||||
|
||||
# 说明
|
||||
sync_desc = QLabel("从 API 抓取最新数据到 ODS,然后装载到 DWD。适用于日常增量更新。")
|
||||
sync_desc = QLabel("从 API 抓取最新数据到 ODS,然后装载到 DWD。适用于日常增量更新、数据修复和历史补全。")
|
||||
sync_desc.setProperty("subheading", True)
|
||||
sync_desc.setWordWrap(True)
|
||||
sync_layout.addWidget(sync_desc)
|
||||
@@ -202,7 +202,7 @@ class TaskPanel(QWidget):
|
||||
show_dimensions=True,
|
||||
show_facts=True,
|
||||
default_select_facts=True,
|
||||
default_select_dimensions=False,
|
||||
default_select_dimensions=True, # 默认包含维度表
|
||||
compact=True,
|
||||
max_height=200,
|
||||
)
|
||||
@@ -242,7 +242,7 @@ class TaskPanel(QWidget):
|
||||
reload_layout.setSpacing(8)
|
||||
|
||||
# 说明
|
||||
reload_desc = QLabel("指定时间窗口,重新抓取 ODS 数据并装载到 DWD。适用于数据修复或历史回补。")
|
||||
reload_desc = QLabel("指定精确时间窗口,重新抓取 ODS 数据并装载到 DWD。适用于大范围历史数据重刷、跨月补跑等场景。")
|
||||
reload_desc.setProperty("subheading", True)
|
||||
reload_desc.setWordWrap(True)
|
||||
reload_layout.addWidget(reload_desc)
|
||||
|
||||
@@ -189,114 +189,60 @@ class TaskWorker(QThread):
|
||||
|
||||
# 解析 DWD 装载统计
|
||||
if 'tables' in stats:
|
||||
|
||||
|
||||
|
||||
total_dim_inserted = 0
|
||||
|
||||
total_dim_updated = 0
|
||||
|
||||
total_fact_inserted = 0
|
||||
|
||||
total_fact_updated = 0
|
||||
|
||||
dim_tables = [] # ?????
|
||||
|
||||
fact_tables = [] # ?????
|
||||
|
||||
|
||||
dim_tables = [] # 维表明细
|
||||
fact_tables = [] # 事实表明细
|
||||
|
||||
for tbl in stats['tables']:
|
||||
|
||||
table_name = tbl.get('table', '').replace('billiards_dwd.', '')
|
||||
|
||||
mode = tbl.get('mode', '')
|
||||
|
||||
processed = int(tbl.get('processed', 0) or 0)
|
||||
|
||||
inserted = int(tbl.get('inserted', 0) or 0)
|
||||
|
||||
updated = int(tbl.get('updated', 0) or 0)
|
||||
|
||||
has_new_counts = ('inserted' in tbl) or ('updated' in tbl)
|
||||
|
||||
|
||||
|
||||
# ?? _ex ?????????
|
||||
|
||||
# 忽略 _ex 扩展表
|
||||
if table_name.endswith('_ex'):
|
||||
|
||||
continue
|
||||
|
||||
|
||||
|
||||
is_dim = table_name.startswith('dim_') or mode == 'SCD2'
|
||||
|
||||
if is_dim:
|
||||
|
||||
if has_new_counts:
|
||||
|
||||
total_dim_inserted += inserted
|
||||
|
||||
total_dim_updated += updated
|
||||
|
||||
if inserted or updated:
|
||||
|
||||
dim_tables.append(f"{table_name}: +{inserted}, ~{updated}")
|
||||
|
||||
elif processed > 0:
|
||||
|
||||
total_dim_updated += processed
|
||||
|
||||
dim_tables.append(f"{table_name}: {processed}")
|
||||
|
||||
else:
|
||||
|
||||
if has_new_counts:
|
||||
|
||||
total_fact_inserted += inserted
|
||||
|
||||
total_fact_updated += updated
|
||||
|
||||
if inserted or updated:
|
||||
|
||||
fact_tables.append(f"{table_name}: +{inserted}, ~{updated}")
|
||||
|
||||
elif processed > 0 or inserted > 0:
|
||||
|
||||
total_fact_inserted += inserted
|
||||
|
||||
if inserted > 0:
|
||||
|
||||
fact_tables.append(f"{table_name}: +{inserted}")
|
||||
|
||||
|
||||
|
||||
if (total_dim_inserted or total_dim_updated or total_fact_inserted or total_fact_updated):
|
||||
|
||||
dwd_stats.append(
|
||||
|
||||
f"????: {total_dim_inserted}?, ????: {total_dim_updated}?, "
|
||||
|
||||
f"????: {total_fact_inserted}?, ????: {total_fact_updated}?"
|
||||
|
||||
f"维表新增: {total_dim_inserted}条, 维表更新: {total_dim_updated}条, "
|
||||
f"事实表新增: {total_fact_inserted}条, 事实表更新: {total_fact_updated}条"
|
||||
)
|
||||
|
||||
|
||||
|
||||
# ???????
|
||||
|
||||
# 维表明细
|
||||
if dim_tables:
|
||||
dwd_stats.append(" 维表: " + ", ".join(dim_tables))
|
||||
|
||||
dwd_stats.append(" ???: " + ", ".join(dim_tables))
|
||||
|
||||
|
||||
|
||||
# ???????
|
||||
|
||||
# 事实表明细
|
||||
if fact_tables:
|
||||
|
||||
dwd_stats.append(" ???: " + ", ".join(fact_tables))
|
||||
dwd_stats.append(" 事实表: " + ", ".join(fact_tables))
|
||||
|
||||
|
||||
|
||||
|
||||
@@ -306,7 +306,8 @@ class ETLScheduler:
|
||||
|
||||
def _build_fetch_dir(self, task_code: str, run_id: int) -> Path:
|
||||
ts = datetime.now(self.tz).strftime("%Y%m%d-%H%M%S")
|
||||
return Path(self.fetch_root) / f"{task_code.upper()}-{run_id}-{ts}"
|
||||
task_code = str(task_code or "").upper()
|
||||
return Path(self.fetch_root) / task_code / f"{task_code}-{run_id}-{ts}"
|
||||
|
||||
def _resolve_ingest_source(self, fetch_dir: Path, fetch_stats: dict | None) -> Path:
|
||||
if fetch_stats and fetch_dir.exists():
|
||||
|
||||
71
etl_billiards/scheduled_tasks.json
Normal file
71
etl_billiards/scheduled_tasks.json
Normal file
File diff suppressed because one or more lines are too long
302
tmp/1.json
Normal file
302
tmp/1.json
Normal file
@@ -0,0 +1,302 @@
|
||||
{
|
||||
"tables": [
|
||||
{
|
||||
"table": "billiards_dwd.dim_site",
|
||||
"mode": "SCD2",
|
||||
"processed": 1,
|
||||
"inserted": 0,
|
||||
"updated": 0,
|
||||
"skipped": 1
|
||||
},
|
||||
{
|
||||
"table": "billiards_dwd.dim_site_ex",
|
||||
"mode": "SCD2",
|
||||
"processed": 1,
|
||||
"inserted": 0,
|
||||
"updated": 0,
|
||||
"skipped": 1
|
||||
},
|
||||
{
|
||||
"table": "billiards_dwd.dim_table",
|
||||
"mode": "SCD2",
|
||||
"processed": 74,
|
||||
"inserted": 0,
|
||||
"updated": 0,
|
||||
"skipped": 74
|
||||
},
|
||||
{
|
||||
"table": "billiards_dwd.dim_table_ex",
|
||||
"mode": "SCD2",
|
||||
"processed": 74,
|
||||
"inserted": 0,
|
||||
"updated": 1,
|
||||
"skipped": 73
|
||||
},
|
||||
{
|
||||
"table": "billiards_dwd.dim_assistant",
|
||||
"mode": "SCD2",
|
||||
"processed": 69,
|
||||
"inserted": 0,
|
||||
"updated": 0,
|
||||
"skipped": 69
|
||||
},
|
||||
{
|
||||
"table": "billiards_dwd.dim_assistant_ex",
|
||||
"mode": "SCD2",
|
||||
"processed": 69,
|
||||
"inserted": 0,
|
||||
"updated": 0,
|
||||
"skipped": 69
|
||||
},
|
||||
{
|
||||
"table": "billiards_dwd.dim_member",
|
||||
"mode": "SCD2",
|
||||
"processed": 556,
|
||||
"inserted": 0,
|
||||
"updated": 0,
|
||||
"skipped": 556
|
||||
},
|
||||
{
|
||||
"table": "billiards_dwd.dim_member_ex",
|
||||
"mode": "SCD2",
|
||||
"processed": 556,
|
||||
"inserted": 0,
|
||||
"updated": 0,
|
||||
"skipped": 556
|
||||
},
|
||||
{
|
||||
"table": "billiards_dwd.dim_member_card_account",
|
||||
"mode": "SCD2",
|
||||
"processed": 945,
|
||||
"inserted": 0,
|
||||
"updated": 0,
|
||||
"skipped": 945
|
||||
},
|
||||
{
|
||||
"table": "billiards_dwd.dim_member_card_account_ex",
|
||||
"mode": "SCD2",
|
||||
"processed": 945,
|
||||
"inserted": 0,
|
||||
"updated": 0,
|
||||
"skipped": 945
|
||||
},
|
||||
{
|
||||
"table": "billiards_dwd.dim_tenant_goods",
|
||||
"mode": "SCD2",
|
||||
"processed": 173,
|
||||
"inserted": 0,
|
||||
"updated": 0,
|
||||
"skipped": 173
|
||||
},
|
||||
{
|
||||
"table": "billiards_dwd.dim_tenant_goods_ex",
|
||||
"mode": "SCD2",
|
||||
"processed": 173,
|
||||
"inserted": 0,
|
||||
"updated": 0,
|
||||
"skipped": 173
|
||||
},
|
||||
{
|
||||
"table": "billiards_dwd.dim_store_goods",
|
||||
"mode": "SCD2",
|
||||
"processed": 172,
|
||||
"inserted": 0,
|
||||
"updated": 1,
|
||||
"skipped": 171
|
||||
},
|
||||
{
|
||||
"table": "billiards_dwd.dim_store_goods_ex",
|
||||
"mode": "SCD2",
|
||||
"processed": 172,
|
||||
"inserted": 0,
|
||||
"updated": 1,
|
||||
"skipped": 171
|
||||
},
|
||||
{
|
||||
"table": "billiards_dwd.dim_goods_category",
|
||||
"mode": "SCD2",
|
||||
"processed": 26,
|
||||
"inserted": 0,
|
||||
"updated": 0,
|
||||
"skipped": 26
|
||||
},
|
||||
{
|
||||
"table": "billiards_dwd.dim_groupbuy_package",
|
||||
"mode": "SCD2",
|
||||
"processed": 34,
|
||||
"inserted": 0,
|
||||
"updated": 0,
|
||||
"skipped": 34
|
||||
},
|
||||
{
|
||||
"table": "billiards_dwd.dim_groupbuy_package_ex",
|
||||
"mode": "SCD2",
|
||||
"processed": 34,
|
||||
"inserted": 0,
|
||||
"updated": 0,
|
||||
"skipped": 34
|
||||
},
|
||||
{
|
||||
"table": "billiards_dwd.dwd_settlement_head",
|
||||
"mode": "INCREMENT",
|
||||
"inserted": 1,
|
||||
"updated": 0,
|
||||
"processed": 1
|
||||
},
|
||||
{
|
||||
"table": "billiards_dwd.dwd_settlement_head_ex",
|
||||
"mode": "INCREMENT",
|
||||
"inserted": 1,
|
||||
"updated": 0,
|
||||
"processed": 1
|
||||
},
|
||||
{
|
||||
"table": "billiards_dwd.dwd_table_fee_log",
|
||||
"mode": "INCREMENT",
|
||||
"inserted": 0,
|
||||
"updated": 0,
|
||||
"processed": 0
|
||||
},
|
||||
{
|
||||
"table": "billiards_dwd.dwd_table_fee_log_ex",
|
||||
"mode": "INCREMENT",
|
||||
"inserted": 0,
|
||||
"updated": 0,
|
||||
"processed": 0
|
||||
},
|
||||
{
|
||||
"table": "billiards_dwd.dwd_table_fee_adjust",
|
||||
"mode": "INCREMENT",
|
||||
"inserted": 0,
|
||||
"updated": 0,
|
||||
"processed": 0
|
||||
},
|
||||
{
|
||||
"table": "billiards_dwd.dwd_table_fee_adjust_ex",
|
||||
"mode": "INCREMENT",
|
||||
"inserted": 0,
|
||||
"updated": 0,
|
||||
"processed": 0
|
||||
},
|
||||
{
|
||||
"table": "billiards_dwd.dwd_store_goods_sale",
|
||||
"mode": "INCREMENT",
|
||||
"inserted": 0,
|
||||
"updated": 0,
|
||||
"processed": 0
|
||||
},
|
||||
{
|
||||
"table": "billiards_dwd.dwd_store_goods_sale_ex",
|
||||
"mode": "INCREMENT",
|
||||
"inserted": 0,
|
||||
"updated": 0,
|
||||
"processed": 0
|
||||
},
|
||||
{
|
||||
"table": "billiards_dwd.dwd_assistant_service_log",
|
||||
"mode": "INCREMENT",
|
||||
"inserted": 0,
|
||||
"updated": 0,
|
||||
"processed": 0
|
||||
},
|
||||
{
|
||||
"table": "billiards_dwd.dwd_assistant_service_log_ex",
|
||||
"mode": "INCREMENT",
|
||||
"inserted": 0,
|
||||
"updated": 0,
|
||||
"processed": 0
|
||||
},
|
||||
{
|
||||
"table": "billiards_dwd.dwd_assistant_trash_event",
|
||||
"mode": "INCREMENT",
|
||||
"inserted": 0,
|
||||
"updated": 0,
|
||||
"processed": 0
|
||||
},
|
||||
{
|
||||
"table": "billiards_dwd.dwd_assistant_trash_event_ex",
|
||||
"mode": "INCREMENT",
|
||||
"inserted": 0,
|
||||
"updated": 0,
|
||||
"processed": 0
|
||||
},
|
||||
{
|
||||
"table": "billiards_dwd.dwd_member_balance_change",
|
||||
"mode": "INCREMENT",
|
||||
"inserted": 0,
|
||||
"updated": 0,
|
||||
"processed": 0
|
||||
},
|
||||
{
|
||||
"table": "billiards_dwd.dwd_member_balance_change_ex",
|
||||
"mode": "INCREMENT",
|
||||
"inserted": 0,
|
||||
"updated": 0,
|
||||
"processed": 0
|
||||
},
|
||||
{
|
||||
"table": "billiards_dwd.dwd_groupbuy_redemption",
|
||||
"mode": "INCREMENT",
|
||||
"inserted": 0,
|
||||
"updated": 0,
|
||||
"processed": 0
|
||||
},
|
||||
{
|
||||
"table": "billiards_dwd.dwd_groupbuy_redemption_ex",
|
||||
"mode": "INCREMENT",
|
||||
"inserted": 0,
|
||||
"updated": 0,
|
||||
"processed": 0
|
||||
},
|
||||
{
|
||||
"table": "billiards_dwd.dwd_platform_coupon_redemption",
|
||||
"mode": "INCREMENT",
|
||||
"inserted": 0,
|
||||
"updated": 0,
|
||||
"processed": 0
|
||||
},
|
||||
{
|
||||
"table": "billiards_dwd.dwd_platform_coupon_redemption_ex",
|
||||
"mode": "INCREMENT",
|
||||
"inserted": 0,
|
||||
"updated": 0,
|
||||
"processed": 0
|
||||
},
|
||||
{
|
||||
"table": "billiards_dwd.dwd_recharge_order",
|
||||
"mode": "INCREMENT",
|
||||
"inserted": 0,
|
||||
"updated": 0,
|
||||
"processed": 0
|
||||
},
|
||||
{
|
||||
"table": "billiards_dwd.dwd_recharge_order_ex",
|
||||
"mode": "INCREMENT",
|
||||
"inserted": 0,
|
||||
"updated": 0,
|
||||
"processed": 0
|
||||
},
|
||||
{
|
||||
"table": "billiards_dwd.dwd_payment",
|
||||
"mode": "INCREMENT",
|
||||
"inserted": 1,
|
||||
"updated": 0,
|
||||
"processed": 1
|
||||
},
|
||||
{
|
||||
"table": "billiards_dwd.dwd_refund",
|
||||
"mode": "INCREMENT",
|
||||
"inserted": 0,
|
||||
"updated": 0,
|
||||
"processed": 0
|
||||
},
|
||||
{
|
||||
"table": "billiards_dwd.dwd_refund_ex",
|
||||
"mode": "INCREMENT",
|
||||
"inserted": 0,
|
||||
"updated": 0,
|
||||
"processed": 0
|
||||
}
|
||||
],
|
||||
"errors": []
|
||||
}
|
||||
Reference in New Issue
Block a user