更新数据库文档 20260201-2

This commit is contained in:
Neo
2026-02-01 23:42:18 +08:00
parent 9b2c2c5c78
commit 294c6edbc9
47 changed files with 961 additions and 138 deletions

View File

@@ -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,

View File

@@ -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.*

View File

@@ -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

View File

@@ -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

View File

@@ -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

View File

@@ -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.*

View File

@@ -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

View File

@@ -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

View File

@@ -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

View File

@@ -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

View File

@@ -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` 关联,提供台桌和台区名称信息。

View File

@@ -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` 关联,提供门店、台桌名称、操作员等扩展信息。

View File

@@ -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` 关联,提供操作员和门店名称等扩展信息。

View File

@@ -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` 字段在抖音渠道的核销记录中包含核验信息。

View File

@@ -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` 关联,提供操作员、各类金额明细等扩展信息。
**注意**: 样本数据获取时因日期解析错误未能获取。

View File

@@ -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` 关联,提供退款状态和渠道等扩展信息。

View File

@@ -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

View File

@@ -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` 关联,提供销售详情、折扣优惠等扩展信息。

View File

@@ -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` 关联,提供调整类型、申请人、操作员等扩展信息。

View File

@@ -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` 关联,提供操作员和时间相关的扩展信息。

View File

@@ -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 条,含义为"有效"
- **[待确认]** 表示该值的含义无法从数据中确定

View File

@@ -2,7 +2,6 @@
> 生成时间2026-01-28
## 表信息
| 属性 | 值 |
@@ -40,6 +39,7 @@
## 使用说明
使用 scd2_is_current = 1 获取当前版本。
```sql
-- 查询当前在职助教
SELECT * FROM billiards_dwd.dim_assistant

View File

@@ -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>;

View File

@@ -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;
```

View File

@@ -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

View File

@@ -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

View File

@@ -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

View File

@@ -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

View File

@@ -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

View File

@@ -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

View File

@@ -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

View File

@@ -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

View File

@@ -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

View File

@@ -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

View File

@@ -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

View File

@@ -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

View File

@@ -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

View File

@@ -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

View File

@@ -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,

View File

@@ -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

View File

@@ -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

View File

@@ -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

View File

@@ -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)

View File

@@ -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))

View File

@@ -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():

File diff suppressed because one or more lines are too long

302
tmp/1.json Normal file
View 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": []
}