## P1 数据库基础 - zqyy_app: 创建 auth/biz schema、FDW 连接 etl_feiqiu - etl_feiqiu: 创建 app schema RLS 视图、商品库存预警表 - 清理 assistant_abolish 残留数据 ## P2 ETL/DWS 扩展 - 新增 DWS 助教订单贡献度表 (dws.assistant_order_contribution) - 新增 assistant_order_contribution_task 任务及 RLS 视图 - member_consumption 增加充值字段、assistant_daily 增加处罚字段 - 更新 ODS/DWD/DWS 任务文档及业务规则文档 - 更新 consistency_checker、flow_runner、task_registry 等核心模块 ## P3 小程序鉴权系统 - 新增 xcx_auth 路由/schema(微信登录 + JWT) - 新增 wechat/role/matching/application 服务层 - zqyy_app 鉴权表迁移 + 角色权限种子数据 - auth/dependencies.py 支持小程序 JWT 鉴权 ## 文档与审计 - 新增 DOCUMENTATION-MAP 文档导航 - 新增 7 份 BD_Manual 数据库变更文档 - 更新 DDL 基线快照(etl_feiqiu 6 schema + zqyy_app auth) - 新增全栈集成审计记录、部署检查清单更新 - 新增 BACKLOG 路线图、FDW→Core 迁移计划 ## Kiro 工程化 - 新增 5 个 Spec(P1/P2/P3/全栈集成/核心业务) - 新增审计自动化脚本(agent_on_stop/build_audit_context/compliance_prescan) - 新增 6 个 Hook(合规检查/会话日志/提交审计等) - 新增 doc-map steering 文件 ## 运维与测试 - 新增 ops 脚本:迁移验证/API 健康检查/ETL 监控/集成报告 - 新增属性测试:test_dws_contribution / test_auth_system - 清理过期 export 报告文件 - 更新 .gitignore 排除规则
6 lines
122 KiB
JSON
6 lines
122 KiB
JSON
{
|
||
"execution_id": "41574845-de7d-4315-8cb8-20e6f5485bf6",
|
||
"output_log": "",
|
||
"error_log": "[2026-02-24 06:24:14] INFO | etl_billiards | 配置加载完成\n[2026-02-24 06:24:14] INFO | etl_billiards | 门店ID: 2790685415443269\n[2026-02-24 06:24:14] INFO | etl_billiards | 执行模式: Flow 模式\n[2026-02-24 06:24:14] INFO | etl_billiards | Flow 类型: api_full\n[2026-02-24 06:24:14] INFO | etl_billiards | 处理模式: full_window\n[2026-02-24 06:24:14] INFO | etl_billiards | FLOW_API_FULL | 开始执行 Flow: api_full | 开始时间: 2026-02-24 06:24:14\n[2026-02-24 06:24:14] INFO | etl_billiards | Flow api_full: 执行增量 ETL,层=['ODS', 'DWD', 'DWS', 'INDEX']\n[2026-02-24 06:24:14] INFO | etl_billiards | 开始运行任务: ['ODS_ASSISTANT_ACCOUNT', 'ODS_ASSISTANT_LEDGER', 'ODS_ASSISTANT_ABOLISH', 'ODS_SETTLEMENT_RECORDS', 'ODS_PAYMENT', 'ODS_REFUND', 'ODS_TABLE_USE', 'ODS_TABLE_FEE_DISCOUNT', 'ODS_TABLES', 'ODS_MEMBER', 'ODS_MEMBER_CARD', 'ODS_MEMBER_BALANCE', 'ODS_RECHARGE_SETTLE', 'ODS_GOODS_CATEGORY', 'ODS_STORE_GOODS', 'ODS_STORE_GOODS_SALES', 'ODS_TENANT_GOODS', 'ODS_PLATFORM_COUPON', 'ODS_GROUP_PACKAGE', 'ODS_GROUP_BUY_REDEMPTION', 'ODS_INVENTORY_STOCK', 'ODS_INVENTORY_CHANGE', 'DWD_LOAD_FROM_ODS', 'DWS_GOODS_STOCK_DAILY', 'DWS_GOODS_STOCK_WEEKLY', 'DWS_GOODS_STOCK_MONTHLY', 'DWS_ASSISTANT_DAILY', 'DWS_ASSISTANT_CUSTOMER', 'DWS_ASSISTANT_SALARY', 'DWS_BUILD_ORDER_SUMMARY', 'DWS_MEMBER_CONSUMPTION', 'DWS_MEMBER_VISIT', 'DWS_FINANCE_DAILY', 'DWS_FINANCE_RECHARGE', 'DWS_FINANCE_INCOME_STRUCTURE', 'DWS_FINANCE_DISCOUNT_DETAIL', 'DWS_ASSISTANT_MONTHLY', 'DWS_ASSISTANT_FINANCE', 'DWS_WINBACK_INDEX', 'DWS_NEWCONV_INDEX', 'DWS_RELATION_INDEX'], run_uuid=0af5c41826e14728adbf974283f438bb\n[2026-02-24 06:24:14] INFO | etl_billiards | ODS_ASSISTANT_ACCOUNT: ODS fetch+load start, dir=C:\\NeoZQYY\\export\\ETL-Connectors\\feiqiu\\JSON\\ODS_ASSISTANT_ACCOUNT\\ODS_ASSISTANT_ACCOUNT-8983-20260224-062414\n[2026-02-24 06:24:14] INFO | etl_billiards | 开始执行ODS_ASSISTANT_ACCOUNT (ODS)\n[2026-02-24 06:24:14] INFO | etl_billiards | ODS_ASSISTANT_ACCOUNT: 窗口拆分为 4 段(共 111.17 天)\n[2026-02-24 06:24:15] INFO | etl_billiards | ODS_ASSISTANT_ACCOUNT: 开始执行(1/4),窗口[2025-10-31 22:00:00+08:00 ~ 2025-11-30 22:00:00+08:00]\n[2026-02-24 06:24:16] INFO | etl_billiards | ODS_ASSISTANT_ACCOUNT: 完成(1/4),已处理 30/111.17 天\n[2026-02-24 06:24:16] INFO | etl_billiards | ODS_ASSISTANT_ACCOUNT: 开始执行(2/4),窗口[2025-11-30 22:00:00+08:00 ~ 2025-12-30 22:00:00+08:00]\n[2026-02-24 06:24:17] INFO | etl_billiards | ODS_ASSISTANT_ACCOUNT: 完成(2/4),已处理 60/111.17 天\n[2026-02-24 06:24:17] INFO | etl_billiards | ODS_ASSISTANT_ACCOUNT: 开始执行(3/4),窗口[2025-12-30 22:00:00+08:00 ~ 2026-01-29 22:00:00+08:00]\n[2026-02-24 06:24:18] INFO | etl_billiards | ODS_ASSISTANT_ACCOUNT: 完成(3/4),已处理 90/111.17 天\n[2026-02-24 06:24:18] INFO | etl_billiards | ODS_ASSISTANT_ACCOUNT: 开始执行(4/4),窗口[2026-01-29 22:00:00+08:00 ~ 2026-02-20 02:00:00+08:00]\n[2026-02-24 06:24:20] INFO | etl_billiards | ODS_ASSISTANT_ACCOUNT: 完成(4/4),已处理 111.17/111.17 天\n[2026-02-24 06:24:20] INFO | etl_billiards | ODS_ASSISTANT_ACCOUNT ODS 任务完成: {'fetched': 276, 'inserted': 0, 'updated': 276, 'skipped': 0, 'errors': 0, 'deleted': 0}\n[2026-02-24 06:24:20] INFO | etl_billiards | ODS_ASSISTANT_LEDGER: ODS fetch+load start, dir=C:\\NeoZQYY\\export\\ETL-Connectors\\feiqiu\\JSON\\ODS_ASSISTANT_LEDGER\\ODS_ASSISTANT_LEDGER-8984-20260224-062420\n[2026-02-24 06:24:20] INFO | etl_billiards | 开始执行ODS_ASSISTANT_LEDGER (ODS)\n[2026-02-24 06:24:20] INFO | etl_billiards | ODS_ASSISTANT_LEDGER: 窗口拆分为 4 段(共 111.17 天)\n[2026-02-24 06:24:20] INFO | etl_billiards | ODS_ASSISTANT_LEDGER: 开始执行(1/4),窗口[2025-10-31 22:00:00+08:00 ~ 2025-11-30 22:00:00+08:00]\n[2026-02-24 06:24:23] INFO | etl_billiards | ODS_ASSISTANT_LEDGER: early-cutoff 保护生效,软删除窗口起点从 2025-10-31 22:00:00+08:00 收窄至 2025-10-31 22:23:40+08:00\n[2026-02-24 06:24:23] INFO | etl_billiards | ODS_ASSISTANT_LEDGER: late-cutoff 保护生效,软删除窗口终点从 2025-11-30 22:00:00+08:00 收窄至 2025-11-30 21:01:55+08:00\n[2026-02-24 06:24:24] INFO | etl_billiards | ODS_ASSISTANT_LEDGER: 完成(1/4),已处理 30/111.17 天\n[2026-02-24 06:24:24] INFO | etl_billiards | ODS_ASSISTANT_LEDGER: 开始执行(2/4),窗口[2025-11-30 22:00:00+08:00 ~ 2025-12-30 22:00:00+08:00]\n[2026-02-24 06:24:33] INFO | etl_billiards | ODS_ASSISTANT_LEDGER: early-cutoff 保护生效,软删除窗口起点从 2025-11-30 22:00:00+08:00 收窄至 2025-11-30 22:29:58+08:00\n[2026-02-24 06:24:33] INFO | etl_billiards | ODS_ASSISTANT_LEDGER: late-cutoff 保护生效,软删除窗口终点从 2025-12-30 22:00:00+08:00 收窄至 2025-12-30 21:26:01+08:00\n[2026-02-24 06:24:33] INFO | etl_billiards | ODS_ASSISTANT_LEDGER: 完成(2/4),已处理 60/111.17 天\n[2026-02-24 06:24:33] INFO | etl_billiards | ODS_ASSISTANT_LEDGER: 开始执行(3/4),窗口[2025-12-30 22:00:00+08:00 ~ 2026-01-29 22:00:00+08:00]\n[2026-02-24 06:24:41] INFO | etl_billiards | ODS_ASSISTANT_LEDGER: early-cutoff 保护生效,软删除窗口起点从 2025-12-30 22:00:00+08:00 收窄至 2025-12-30 22:48:21+08:00\n[2026-02-24 06:24:41] INFO | etl_billiards | ODS_ASSISTANT_LEDGER: late-cutoff 保护生效,软删除窗口终点从 2026-01-29 22:00:00+08:00 收窄至 2026-01-29 21:58:25+08:00\n[2026-02-24 06:24:41] INFO | etl_billiards | ODS_ASSISTANT_LEDGER: 完成(3/4),已处理 90/111.17 天\n[2026-02-24 06:24:41] INFO | etl_billiards | ODS_ASSISTANT_LEDGER: 开始执行(4/4),窗口[2026-01-29 22:00:00+08:00 ~ 2026-02-20 02:00:00+08:00]\n[2026-02-24 06:24:44] INFO | etl_billiards | ODS_ASSISTANT_LEDGER: early-cutoff 保护生效,软删除窗口起点从 2026-01-29 22:00:00+08:00 收窄至 2026-01-29 22:07:25+08:00\n[2026-02-24 06:24:44] INFO | etl_billiards | ODS_ASSISTANT_LEDGER: late-cutoff 保护生效,软删除窗口终点从 2026-02-20 02:00:00+08:00 收窄至 2026-02-13 04:49:48+08:00\n[2026-02-24 06:24:44] INFO | etl_billiards | ODS_ASSISTANT_LEDGER: 完成(4/4),已处理 111.17/111.17 天\n[2026-02-24 06:24:44] INFO | etl_billiards | ODS_ASSISTANT_LEDGER ODS 任务完成: {'fetched': 2210, 'inserted': 148, 'updated': 2210, 'skipped': 0, 'errors': 0, 'deleted': 148}\n[2026-02-24 06:24:44] WARNING | etl_billiards | 任务 ODS_ASSISTANT_ABOLISH 未启用或不存在\n[2026-02-24 06:24:45] INFO | etl_billiards | ODS_SETTLEMENT_RECORDS: ODS fetch+load start, dir=C:\\NeoZQYY\\export\\ETL-Connectors\\feiqiu\\JSON\\ODS_SETTLEMENT_RECORDS\\ODS_SETTLEMENT_RECORDS-8985-20260224-062445\n[2026-02-24 06:24:45] INFO | etl_billiards | 开始执行ODS_SETTLEMENT_RECORDS (ODS)\n[2026-02-24 06:24:45] INFO | etl_billiards | ODS_SETTLEMENT_RECORDS: 窗口拆分为 4 段(共 111.17 天)\n[2026-02-24 06:24:45] INFO | etl_billiards | ODS_SETTLEMENT_RECORDS: 开始执行(1/4),窗口[2025-10-31 22:00:00+08:00 ~ 2025-11-30 22:00:00+08:00]\n[2026-02-24 06:24:54] INFO | etl_billiards | ODS_SETTLEMENT_RECORDS: 完成(1/4),已处理 30/111.17 天\n[2026-02-24 06:24:54] INFO | etl_billiards | ODS_SETTLEMENT_RECORDS: 开始执行(2/4),窗口[2025-11-30 22:00:00+08:00 ~ 2025-12-30 22:00:00+08:00]\n[2026-02-24 06:25:33] INFO | etl_billiards | ODS_SETTLEMENT_RECORDS: 完成(2/4),已处理 60/111.17 天\n[2026-02-24 06:25:33] INFO | etl_billiards | ODS_SETTLEMENT_RECORDS: 开始执行(3/4),窗口[2025-12-30 22:00:00+08:00 ~ 2026-01-29 22:00:00+08:00]\n[2026-02-24 06:26:09] INFO | etl_billiards | ODS_SETTLEMENT_RECORDS: 完成(3/4),已处理 90/111.17 天\n[2026-02-24 06:26:09] INFO | etl_billiards | ODS_SETTLEMENT_RECORDS: 开始执行(4/4),窗口[2026-01-29 22:00:00+08:00 ~ 2026-02-20 02:00:00+08:00]\n[2026-02-24 06:26:23] INFO | etl_billiards | ODS_SETTLEMENT_RECORDS: 完成(4/4),已处理 111.17/111.17 天\n[2026-02-24 06:26:23] INFO | etl_billiards | ODS_SETTLEMENT_RECORDS ODS 任务完成: {'fetched': 10051, 'inserted': 0, 'updated': 10051, 'skipped': 0, 'errors': 0, 'deleted': 0}\n[2026-02-24 06:26:24] INFO | etl_billiards | ODS_PAYMENT: ODS fetch+load start, dir=C:\\NeoZQYY\\export\\ETL-Connectors\\feiqiu\\JSON\\ODS_PAYMENT\\ODS_PAYMENT-8986-20260224-062624\n[2026-02-24 06:26:24] INFO | etl_billiards | 开始执行ODS_PAYMENT (ODS)\n[2026-02-24 06:26:24] INFO | etl_billiards | ODS_PAYMENT: 窗口拆分为 4 段(共 111.17 天)\n[2026-02-24 06:26:24] INFO | etl_billiards | ODS_PAYMENT: 开始执行(1/4),窗口[2025-10-31 22:00:00+08:00 ~ 2025-11-30 22:00:00+08:00]\n[2026-02-24 06:27:23] INFO | etl_billiards | ODS_PAYMENT: 完成(1/4),已处理 30/111.17 天\n[2026-02-24 06:27:23] INFO | etl_billiards | ODS_PAYMENT: 开始执行(2/4),窗口[2025-11-30 22:00:00+08:00 ~ 2025-12-30 22:00:00+08:00]\n[2026-02-24 06:28:21] INFO | etl_billiards | ODS_PAYMENT: 完成(2/4),已处理 60/111.17 天\n[2026-02-24 06:28:21] INFO | etl_billiards | ODS_PAYMENT: 开始执行(3/4),窗口[2025-12-30 22:00:00+08:00 ~ 2026-01-29 22:00:00+08:00]\n[2026-02-24 06:29:19] INFO | etl_billiards | ODS_PAYMENT: 完成(3/4),已处理 90/111.17 天\n[2026-02-24 06:29:19] INFO | etl_billiards | ODS_PAYMENT: 开始执行(4/4),窗口[2026-01-29 22:00:00+08:00 ~ 2026-02-20 02:00:00+08:00]\n[2026-02-24 06:30:14] INFO | etl_billiards | ODS_PAYMENT: 完成(4/4),已处理 111.17/111.17 天\n[2026-02-24 06:30:14] INFO | etl_billiards | ODS_PAYMENT ODS 任务完成: {'fetched': 41172, 'inserted': 0, 'updated': 41172, 'skipped': 0, 'errors': 0, 'deleted': 0}\n[2026-02-24 06:30:15] INFO | etl_billiards | ODS_REFUND: ODS fetch+load start, dir=C:\\NeoZQYY\\export\\ETL-Connectors\\feiqiu\\JSON\\ODS_REFUND\\ODS_REFUND-8987-20260224-063015\n[2026-02-24 06:30:15] INFO | etl_billiards | 开始执行ODS_REFUND (ODS)\n[2026-02-24 06:30:15] INFO | etl_billiards | ODS_REFUND: 窗口拆分为 4 段(共 111.17 天)\n[2026-02-24 06:30:15] INFO | etl_billiards | ODS_REFUND: 开始执行(1/4),窗口[2025-10-31 22:00:00+08:00 ~ 2025-11-30 22:00:00+08:00]\n[2026-02-24 06:30:16] INFO | etl_billiards | ODS_REFUND: early-cutoff 保护生效,软删除窗口起点从 2025-10-31 22:00:00+08:00 收窄至 2025-11-23 15:59:24+08:00\n[2026-02-24 06:30:16] INFO | etl_billiards | ODS_REFUND: 完成(1/4),已处理 30/111.17 天\n[2026-02-24 06:30:16] INFO | etl_billiards | ODS_REFUND: 开始执行(2/4),窗口[2025-11-30 22:00:00+08:00 ~ 2025-12-30 22:00:00+08:00]\n[2026-02-24 06:30:16] INFO | etl_billiards | ODS_REFUND: 完成(2/4),已处理 60/111.17 天\n[2026-02-24 06:30:16] INFO | etl_billiards | ODS_REFUND: 开始执行(3/4),窗口[2025-12-30 22:00:00+08:00 ~ 2026-01-29 22:00:00+08:00]\n[2026-02-24 06:30:17] INFO | etl_billiards | ODS_REFUND: 完成(3/4),已处理 90/111.17 天\n[2026-02-24 06:30:17] INFO | etl_billiards | ODS_REFUND: 开始执行(4/4),窗口[2026-01-29 22:00:00+08:00 ~ 2026-02-20 02:00:00+08:00]\n[2026-02-24 06:30:17] INFO | etl_billiards | ODS_REFUND: late-cutoff 保护生效,软删除窗口终点从 2026-02-20 02:00:00+08:00 收窄至 2026-02-10 23:41:06+08:00\n[2026-02-24 06:30:17] INFO | etl_billiards | ODS_REFUND: 完成(4/4),已处理 111.17/111.17 天\n[2026-02-24 06:30:17] INFO | etl_billiards | ODS_REFUND ODS 任务完成: {'fetched': 112, 'inserted': 0, 'updated': 112, 'skipped': 0, 'errors': 0, 'deleted': 0}\n[2026-02-24 06:30:18] INFO | etl_billiards | ODS_TABLE_USE: ODS fetch+load start, dir=C:\\NeoZQYY\\export\\ETL-Connectors\\feiqiu\\JSON\\ODS_TABLE_USE\\ODS_TABLE_USE-8988-20260224-063018\n[2026-02-24 06:30:18] INFO | etl_billiards | 开始执行ODS_TABLE_USE (ODS)\n[2026-02-24 06:30:18] INFO | etl_billiards | ODS_TABLE_USE: 窗口拆分为 4 段(共 111.17 天)\n[2026-02-24 06:30:18] INFO | etl_billiards | ODS_TABLE_USE: 开始执行(1/4),窗口[2025-10-31 22:00:00+08:00 ~ 2025-11-30 22:00:00+08:00]\n[2026-02-24 06:31:27] INFO | etl_billiards | ODS_TABLE_USE: early-cutoff 保护生效,软删除窗口起点从 2025-10-31 22:00:00+08:00 收窄至 2025-11-23 11:36:36+08:00\n[2026-02-24 06:31:27] INFO | etl_billiards | ODS_TABLE_USE: 完成(1/4),已处理 30/111.17 天\n[2026-02-24 06:31:27] INFO | etl_billiards | ODS_TABLE_USE: 开始执行(2/4),窗口[2025-11-30 22:00:00+08:00 ~ 2025-12-30 22:00:00+08:00]\n[2026-02-24 06:32:37] INFO | etl_billiards | ODS_TABLE_USE: 完成(2/4),已处理 60/111.17 天\n[2026-02-24 06:32:37] INFO | etl_billiards | ODS_TABLE_USE: 开始执行(3/4),窗口[2025-12-30 22:00:00+08:00 ~ 2026-01-29 22:00:00+08:00]\n[2026-02-24 06:33:49] INFO | etl_billiards | ODS_TABLE_USE: 完成(3/4),已处理 90/111.17 天\n[2026-02-24 06:33:49] INFO | etl_billiards | ODS_TABLE_USE: 开始执行(4/4),窗口[2026-01-29 22:00:00+08:00 ~ 2026-02-20 02:00:00+08:00]\n[2026-02-24 06:34:53] INFO | etl_billiards | ODS_TABLE_USE: late-cutoff 保护生效,软删除窗口终点从 2026-02-20 02:00:00+08:00 收窄至 2026-02-14 00:16:27+08:00\n[2026-02-24 06:34:53] INFO | etl_billiards | ODS_TABLE_USE: 完成(4/4),已处理 111.17/111.17 天\n[2026-02-24 06:34:53] INFO | etl_billiards | ODS_TABLE_USE ODS 任务完成: {'fetched': 35304, 'inserted': 0, 'updated': 35304, 'skipped': 0, 'errors': 0, 'deleted': 0}\n[2026-02-24 06:34:53] INFO | etl_billiards | ODS_TABLE_FEE_DISCOUNT: ODS fetch+load start, dir=C:\\NeoZQYY\\export\\ETL-Connectors\\feiqiu\\JSON\\ODS_TABLE_FEE_DISCOUNT\\ODS_TABLE_FEE_DISCOUNT-8989-20260224-063453\n[2026-02-24 06:34:53] INFO | etl_billiards | 开始执行ODS_TABLE_FEE_DISCOUNT (ODS)\n[2026-02-24 06:34:53] INFO | etl_billiards | ODS_TABLE_FEE_DISCOUNT: 窗口拆分为 4 段(共 111.17 天)\n[2026-02-24 06:34:54] INFO | etl_billiards | ODS_TABLE_FEE_DISCOUNT: 开始执行(1/4),窗口[2025-10-31 22:00:00+08:00 ~ 2025-11-30 22:00:00+08:00]\n[2026-02-24 06:35:07] INFO | etl_billiards | ODS_TABLE_FEE_DISCOUNT: early-cutoff 保护生效,软删除窗口起点从 2025-10-31 22:00:00+08:00 收窄至 2025-11-23 17:48:17+08:00\n[2026-02-24 06:35:08] INFO | etl_billiards | ODS_TABLE_FEE_DISCOUNT: 完成(1/4),已处理 30/111.17 天\n[2026-02-24 06:35:08] INFO | etl_billiards | ODS_TABLE_FEE_DISCOUNT: 开始执行(2/4),窗口[2025-11-30 22:00:00+08:00 ~ 2025-12-30 22:00:00+08:00]\n[2026-02-24 06:35:21] INFO | etl_billiards | ODS_TABLE_FEE_DISCOUNT: 完成(2/4),已处理 60/111.17 天\n[2026-02-24 06:35:21] INFO | etl_billiards | ODS_TABLE_FEE_DISCOUNT: 开始执行(3/4),窗口[2025-12-30 22:00:00+08:00 ~ 2026-01-29 22:00:00+08:00]\n[2026-02-24 06:35:34] INFO | etl_billiards | ODS_TABLE_FEE_DISCOUNT: 完成(3/4),已处理 90/111.17 天\n[2026-02-24 06:35:34] INFO | etl_billiards | ODS_TABLE_FEE_DISCOUNT: 开始执行(4/4),窗口[2026-01-29 22:00:00+08:00 ~ 2026-02-20 02:00:00+08:00]\n[2026-02-24 06:35:48] INFO | etl_billiards | ODS_TABLE_FEE_DISCOUNT: late-cutoff 保护生效,软删除窗口终点从 2026-02-20 02:00:00+08:00 收窄至 2026-02-13 21:56:07+08:00\n[2026-02-24 06:35:48] INFO | etl_billiards | ODS_TABLE_FEE_DISCOUNT: 完成(4/4),已处理 111.17/111.17 天\n[2026-02-24 06:35:48] INFO | etl_billiards | ODS_TABLE_FEE_DISCOUNT ODS 任务完成: {'fetched': 6212, 'inserted': 0, 'updated': 6212, 'skipped': 0, 'errors': 0, 'deleted': 0}\n[2026-02-24 06:35:48] INFO | etl_billiards | ODS_TABLES: ODS fetch+load start, dir=C:\\NeoZQYY\\export\\ETL-Connectors\\feiqiu\\JSON\\ODS_TABLES\\ODS_TABLES-8990-20260224-063548\n[2026-02-24 06:35:48] INFO | etl_billiards | 开始执行ODS_TABLES (ODS)\n[2026-02-24 06:35:48] INFO | etl_billiards | ODS_TABLES: 窗口拆分为 4 段(共 111.17 天)\n[2026-02-24 06:35:49] INFO | etl_billiards | ODS_TABLES: 开始执行(1/4),窗口[2025-10-31 22:00:00+08:00 ~ 2025-11-30 22:00:00+08:00]\n[2026-02-24 06:35:49] INFO | etl_billiards | ODS_TABLES: 完成(1/4),已处理 30/111.17 天\n[2026-02-24 06:35:49] INFO | etl_billiards | ODS_TABLES: 开始执行(2/4),窗口[2025-11-30 22:00:00+08:00 ~ 2025-12-30 22:00:00+08:00]\n[2026-02-24 06:35:50] INFO | etl_billiards | ODS_TABLES: 完成(2/4),已处理 60/111.17 天\n[2026-02-24 06:35:50] INFO | etl_billiards | ODS_TABLES: 开始执行(3/4),窗口[2025-12-30 22:00:00+08:00 ~ 2026-01-29 22:00:00+08:00]\n[2026-02-24 06:35:50] INFO | etl_billiards | ODS_TABLES: 完成(3/4),已处理 90/111.17 天\n[2026-02-24 06:35:50] INFO | etl_billiards | ODS_TABLES: 开始执行(4/4),窗口[2026-01-29 22:00:00+08:00 ~ 2026-02-20 02:00:00+08:00]\n[2026-02-24 06:35:51] INFO | etl_billiards | ODS_TABLES: 完成(4/4),已处理 111.17/111.17 天\n[2026-02-24 06:35:51] INFO | etl_billiards | ODS_TABLES ODS 任务完成: {'fetched': 296, 'inserted': 0, 'updated': 296, 'skipped': 0, 'errors': 0, 'deleted': 0}\n[2026-02-24 06:35:52] INFO | etl_billiards | ODS_MEMBER: ODS fetch+load start, dir=C:\\NeoZQYY\\export\\ETL-Connectors\\feiqiu\\JSON\\ODS_MEMBER\\ODS_MEMBER-8991-20260224-063552\n[2026-02-24 06:35:52] INFO | etl_billiards | 开始执行ODS_MEMBER (ODS)\n[2026-02-24 06:35:52] INFO | etl_billiards | ODS_MEMBER: 窗口拆分为 4 段(共 111.17 天)\n[2026-02-24 06:35:52] INFO | etl_billiards | ODS_MEMBER: 开始执行(1/4),窗口[2025-10-31 22:00:00+08:00 ~ 2025-11-30 22:00:00+08:00]\n[2026-02-24 06:35:55] INFO | etl_billiards | ODS_MEMBER: 完成(1/4),已处理 30/111.17 天\n[2026-02-24 06:35:55] INFO | etl_billiards | ODS_MEMBER: 开始执行(2/4),窗口[2025-11-30 22:00:00+08:00 ~ 2025-12-30 22:00:00+08:00]\n[2026-02-24 06:35:58] INFO | etl_billiards | ODS_MEMBER: 完成(2/4),已处理 60/111.17 天\n[2026-02-24 06:35:58] INFO | etl_billiards | ODS_MEMBER: 开始执行(3/4),窗口[2025-12-30 22:00:00+08:00 ~ 2026-01-29 22:00:00+08:00]\n[2026-02-24 06:36:01] INFO | etl_billiards | ODS_MEMBER: 完成(3/4),已处理 90/111.17 天\n[2026-02-24 06:36:01] INFO | etl_billiards | ODS_MEMBER: 开始执行(4/4),窗口[2026-01-29 22:00:00+08:00 ~ 2026-02-20 02:00:00+08:00]\n[2026-02-24 06:36:03] INFO | etl_billiards | ODS_MEMBER: 完成(4/4),已处理 111.17/111.17 天\n[2026-02-24 06:36:03] INFO | etl_billiards | ODS_MEMBER ODS 任务完成: {'fetched': 2228, 'inserted': 0, 'updated': 2228, 'skipped': 0, 'errors': 0, 'deleted': 0}\n[2026-02-24 06:36:04] INFO | etl_billiards | ODS_MEMBER_CARD: ODS fetch+load start, dir=C:\\NeoZQYY\\export\\ETL-Connectors\\feiqiu\\JSON\\ODS_MEMBER_CARD\\ODS_MEMBER_CARD-8992-20260224-063604\n[2026-02-24 06:36:04] INFO | etl_billiards | 开始执行ODS_MEMBER_CARD (ODS)\n[2026-02-24 06:36:04] INFO | etl_billiards | ODS_MEMBER_CARD: 窗口拆分为 4 段(共 111.17 天)\n[2026-02-24 06:36:04] INFO | etl_billiards | ODS_MEMBER_CARD: 开始执行(1/4),窗口[2025-10-31 22:00:00+08:00 ~ 2025-11-30 22:00:00+08:00]\n[2026-02-24 06:36:11] INFO | etl_billiards | ODS_MEMBER_CARD: 完成(1/4),已处理 30/111.17 天\n[2026-02-24 06:36:11] INFO | etl_billiards | ODS_MEMBER_CARD: 开始执行(2/4),窗口[2025-11-30 22:00:00+08:00 ~ 2025-12-30 22:00:00+08:00]\n[2026-02-24 06:36:17] INFO | etl_billiards | ODS_MEMBER_CARD: 完成(2/4),已处理 60/111.17 天\n[2026-02-24 06:36:17] INFO | etl_billiards | ODS_MEMBER_CARD: 开始执行(3/4),窗口[2025-12-30 22:00:00+08:00 ~ 2026-01-29 22:00:00+08:00]\n[2026-02-24 06:36:24] INFO | etl_billiards | ODS_MEMBER_CARD: 完成(3/4),已处理 90/111.17 天\n[2026-02-24 06:36:24] INFO | etl_billiards | ODS_MEMBER_CARD: 开始执行(4/4),窗口[2026-01-29 22:00:00+08:00 ~ 2026-02-20 02:00:00+08:00]\n[2026-02-24 06:36:31] INFO | etl_billiards | ODS_MEMBER_CARD: 完成(4/4),已处理 111.17/111.17 天\n[2026-02-24 06:36:31] INFO | etl_billiards | ODS_MEMBER_CARD ODS 任务完成: {'fetched': 3784, 'inserted': 0, 'updated': 3784, 'skipped': 0, 'errors': 0, 'deleted': 0}\n[2026-02-24 06:36:31] INFO | etl_billiards | ODS_MEMBER_BALANCE: ODS fetch+load start, dir=C:\\NeoZQYY\\export\\ETL-Connectors\\feiqiu\\JSON\\ODS_MEMBER_BALANCE\\ODS_MEMBER_BALANCE-8993-20260224-063631\n[2026-02-24 06:36:31] INFO | etl_billiards | 开始执行ODS_MEMBER_BALANCE (ODS)\n[2026-02-24 06:36:31] INFO | etl_billiards | ODS_MEMBER_BALANCE: 窗口拆分为 4 段(共 111.17 天)\n[2026-02-24 06:36:31] INFO | etl_billiards | ODS_MEMBER_BALANCE: 开始执行(1/4),窗口[2025-10-31 22:00:00+08:00 ~ 2025-11-30 22:00:00+08:00]\n[2026-02-24 06:37:00] INFO | etl_billiards | ODS_MEMBER_BALANCE: early-cutoff 保护生效,软删除窗口起点从 2025-10-31 22:00:00+08:00 收窄至 2025-11-23 15:18:37+08:00\n[2026-02-24 06:37:00] INFO | etl_billiards | ODS_MEMBER_BALANCE: 完成(1/4),已处理 30/111.17 天\n[2026-02-24 06:37:00] INFO | etl_billiards | ODS_MEMBER_BALANCE: 开始执行(2/4),窗口[2025-11-30 22:00:00+08:00 ~ 2025-12-30 22:00:00+08:00]\n[2026-02-24 06:37:27] INFO | etl_billiards | ODS_MEMBER_BALANCE: 完成(2/4),已处理 60/111.17 天\n[2026-02-24 06:37:27] INFO | etl_billiards | ODS_MEMBER_BALANCE: 开始执行(3/4),窗口[2025-12-30 22:00:00+08:00 ~ 2026-01-29 22:00:00+08:00]\n[2026-02-24 06:37:52] INFO | etl_billiards | ODS_MEMBER_BALANCE: 完成(3/4),已处理 90/111.17 天\n[2026-02-24 06:37:52] INFO | etl_billiards | ODS_MEMBER_BALANCE: 开始执行(4/4),窗口[2026-01-29 22:00:00+08:00 ~ 2026-02-20 02:00:00+08:00]\n[2026-02-24 06:38:18] INFO | etl_billiards | ODS_MEMBER_BALANCE: late-cutoff 保护生效,软删除窗口终点从 2026-02-20 02:00:00+08:00 收窄至 2026-02-14 00:01:01+08:00\n[2026-02-24 06:38:18] INFO | etl_billiards | ODS_MEMBER_BALANCE: 完成(4/4),已处理 111.17/111.17 天\n[2026-02-24 06:38:18] INFO | etl_billiards | ODS_MEMBER_BALANCE ODS 任务完成: {'fetched': 8360, 'inserted': 0, 'updated': 8360, 'skipped': 0, 'errors': 0, 'deleted': 0}\n[2026-02-24 06:38:19] INFO | etl_billiards | ODS_RECHARGE_SETTLE: ODS fetch+load start, dir=C:\\NeoZQYY\\export\\ETL-Connectors\\feiqiu\\JSON\\ODS_RECHARGE_SETTLE\\ODS_RECHARGE_SETTLE-8994-20260224-063819\n[2026-02-24 06:38:19] INFO | etl_billiards | 开始执行ODS_RECHARGE_SETTLE (ODS)\n[2026-02-24 06:38:19] INFO | etl_billiards | ODS_RECHARGE_SETTLE: 窗口拆分为 4 段(共 111.17 天)\n[2026-02-24 06:38:19] INFO | etl_billiards | ODS_RECHARGE_SETTLE: 开始执行(1/4),窗口[2025-10-31 22:00:00+08:00 ~ 2025-11-30 22:00:00+08:00]\n[2026-02-24 06:38:20] INFO | etl_billiards | ODS_RECHARGE_SETTLE: 完成(1/4),已处理 30/111.17 天\n[2026-02-24 06:38:20] INFO | etl_billiards | ODS_RECHARGE_SETTLE: 开始执行(2/4),窗口[2025-11-30 22:00:00+08:00 ~ 2025-12-30 22:00:00+08:00]\n[2026-02-24 06:38:21] INFO | etl_billiards | ODS_RECHARGE_SETTLE: 完成(2/4),已处理 60/111.17 天\n[2026-02-24 06:38:21] INFO | etl_billiards | ODS_RECHARGE_SETTLE: 开始执行(3/4),窗口[2025-12-30 22:00:00+08:00 ~ 2026-01-29 22:00:00+08:00]\n[2026-02-24 06:38:22] INFO | etl_billiards | ODS_RECHARGE_SETTLE: 完成(3/4),已处理 90/111.17 天\n[2026-02-24 06:38:22] INFO | etl_billiards | ODS_RECHARGE_SETTLE: 开始执行(4/4),窗口[2026-01-29 22:00:00+08:00 ~ 2026-02-20 02:00:00+08:00]\n[2026-02-24 06:38:22] INFO | etl_billiards | ODS_RECHARGE_SETTLE: 完成(4/4),已处理 111.17/111.17 天\n[2026-02-24 06:38:22] INFO | etl_billiards | ODS_RECHARGE_SETTLE ODS 任务完成: {'fetched': 177, 'inserted': 0, 'updated': 177, 'skipped': 0, 'errors': 0, 'deleted': 0}\n[2026-02-24 06:38:23] INFO | etl_billiards | ODS_GOODS_CATEGORY: ODS fetch+load start, dir=C:\\NeoZQYY\\export\\ETL-Connectors\\feiqiu\\JSON\\ODS_GOODS_CATEGORY\\ODS_GOODS_CATEGORY-8995-20260224-063823\n[2026-02-24 06:38:23] INFO | etl_billiards | 开始执行ODS_GOODS_CATEGORY (ODS)\n[2026-02-24 06:38:23] INFO | etl_billiards | ODS_GOODS_CATEGORY: 窗口拆分为 4 段(共 111.17 天)\n[2026-02-24 06:38:23] INFO | etl_billiards | ODS_GOODS_CATEGORY: 开始执行(1/4),窗口[2025-10-31 22:00:00+08:00 ~ 2025-11-30 22:00:00+08:00]\n[2026-02-24 06:38:23] INFO | etl_billiards | ODS_GOODS_CATEGORY: 完成(1/4),已处理 30/111.17 天\n[2026-02-24 06:38:23] INFO | etl_billiards | ODS_GOODS_CATEGORY: 开始执行(2/4),窗口[2025-11-30 22:00:00+08:00 ~ 2025-12-30 22:00:00+08:00]\n[2026-02-24 06:38:23] INFO | etl_billiards | ODS_GOODS_CATEGORY: 完成(2/4),已处理 60/111.17 天\n[2026-02-24 06:38:23] INFO | etl_billiards | ODS_GOODS_CATEGORY: 开始执行(3/4),窗口[2025-12-30 22:00:00+08:00 ~ 2026-01-29 22:00:00+08:00]\n[2026-02-24 06:38:24] INFO | etl_billiards | ODS_GOODS_CATEGORY: 完成(3/4),已处理 90/111.17 天\n[2026-02-24 06:38:24] INFO | etl_billiards | ODS_GOODS_CATEGORY: 开始执行(4/4),窗口[2026-01-29 22:00:00+08:00 ~ 2026-02-20 02:00:00+08:00]\n[2026-02-24 06:38:24] INFO | etl_billiards | ODS_GOODS_CATEGORY: 完成(4/4),已处理 111.17/111.17 天\n[2026-02-24 06:38:24] INFO | etl_billiards | ODS_GOODS_CATEGORY ODS 任务完成: {'fetched': 36, 'inserted': 0, 'updated': 36, 'skipped': 0, 'errors': 0, 'deleted': 0}\n[2026-02-24 06:38:25] INFO | etl_billiards | ODS_STORE_GOODS: ODS fetch+load start, dir=C:\\NeoZQYY\\export\\ETL-Connectors\\feiqiu\\JSON\\ODS_STORE_GOODS\\ODS_STORE_GOODS-8996-20260224-063825\n[2026-02-24 06:38:25] INFO | etl_billiards | 开始执行ODS_STORE_GOODS (ODS)\n[2026-02-24 06:38:25] INFO | etl_billiards | ODS_STORE_GOODS: 窗口拆分为 4 段(共 111.17 天)\n[2026-02-24 06:38:25] INFO | etl_billiards | ODS_STORE_GOODS: 开始执行(1/4),窗口[2025-10-31 22:00:00+08:00 ~ 2025-11-30 22:00:00+08:00]\n[2026-02-24 06:38:26] INFO | etl_billiards | ODS_STORE_GOODS: 完成(1/4),已处理 30/111.17 天\n[2026-02-24 06:38:26] INFO | etl_billiards | ODS_STORE_GOODS: 开始执行(2/4),窗口[2025-11-30 22:00:00+08:00 ~ 2025-12-30 22:00:00+08:00]\n[2026-02-24 06:38:27] INFO | etl_billiards | ODS_STORE_GOODS: 完成(2/4),已处理 60/111.17 天\n[2026-02-24 06:38:27] INFO | etl_billiards | ODS_STORE_GOODS: 开始执行(3/4),窗口[2025-12-30 22:00:00+08:00 ~ 2026-01-29 22:00:00+08:00]\n[2026-02-24 06:38:28] INFO | etl_billiards | ODS_STORE_GOODS: 完成(3/4),已处理 90/111.17 天\n[2026-02-24 06:38:28] INFO | etl_billiards | ODS_STORE_GOODS: 开始执行(4/4),窗口[2026-01-29 22:00:00+08:00 ~ 2026-02-20 02:00:00+08:00]\n[2026-02-24 06:38:29] INFO | etl_billiards | ODS_STORE_GOODS: 完成(4/4),已处理 111.17/111.17 天\n[2026-02-24 06:38:29] INFO | etl_billiards | ODS_STORE_GOODS ODS 任务完成: {'fetched': 692, 'inserted': 173, 'updated': 519, 'skipped': 0, 'errors': 0, 'deleted': 0}\n[2026-02-24 06:38:29] INFO | etl_billiards | ODS_STORE_GOODS_SALES: ODS fetch+load start, dir=C:\\NeoZQYY\\export\\ETL-Connectors\\feiqiu\\JSON\\ODS_STORE_GOODS_SALES\\ODS_STORE_GOODS_SALES-8997-20260224-063829\n[2026-02-24 06:38:29] INFO | etl_billiards | 开始执行ODS_STORE_GOODS_SALES (ODS)\n[2026-02-24 06:38:29] INFO | etl_billiards | ODS_STORE_GOODS_SALES: 窗口拆分为 4 段(共 111.17 天)\n[2026-02-24 06:38:29] INFO | etl_billiards | ODS_STORE_GOODS_SALES: 开始执行(1/4),窗口[2025-10-31 22:00:00+08:00 ~ 2025-11-30 22:00:00+08:00]\n[2026-02-24 06:38:30] INFO | etl_billiards | ODS_STORE_GOODS_SALES: 完成(1/4),已处理 30/111.17 天\n[2026-02-24 06:38:30] INFO | etl_billiards | ODS_STORE_GOODS_SALES: 开始执行(2/4),窗口[2025-11-30 22:00:00+08:00 ~ 2025-12-30 22:00:00+08:00]\n[2026-02-24 06:38:30] INFO | etl_billiards | ODS_STORE_GOODS_SALES: 完成(2/4),已处理 60/111.17 天\n[2026-02-24 06:38:30] INFO | etl_billiards | ODS_STORE_GOODS_SALES: 开始执行(3/4),窗口[2025-12-30 22:00:00+08:00 ~ 2026-01-29 22:00:00+08:00]\n[2026-02-24 06:38:30] INFO | etl_billiards | ODS_STORE_GOODS_SALES: 完成(3/4),已处理 90/111.17 天\n[2026-02-24 06:38:30] INFO | etl_billiards | ODS_STORE_GOODS_SALES: 开始执行(4/4),窗口[2026-01-29 22:00:00+08:00 ~ 2026-02-20 02:00:00+08:00]\n[2026-02-24 06:38:30] INFO | etl_billiards | ODS_STORE_GOODS_SALES: 完成(4/4),已处理 111.17/111.17 天\n[2026-02-24 06:38:30] INFO | etl_billiards | ODS_STORE_GOODS_SALES ODS 任务完成: {'fetched': 0, 'inserted': 0, 'updated': 0, 'skipped': 0, 'errors': 0, 'deleted': 0}\n[2026-02-24 06:38:30] INFO | etl_billiards | ODS_TENANT_GOODS: ODS fetch+load start, dir=C:\\NeoZQYY\\export\\ETL-Connectors\\feiqiu\\JSON\\ODS_TENANT_GOODS\\ODS_TENANT_GOODS-8998-20260224-063830\n[2026-02-24 06:38:30] INFO | etl_billiards | 开始执行ODS_TENANT_GOODS (ODS)\n[2026-02-24 06:38:30] INFO | etl_billiards | ODS_TENANT_GOODS: 窗口拆分为 4 段(共 111.17 天)\n[2026-02-24 06:38:30] INFO | etl_billiards | ODS_TENANT_GOODS: 开始执行(1/4),窗口[2025-10-31 22:00:00+08:00 ~ 2025-11-30 22:00:00+08:00]\n[2026-02-24 06:38:32] INFO | etl_billiards | ODS_TENANT_GOODS: 完成(1/4),已处理 30/111.17 天\n[2026-02-24 06:38:32] INFO | etl_billiards | ODS_TENANT_GOODS: 开始执行(2/4),窗口[2025-11-30 22:00:00+08:00 ~ 2025-12-30 22:00:00+08:00]\n[2026-02-24 06:38:33] INFO | etl_billiards | ODS_TENANT_GOODS: 完成(2/4),已处理 60/111.17 天\n[2026-02-24 06:38:33] INFO | etl_billiards | ODS_TENANT_GOODS: 开始执行(3/4),窗口[2025-12-30 22:00:00+08:00 ~ 2026-01-29 22:00:00+08:00]\n[2026-02-24 06:38:34] INFO | etl_billiards | ODS_TENANT_GOODS: 完成(3/4),已处理 90/111.17 天\n[2026-02-24 06:38:34] INFO | etl_billiards | ODS_TENANT_GOODS: 开始执行(4/4),窗口[2026-01-29 22:00:00+08:00 ~ 2026-02-20 02:00:00+08:00]\n[2026-02-24 06:38:34] INFO | etl_billiards | ODS_TENANT_GOODS: 完成(4/4),已处理 111.17/111.17 天\n[2026-02-24 06:38:34] INFO | etl_billiards | ODS_TENANT_GOODS ODS 任务完成: {'fetched': 696, 'inserted': 0, 'updated': 696, 'skipped': 0, 'errors': 0, 'deleted': 0}\n[2026-02-24 06:38:35] INFO | etl_billiards | ODS_PLATFORM_COUPON: ODS fetch+load start, dir=C:\\NeoZQYY\\export\\ETL-Connectors\\feiqiu\\JSON\\ODS_PLATFORM_COUPON\\ODS_PLATFORM_COUPON-8999-20260224-063835\n[2026-02-24 06:38:35] INFO | etl_billiards | 开始执行ODS_PLATFORM_COUPON (ODS)\n[2026-02-24 06:38:35] INFO | etl_billiards | ODS_PLATFORM_COUPON: 窗口拆分为 4 段(共 111.17 天)\n[2026-02-24 06:38:35] INFO | etl_billiards | ODS_PLATFORM_COUPON: 开始执行(1/4),窗口[2025-10-31 22:00:00+08:00 ~ 2025-11-30 22:00:00+08:00]\n[2026-02-24 06:40:40] INFO | etl_billiards | ODS_PLATFORM_COUPON: 完成(1/4),已处理 30/111.17 天\n[2026-02-24 06:40:40] INFO | etl_billiards | ODS_PLATFORM_COUPON: 开始执行(2/4),窗口[2025-11-30 22:00:00+08:00 ~ 2025-12-30 22:00:00+08:00]\n[2026-02-24 06:42:44] INFO | etl_billiards | ODS_PLATFORM_COUPON: 完成(2/4),已处理 60/111.17 天\n[2026-02-24 06:42:44] INFO | etl_billiards | ODS_PLATFORM_COUPON: 开始执行(3/4),窗口[2025-12-30 22:00:00+08:00 ~ 2026-01-29 22:00:00+08:00]\n[2026-02-24 06:44:51] INFO | etl_billiards | ODS_PLATFORM_COUPON: 完成(3/4),已处理 90/111.17 天\n[2026-02-24 06:44:51] INFO | etl_billiards | ODS_PLATFORM_COUPON: 开始执行(4/4),窗口[2026-01-29 22:00:00+08:00 ~ 2026-02-20 02:00:00+08:00]\n[2026-02-24 06:46:54] INFO | etl_billiards | ODS_PLATFORM_COUPON: late-cutoff 保护生效,软删除窗口终点从 2026-02-20 02:00:00+08:00 收窄至 2026-02-13 22:59:56+08:00\n[2026-02-24 06:46:54] INFO | etl_billiards | ODS_PLATFORM_COUPON: 完成(4/4),已处理 111.17/111.17 天\n[2026-02-24 06:46:54] INFO | etl_billiards | ODS_PLATFORM_COUPON ODS 任务完成: {'fetched': 73244, 'inserted': 0, 'updated': 73244, 'skipped': 0, 'errors': 0, 'deleted': 0}\n[2026-02-24 06:46:54] INFO | etl_billiards | ODS_GROUP_PACKAGE: ODS fetch+load start, dir=C:\\NeoZQYY\\export\\ETL-Connectors\\feiqiu\\JSON\\ODS_GROUP_PACKAGE\\ODS_GROUP_PACKAGE-9000-20260224-064654\n[2026-02-24 06:46:54] INFO | etl_billiards | 开始执行ODS_GROUP_PACKAGE (ODS)\n[2026-02-24 06:46:54] INFO | etl_billiards | ODS_GROUP_PACKAGE: 窗口拆分为 4 段(共 111.17 天)\n[2026-02-24 06:46:55] INFO | etl_billiards | ODS_GROUP_PACKAGE: 开始执行(1/4),窗口[2025-10-31 22:00:00+08:00 ~ 2025-11-30 22:00:00+08:00]\n[2026-02-24 06:46:55] INFO | etl_billiards | ODS_GROUP_PACKAGE: 完成(1/4),已处理 30/111.17 天\n[2026-02-24 06:46:55] INFO | etl_billiards | ODS_GROUP_PACKAGE: 开始执行(2/4),窗口[2025-11-30 22:00:00+08:00 ~ 2025-12-30 22:00:00+08:00]\n[2026-02-24 06:46:56] INFO | etl_billiards | ODS_GROUP_PACKAGE: 完成(2/4),已处理 60/111.17 天\n[2026-02-24 06:46:56] INFO | etl_billiards | ODS_GROUP_PACKAGE: 开始执行(3/4),窗口[2025-12-30 22:00:00+08:00 ~ 2026-01-29 22:00:00+08:00]\n[2026-02-24 06:46:56] INFO | etl_billiards | ODS_GROUP_PACKAGE: 完成(3/4),已处理 90/111.17 天\n[2026-02-24 06:46:56] INFO | etl_billiards | ODS_GROUP_PACKAGE: 开始执行(4/4),窗口[2026-01-29 22:00:00+08:00 ~ 2026-02-20 02:00:00+08:00]\n[2026-02-24 06:46:57] INFO | etl_billiards | ODS_GROUP_PACKAGE: 完成(4/4),已处理 111.17/111.17 天\n[2026-02-24 06:46:57] INFO | etl_billiards | ODS_GROUP_PACKAGE ODS 任务完成: {'fetched': 72, 'inserted': 0, 'updated': 72, 'skipped': 0, 'errors': 0, 'deleted': 0}\n[2026-02-24 06:46:57] INFO | etl_billiards | ODS_GROUP_BUY_REDEMPTION: ODS fetch+load start, dir=C:\\NeoZQYY\\export\\ETL-Connectors\\feiqiu\\JSON\\ODS_GROUP_BUY_REDEMPTION\\ODS_GROUP_BUY_REDEMPTION-9001-20260224-064657\n[2026-02-24 06:46:57] INFO | etl_billiards | 开始执行ODS_GROUP_BUY_REDEMPTION (ODS)\n[2026-02-24 06:46:57] INFO | etl_billiards | ODS_GROUP_BUY_REDEMPTION: 窗口拆分为 4 段(共 111.17 天)\n[2026-02-24 06:46:57] INFO | etl_billiards | ODS_GROUP_BUY_REDEMPTION: 开始执行(1/4),窗口[2025-10-31 22:00:00+08:00 ~ 2025-11-30 22:00:00+08:00]\n[2026-02-24 06:47:57] INFO | etl_billiards | ODS_GROUP_BUY_REDEMPTION: early-cutoff 保护生效,软删除窗口起点从 2025-10-31 22:00:00+08:00 收窄至 2025-11-23 11:36:36+08:00\n[2026-02-24 06:47:57] INFO | etl_billiards | ODS_GROUP_BUY_REDEMPTION: 完成(1/4),已处理 30/111.17 天\n[2026-02-24 06:47:57] INFO | etl_billiards | ODS_GROUP_BUY_REDEMPTION: 开始执行(2/4),窗口[2025-11-30 22:00:00+08:00 ~ 2025-12-30 22:00:00+08:00]\n[2026-02-24 06:48:58] INFO | etl_billiards | ODS_GROUP_BUY_REDEMPTION: 完成(2/4),已处理 60/111.17 天\n[2026-02-24 06:48:58] INFO | etl_billiards | ODS_GROUP_BUY_REDEMPTION: 开始执行(3/4),窗口[2025-12-30 22:00:00+08:00 ~ 2026-01-29 22:00:00+08:00]\n[2026-02-24 06:49:52] INFO | etl_billiards | ODS_GROUP_BUY_REDEMPTION: 完成(3/4),已处理 90/111.17 天\n[2026-02-24 06:49:52] INFO | etl_billiards | ODS_GROUP_BUY_REDEMPTION: 开始执行(4/4),窗口[2026-01-29 22:00:00+08:00 ~ 2026-02-20 02:00:00+08:00]\n[2026-02-24 06:50:46] INFO | etl_billiards | ODS_GROUP_BUY_REDEMPTION: late-cutoff 保护生效,软删除窗口终点从 2026-02-20 02:00:00+08:00 收窄至 2026-02-14 00:16:27+08:00\n[2026-02-24 06:50:46] INFO | etl_billiards | ODS_GROUP_BUY_REDEMPTION: 完成(4/4),已处理 111.17/111.17 天\n[2026-02-24 06:50:46] INFO | etl_billiards | ODS_GROUP_BUY_REDEMPTION ODS 任务完成: {'fetched': 28188, 'inserted': 0, 'updated': 28188, 'skipped': 0, 'errors': 0, 'deleted': 0}\n[2026-02-24 06:50:46] INFO | etl_billiards | ODS_INVENTORY_STOCK: ODS fetch+load start, dir=C:\\NeoZQYY\\export\\ETL-Connectors\\feiqiu\\JSON\\ODS_INVENTORY_STOCK\\ODS_INVENTORY_STOCK-9002-20260224-065046\n[2026-02-24 06:50:46] INFO | etl_billiards | 开始执行ODS_INVENTORY_STOCK (ODS)\n[2026-02-24 06:50:46] INFO | etl_billiards | ODS_INVENTORY_STOCK: 窗口拆分为 4 段(共 111.17 天)\n[2026-02-24 06:50:47] INFO | etl_billiards | ODS_INVENTORY_STOCK: 开始执行(1/4),窗口[2025-10-31 22:00:00+08:00 ~ 2025-11-30 22:00:00+08:00]\n[2026-02-24 06:50:50] INFO | etl_billiards | ODS_INVENTORY_STOCK: 完成(1/4),已处理 30/111.17 天\n[2026-02-24 06:50:50] INFO | etl_billiards | ODS_INVENTORY_STOCK: 开始执行(2/4),窗口[2025-11-30 22:00:00+08:00 ~ 2025-12-30 22:00:00+08:00]\n[2026-02-24 06:50:51] INFO | etl_billiards | ODS_INVENTORY_STOCK: 完成(2/4),已处理 60/111.17 天\n[2026-02-24 06:50:51] INFO | etl_billiards | ODS_INVENTORY_STOCK: 开始执行(3/4),窗口[2025-12-30 22:00:00+08:00 ~ 2026-01-29 22:00:00+08:00]\n[2026-02-24 06:50:53] INFO | etl_billiards | ODS_INVENTORY_STOCK: 完成(3/4),已处理 90/111.17 天\n[2026-02-24 06:50:53] INFO | etl_billiards | ODS_INVENTORY_STOCK: 开始执行(4/4),窗口[2026-01-29 22:00:00+08:00 ~ 2026-02-20 02:00:00+08:00]\n[2026-02-24 06:50:54] INFO | etl_billiards | ODS_INVENTORY_STOCK: 完成(4/4),已处理 111.17/111.17 天\n[2026-02-24 06:50:54] INFO | etl_billiards | ODS_INVENTORY_STOCK ODS 任务完成: {'fetched': 865, 'inserted': 0, 'updated': 865, 'skipped': 0, 'errors': 0, 'deleted': 0}\n[2026-02-24 06:50:54] INFO | etl_billiards | ODS_INVENTORY_CHANGE: ODS fetch+load start, dir=C:\\NeoZQYY\\export\\ETL-Connectors\\feiqiu\\JSON\\ODS_INVENTORY_CHANGE\\ODS_INVENTORY_CHANGE-9003-20260224-065054\n[2026-02-24 06:50:54] INFO | etl_billiards | 开始执行ODS_INVENTORY_CHANGE (ODS)\n[2026-02-24 06:50:54] INFO | etl_billiards | ODS_INVENTORY_CHANGE: 窗口拆分为 4 段(共 111.17 天)\n[2026-02-24 06:50:54] INFO | etl_billiards | ODS_INVENTORY_CHANGE: 开始执行(1/4),窗口[2025-10-31 22:00:00+08:00 ~ 2025-11-30 22:00:00+08:00]\n[2026-02-24 06:51:01] INFO | etl_billiards | ODS_INVENTORY_CHANGE: 完成(1/4),已处理 30/111.17 天\n[2026-02-24 06:51:01] INFO | etl_billiards | ODS_INVENTORY_CHANGE: 开始执行(2/4),窗口[2025-11-30 22:00:00+08:00 ~ 2025-12-30 22:00:00+08:00]\n[2026-02-24 06:51:17] INFO | etl_billiards | ODS_INVENTORY_CHANGE: 完成(2/4),已处理 60/111.17 天\n[2026-02-24 06:51:17] INFO | etl_billiards | ODS_INVENTORY_CHANGE: 开始执行(3/4),窗口[2025-12-30 22:00:00+08:00 ~ 2026-01-29 22:00:00+08:00]\n[2026-02-24 06:51:32] INFO | etl_billiards | ODS_INVENTORY_CHANGE: 完成(3/4),已处理 90/111.17 天\n[2026-02-24 06:51:32] INFO | etl_billiards | ODS_INVENTORY_CHANGE: 开始执行(4/4),窗口[2026-01-29 22:00:00+08:00 ~ 2026-02-20 02:00:00+08:00]\n[2026-02-24 06:51:39] INFO | etl_billiards | ODS_INVENTORY_CHANGE: 完成(4/4),已处理 111.17/111.17 天\n[2026-02-24 06:51:39] INFO | etl_billiards | ODS_INVENTORY_CHANGE ODS 任务完成: {'fetched': 13867, 'inserted': 0, 'updated': 13867, 'skipped': 0, 'errors': 0, 'deleted': 0}\n[2026-02-24 06:51:40] INFO | etl_billiards | DWD_LOAD_FROM_ODS: 抓取阶段开始,目录=C:\\NeoZQYY\\export\\ETL-Connectors\\feiqiu\\JSON\\DWD_LOAD_FROM_ODS\\DWD_LOAD_FROM_ODS-9004-20260224-065140\n[2026-02-24 06:51:40] INFO | etl_billiards | DWD_LOAD_FROM_ODS: 抓取完成,文件=None,记录数=0\n[2026-02-24 06:51:40] INFO | etl_billiards | DWD_LOAD_FROM_ODS: 本地清洗入库开始,源目录=C:\\NeoZQYY\\export\\ETL-Connectors\\feiqiu\\JSON\\DWD_LOAD_FROM_ODS\\DWD_LOAD_FROM_ODS-9004-20260224-065140\n[2026-02-24 06:51:40] INFO | etl_billiards | DWD_LOAD_FROM_ODS: 窗口拆分为 4 段(共 111.17 天)\n[2026-02-24 06:51:40] INFO | etl_billiards | DWD_LOAD_FROM_ODS: 开始执行(1/4),窗口[2025-10-31 22:00:00+08:00 ~ 2025-11-30 22:00:00+08:00]\n[2026-02-24 06:51:40] INFO | etl_billiards | DWD 装载开始:dwd.dim_site <= ods.table_fee_transactions\n[2026-02-24 06:51:41] INFO | etl_billiards | DWD 装载完成:dwd.dim_site,用时 0.92s\n[2026-02-24 06:51:41] INFO | etl_billiards | DWD 装载开始:dwd.dim_site_ex <= ods.table_fee_transactions\n[2026-02-24 06:51:42] INFO | etl_billiards | DWD 装载完成:dwd.dim_site_ex,用时 1.46s\n[2026-02-24 06:51:42] INFO | etl_billiards | DWD 装载开始:dwd.dim_table <= ods.site_tables_master\n[2026-02-24 06:51:43] INFO | etl_billiards | DWD 装载完成:dwd.dim_table,用时 0.70s\n[2026-02-24 06:51:43] INFO | etl_billiards | DWD 装载开始:dwd.dim_table_ex <= ods.site_tables_master\n[2026-02-24 06:51:44] INFO | etl_billiards | DWD 装载完成:dwd.dim_table_ex,用时 0.71s\n[2026-02-24 06:51:44] INFO | etl_billiards | DWD 装载开始:dwd.dim_assistant <= ods.assistant_accounts_master\n[2026-02-24 06:51:44] INFO | etl_billiards | DWD 装载完成:dwd.dim_assistant,用时 0.69s\n[2026-02-24 06:51:44] INFO | etl_billiards | DWD 装载开始:dwd.dim_assistant_ex <= ods.assistant_accounts_master\n[2026-02-24 06:51:45] INFO | etl_billiards | DWD 装载完成:dwd.dim_assistant_ex,用时 0.71s\n[2026-02-24 06:51:45] INFO | etl_billiards | DWD 装载开始:dwd.dim_member <= ods.member_profiles\n[2026-02-24 06:51:46] INFO | etl_billiards | DWD 装载完成:dwd.dim_member,用时 1.37s\n[2026-02-24 06:51:46] INFO | etl_billiards | DWD 装载开始:dwd.dim_member_ex <= ods.member_profiles\n[2026-02-24 06:51:47] INFO | etl_billiards | DWD 装载完成:dwd.dim_member_ex,用时 0.90s\n[2026-02-24 06:51:47] INFO | etl_billiards | DWD 装载开始:dwd.dim_member_card_account <= ods.member_stored_value_cards\n[2026-02-24 06:51:49] INFO | etl_billiards | DWD 装载完成:dwd.dim_member_card_account,用时 1.30s\n[2026-02-24 06:51:49] INFO | etl_billiards | DWD 装载开始:dwd.dim_member_card_account_ex <= ods.member_stored_value_cards\n[2026-02-24 06:51:50] INFO | etl_billiards | DWD 装载完成:dwd.dim_member_card_account_ex,用时 1.81s\n[2026-02-24 06:51:50] INFO | etl_billiards | DWD 装载开始:dwd.dim_tenant_goods <= ods.tenant_goods_master\n[2026-02-24 06:51:51] INFO | etl_billiards | DWD 装载完成:dwd.dim_tenant_goods,用时 0.74s\n[2026-02-24 06:51:51] INFO | etl_billiards | DWD 装载开始:dwd.dim_tenant_goods_ex <= ods.tenant_goods_master\n[2026-02-24 06:51:52] INFO | etl_billiards | DWD 装载完成:dwd.dim_tenant_goods_ex,用时 0.76s\n[2026-02-24 06:51:52] INFO | etl_billiards | DWD 装载开始:dwd.dim_store_goods <= ods.store_goods_master\n[2026-02-24 06:51:53] INFO | etl_billiards | DWD 装载完成:dwd.dim_store_goods,用时 0.77s\n[2026-02-24 06:51:53] INFO | etl_billiards | DWD 装载开始:dwd.dim_store_goods_ex <= ods.store_goods_master\n[2026-02-24 06:51:53] INFO | etl_billiards | DWD 装载完成:dwd.dim_store_goods_ex,用时 0.76s\n[2026-02-24 06:51:53] INFO | etl_billiards | DWD 装载开始:dwd.dim_goods_category <= ods.stock_goods_category_tree\n[2026-02-24 06:51:54] INFO | etl_billiards | DWD 装载完成:dwd.dim_goods_category,用时 0.69s\n[2026-02-24 06:51:54] INFO | etl_billiards | DWD 装载开始:dwd.dim_groupbuy_package <= ods.group_buy_packages\n[2026-02-24 06:51:56] INFO | etl_billiards | DWD 装载完成:dwd.dim_groupbuy_package,用时 1.66s\n[2026-02-24 06:51:56] INFO | etl_billiards | DWD 装载开始:dwd.dim_groupbuy_package_ex <= ods.group_buy_packages\n[2026-02-24 06:51:57] INFO | etl_billiards | DWD 装载完成:dwd.dim_groupbuy_package_ex,用时 0.76s\n[2026-02-24 06:51:57] INFO | etl_billiards | DWD 装载开始:dwd.dwd_settlement_head <= ods.settlement_records\n[2026-02-24 06:51:57] INFO | etl_billiards | DWD 装载完成:dwd.dwd_settlement_head,用时 0.53s\n[2026-02-24 06:51:57] INFO | etl_billiards | DWD 装载开始:dwd.dwd_settlement_head_ex <= ods.settlement_records\n[2026-02-24 06:51:58] INFO | etl_billiards | DWD 装载完成:dwd.dwd_settlement_head_ex,用时 0.52s\n[2026-02-24 06:51:58] INFO | etl_billiards | DWD 装载开始:dwd.dwd_table_fee_log <= ods.table_fee_transactions\n[2026-02-24 06:51:58] INFO | etl_billiards | DWD 装载完成:dwd.dwd_table_fee_log,用时 0.52s\n[2026-02-24 06:51:58] INFO | etl_billiards | DWD 装载开始:dwd.dwd_table_fee_log_ex <= ods.table_fee_transactions\n[2026-02-24 06:51:59] INFO | etl_billiards | DWD 装载完成:dwd.dwd_table_fee_log_ex,用时 0.71s\n[2026-02-24 06:51:59] INFO | etl_billiards | DWD 装载开始:dwd.dwd_table_fee_adjust <= ods.table_fee_discount_records\n[2026-02-24 06:51:59] INFO | etl_billiards | DWD 装载完成:dwd.dwd_table_fee_adjust,用时 0.54s\n[2026-02-24 06:51:59] INFO | etl_billiards | DWD 装载开始:dwd.dwd_table_fee_adjust_ex <= ods.table_fee_discount_records\n[2026-02-24 06:52:00] INFO | etl_billiards | DWD 装载完成:dwd.dwd_table_fee_adjust_ex,用时 0.51s\n[2026-02-24 06:52:00] INFO | etl_billiards | DWD 装载开始:dwd.dwd_store_goods_sale <= ods.store_goods_sales_records\n[2026-02-24 06:52:00] INFO | etl_billiards | DWD 装载完成:dwd.dwd_store_goods_sale,用时 0.51s\n[2026-02-24 06:52:00] INFO | etl_billiards | DWD 装载开始:dwd.dwd_store_goods_sale_ex <= ods.store_goods_sales_records\n[2026-02-24 06:52:01] INFO | etl_billiards | DWD 装载完成:dwd.dwd_store_goods_sale_ex,用时 0.51s\n[2026-02-24 06:52:01] INFO | etl_billiards | DWD 装载开始:dwd.dwd_assistant_service_log <= ods.assistant_service_records\n[2026-02-24 06:52:01] INFO | etl_billiards | DWD 装载完成:dwd.dwd_assistant_service_log,用时 0.52s\n[2026-02-24 06:52:01] INFO | etl_billiards | DWD 装载开始:dwd.dwd_assistant_service_log_ex <= ods.assistant_service_records\n[2026-02-24 06:52:02] INFO | etl_billiards | DWD 装载完成:dwd.dwd_assistant_service_log_ex,用时 0.52s\n[2026-02-24 06:52:02] INFO | etl_billiards | DWD 装载开始:dwd.dwd_member_balance_change <= ods.member_balance_changes\n[2026-02-24 06:52:02] INFO | etl_billiards | DWD 装载完成:dwd.dwd_member_balance_change,用时 0.52s\n[2026-02-24 06:52:02] INFO | etl_billiards | DWD 装载开始:dwd.dwd_member_balance_change_ex <= ods.member_balance_changes\n[2026-02-24 06:52:03] INFO | etl_billiards | DWD 装载完成:dwd.dwd_member_balance_change_ex,用时 0.52s\n[2026-02-24 06:52:03] INFO | etl_billiards | DWD 装载开始:dwd.dwd_groupbuy_redemption <= ods.group_buy_redemption_records\n[2026-02-24 06:52:03] INFO | etl_billiards | DWD 装载完成:dwd.dwd_groupbuy_redemption,用时 0.53s\n[2026-02-24 06:52:03] INFO | etl_billiards | DWD 装载开始:dwd.dwd_groupbuy_redemption_ex <= ods.group_buy_redemption_records\n[2026-02-24 06:52:04] INFO | etl_billiards | DWD 装载完成:dwd.dwd_groupbuy_redemption_ex,用时 0.51s\n[2026-02-24 06:52:04] INFO | etl_billiards | DWD 装载开始:dwd.dwd_platform_coupon_redemption <= ods.platform_coupon_redemption_records\n[2026-02-24 06:52:05] INFO | etl_billiards | DWD 装载完成:dwd.dwd_platform_coupon_redemption,用时 0.52s\n[2026-02-24 06:52:05] INFO | etl_billiards | DWD 装载开始:dwd.dwd_platform_coupon_redemption_ex <= ods.platform_coupon_redemption_records\n[2026-02-24 06:52:05] INFO | etl_billiards | DWD 装载完成:dwd.dwd_platform_coupon_redemption_ex,用时 0.51s\n[2026-02-24 06:52:05] INFO | etl_billiards | DWD 装载开始:dwd.dwd_recharge_order <= ods.recharge_settlements\n[2026-02-24 06:52:06] INFO | etl_billiards | DWD 装载完成:dwd.dwd_recharge_order,用时 0.52s\n[2026-02-24 06:52:06] INFO | etl_billiards | DWD 装载开始:dwd.dwd_recharge_order_ex <= ods.recharge_settlements\n[2026-02-24 06:52:06] INFO | etl_billiards | DWD 装载完成:dwd.dwd_recharge_order_ex,用时 0.54s\n[2026-02-24 06:52:06] INFO | etl_billiards | DWD 装载开始:dwd.dwd_payment <= ods.payment_transactions\n[2026-02-24 06:52:07] INFO | etl_billiards | DWD 装载完成:dwd.dwd_payment,用时 0.51s\n[2026-02-24 06:52:07] INFO | etl_billiards | DWD 装载开始:dwd.dwd_refund <= ods.refund_transactions\n[2026-02-24 06:52:07] INFO | etl_billiards | DWD 装载完成:dwd.dwd_refund,用时 0.59s\n[2026-02-24 06:52:07] INFO | etl_billiards | DWD 装载开始:dwd.dwd_refund_ex <= ods.refund_transactions\n[2026-02-24 06:52:08] INFO | etl_billiards | DWD 装载完成:dwd.dwd_refund_ex,用时 0.56s\n[2026-02-24 06:52:08] INFO | etl_billiards | DWD 装载开始:dwd.dwd_goods_stock_summary <= ods.goods_stock_summary\n[2026-02-24 06:52:08] INFO | etl_billiards | DWD 装载完成:dwd.dwd_goods_stock_summary,用时 0.52s\n[2026-02-24 06:52:08] INFO | etl_billiards | DWD 装载开始:dwd.dwd_goods_stock_movement <= ods.goods_stock_movements\n[2026-02-24 06:52:09] INFO | etl_billiards | DWD 装载完成:dwd.dwd_goods_stock_movement,用时 0.51s\n[2026-02-24 06:52:09] INFO | etl_billiards | DWD_LOAD_FROM_ODS: 完成(1/4),已处理 30/111.17 天\n[2026-02-24 06:52:09] INFO | etl_billiards | DWD_LOAD_FROM_ODS: 开始执行(2/4),窗口[2025-11-30 22:00:00+08:00 ~ 2025-12-30 22:00:00+08:00]\n[2026-02-24 06:52:09] INFO | etl_billiards | DWD 装载开始:dwd.dim_site <= ods.table_fee_transactions\n[2026-02-24 06:52:10] INFO | etl_billiards | DWD 装载完成:dwd.dim_site,用时 0.94s\n[2026-02-24 06:52:10] INFO | etl_billiards | DWD 装载开始:dwd.dim_site_ex <= ods.table_fee_transactions\n[2026-02-24 06:52:11] INFO | etl_billiards | DWD 装载完成:dwd.dim_site_ex,用时 1.05s\n[2026-02-24 06:52:11] INFO | etl_billiards | DWD 装载开始:dwd.dim_table <= ods.site_tables_master\n[2026-02-24 06:52:11] INFO | etl_billiards | DWD 装载完成:dwd.dim_table,用时 0.68s\n[2026-02-24 06:52:11] INFO | etl_billiards | DWD 装载开始:dwd.dim_table_ex <= ods.site_tables_master\n[2026-02-24 06:52:12] INFO | etl_billiards | DWD 装载完成:dwd.dim_table_ex,用时 0.68s\n[2026-02-24 06:52:12] INFO | etl_billiards | DWD 装载开始:dwd.dim_assistant <= ods.assistant_accounts_master\n[2026-02-24 06:52:13] INFO | etl_billiards | DWD 装载完成:dwd.dim_assistant,用时 0.68s\n[2026-02-24 06:52:13] INFO | etl_billiards | DWD 装载开始:dwd.dim_assistant_ex <= ods.assistant_accounts_master\n[2026-02-24 06:52:14] INFO | etl_billiards | DWD 装载完成:dwd.dim_assistant_ex,用时 0.71s\n[2026-02-24 06:52:14] INFO | etl_billiards | DWD 装载开始:dwd.dim_member <= ods.member_profiles\n[2026-02-24 06:52:14] INFO | etl_billiards | DWD 装载完成:dwd.dim_member,用时 0.91s\n[2026-02-24 06:52:14] INFO | etl_billiards | DWD 装载开始:dwd.dim_member_ex <= ods.member_profiles\n[2026-02-24 06:52:15] INFO | etl_billiards | DWD 装载完成:dwd.dim_member_ex,用时 0.85s\n[2026-02-24 06:52:15] INFO | etl_billiards | DWD 装载开始:dwd.dim_member_card_account <= ods.member_stored_value_cards\n[2026-02-24 06:52:17] INFO | etl_billiards | DWD 装载完成:dwd.dim_member_card_account,用时 1.69s\n[2026-02-24 06:52:17] INFO | etl_billiards | DWD 装载开始:dwd.dim_member_card_account_ex <= ods.member_stored_value_cards\n[2026-02-24 06:52:19] INFO | etl_billiards | DWD 装载完成:dwd.dim_member_card_account_ex,用时 1.99s\n[2026-02-24 06:52:19] INFO | etl_billiards | DWD 装载开始:dwd.dim_tenant_goods <= ods.tenant_goods_master\n[2026-02-24 06:52:20] INFO | etl_billiards | DWD 装载完成:dwd.dim_tenant_goods,用时 0.74s\n[2026-02-24 06:52:20] INFO | etl_billiards | DWD 装载开始:dwd.dim_tenant_goods_ex <= ods.tenant_goods_master\n[2026-02-24 06:52:20] INFO | etl_billiards | DWD 装载完成:dwd.dim_tenant_goods_ex,用时 0.73s\n[2026-02-24 06:52:20] INFO | etl_billiards | DWD 装载开始:dwd.dim_store_goods <= ods.store_goods_master\n[2026-02-24 06:52:21] INFO | etl_billiards | DWD 装载完成:dwd.dim_store_goods,用时 0.76s\n[2026-02-24 06:52:21] INFO | etl_billiards | DWD 装载开始:dwd.dim_store_goods_ex <= ods.store_goods_master\n[2026-02-24 06:52:22] INFO | etl_billiards | DWD 装载完成:dwd.dim_store_goods_ex,用时 0.76s\n[2026-02-24 06:52:22] INFO | etl_billiards | DWD 装载开始:dwd.dim_goods_category <= ods.stock_goods_category_tree\n[2026-02-24 06:52:23] INFO | etl_billiards | DWD 装载完成:dwd.dim_goods_category,用时 0.67s\n[2026-02-24 06:52:23] INFO | etl_billiards | DWD 装载开始:dwd.dim_groupbuy_package <= ods.group_buy_packages\n[2026-02-24 06:52:23] INFO | etl_billiards | DWD 装载完成:dwd.dim_groupbuy_package,用时 0.66s\n[2026-02-24 06:52:23] INFO | etl_billiards | DWD 装载开始:dwd.dim_groupbuy_package_ex <= ods.group_buy_packages\n[2026-02-24 06:52:24] INFO | etl_billiards | DWD 装载完成:dwd.dim_groupbuy_package_ex,用时 0.67s\n[2026-02-24 06:52:24] INFO | etl_billiards | DWD 装载开始:dwd.dwd_settlement_head <= ods.settlement_records\n[2026-02-24 06:52:25] INFO | etl_billiards | DWD 装载完成:dwd.dwd_settlement_head,用时 0.61s\n[2026-02-24 06:52:25] INFO | etl_billiards | DWD 装载开始:dwd.dwd_settlement_head_ex <= ods.settlement_records\n[2026-02-24 06:52:25] INFO | etl_billiards | DWD 装载完成:dwd.dwd_settlement_head_ex,用时 0.53s\n[2026-02-24 06:52:25] INFO | etl_billiards | DWD 装载开始:dwd.dwd_table_fee_log <= ods.table_fee_transactions\n[2026-02-24 06:52:26] INFO | etl_billiards | DWD 装载完成:dwd.dwd_table_fee_log,用时 1.04s\n[2026-02-24 06:52:26] INFO | etl_billiards | DWD 装载开始:dwd.dwd_table_fee_log_ex <= ods.table_fee_transactions\n[2026-02-24 06:52:27] INFO | etl_billiards | DWD 装载完成:dwd.dwd_table_fee_log_ex,用时 0.75s\n[2026-02-24 06:52:27] INFO | etl_billiards | DWD 装载开始:dwd.dwd_table_fee_adjust <= ods.table_fee_discount_records\n[2026-02-24 06:52:27] INFO | etl_billiards | DWD 装载完成:dwd.dwd_table_fee_adjust,用时 0.58s\n[2026-02-24 06:52:27] INFO | etl_billiards | DWD 装载开始:dwd.dwd_table_fee_adjust_ex <= ods.table_fee_discount_records\n[2026-02-24 06:52:28] INFO | etl_billiards | DWD 装载完成:dwd.dwd_table_fee_adjust_ex,用时 0.54s\n[2026-02-24 06:52:28] INFO | etl_billiards | DWD 装载开始:dwd.dwd_store_goods_sale <= ods.store_goods_sales_records\n[2026-02-24 06:52:29] INFO | etl_billiards | DWD 装载完成:dwd.dwd_store_goods_sale,用时 1.12s\n[2026-02-24 06:52:29] INFO | etl_billiards | DWD 装载开始:dwd.dwd_store_goods_sale_ex <= ods.store_goods_sales_records\n[2026-02-24 06:52:30] INFO | etl_billiards | DWD 装载完成:dwd.dwd_store_goods_sale_ex,用时 1.23s\n[2026-02-24 06:52:30] INFO | etl_billiards | DWD 装载开始:dwd.dwd_assistant_service_log <= ods.assistant_service_records\n[2026-02-24 06:52:31] INFO | etl_billiards | DWD 装载完成:dwd.dwd_assistant_service_log,用时 0.60s\n[2026-02-24 06:52:31] INFO | etl_billiards | DWD 装载开始:dwd.dwd_assistant_service_log_ex <= ods.assistant_service_records\n[2026-02-24 06:52:32] INFO | etl_billiards | DWD 装载完成:dwd.dwd_assistant_service_log_ex,用时 0.58s\n[2026-02-24 06:52:32] INFO | etl_billiards | DWD 装载开始:dwd.dwd_member_balance_change <= ods.member_balance_changes\n[2026-02-24 06:52:32] INFO | etl_billiards | DWD 装载完成:dwd.dwd_member_balance_change,用时 0.62s\n[2026-02-24 06:52:32] INFO | etl_billiards | DWD 装载开始:dwd.dwd_member_balance_change_ex <= ods.member_balance_changes\n[2026-02-24 06:52:33] INFO | etl_billiards | DWD 装载完成:dwd.dwd_member_balance_change_ex,用时 0.55s\n[2026-02-24 06:52:33] INFO | etl_billiards | DWD 装载开始:dwd.dwd_groupbuy_redemption <= ods.group_buy_redemption_records\n[2026-02-24 06:52:34] INFO | etl_billiards | DWD 装载完成:dwd.dwd_groupbuy_redemption,用时 1.02s\n[2026-02-24 06:52:34] INFO | etl_billiards | DWD 装载开始:dwd.dwd_groupbuy_redemption_ex <= ods.group_buy_redemption_records\n[2026-02-24 06:52:34] INFO | etl_billiards | DWD 装载完成:dwd.dwd_groupbuy_redemption_ex,用时 0.64s\n[2026-02-24 06:52:34] INFO | etl_billiards | DWD 装载开始:dwd.dwd_platform_coupon_redemption <= ods.platform_coupon_redemption_records\n[2026-02-24 06:52:36] INFO | etl_billiards | DWD 装载完成:dwd.dwd_platform_coupon_redemption,用时 1.24s\n[2026-02-24 06:52:36] INFO | etl_billiards | DWD 装载开始:dwd.dwd_platform_coupon_redemption_ex <= ods.platform_coupon_redemption_records\n[2026-02-24 06:52:37] INFO | etl_billiards | DWD 装载完成:dwd.dwd_platform_coupon_redemption_ex,用时 0.99s\n[2026-02-24 06:52:37] INFO | etl_billiards | DWD 装载开始:dwd.dwd_recharge_order <= ods.recharge_settlements\n[2026-02-24 06:52:37] INFO | etl_billiards | DWD 装载完成:dwd.dwd_recharge_order,用时 0.61s\n[2026-02-24 06:52:37] INFO | etl_billiards | DWD 装载开始:dwd.dwd_recharge_order_ex <= ods.recharge_settlements\n[2026-02-24 06:52:38] INFO | etl_billiards | DWD 装载完成:dwd.dwd_recharge_order_ex,用时 0.52s\n[2026-02-24 06:52:38] INFO | etl_billiards | DWD 装载开始:dwd.dwd_payment <= ods.payment_transactions\n[2026-02-24 06:52:39] INFO | etl_billiards | DWD 装载完成:dwd.dwd_payment,用时 1.31s\n[2026-02-24 06:52:39] INFO | etl_billiards | DWD 装载开始:dwd.dwd_refund <= ods.refund_transactions\n[2026-02-24 06:52:40] INFO | etl_billiards | DWD 装载完成:dwd.dwd_refund,用时 0.52s\n[2026-02-24 06:52:40] INFO | etl_billiards | DWD 装载开始:dwd.dwd_refund_ex <= ods.refund_transactions\n[2026-02-24 06:52:40] INFO | etl_billiards | DWD 装载完成:dwd.dwd_refund_ex,用时 0.52s\n[2026-02-24 06:52:40] INFO | etl_billiards | DWD 装载开始:dwd.dwd_goods_stock_summary <= ods.goods_stock_summary\n[2026-02-24 06:52:41] INFO | etl_billiards | DWD 装载完成:dwd.dwd_goods_stock_summary,用时 0.55s\n[2026-02-24 06:52:41] INFO | etl_billiards | DWD 装载开始:dwd.dwd_goods_stock_movement <= ods.goods_stock_movements\n[2026-02-24 06:52:42] INFO | etl_billiards | DWD 装载完成:dwd.dwd_goods_stock_movement,用时 1.33s\n[2026-02-24 06:52:42] INFO | etl_billiards | DWD_LOAD_FROM_ODS: 完成(2/4),已处理 60/111.17 天\n[2026-02-24 06:52:42] INFO | etl_billiards | DWD_LOAD_FROM_ODS: 开始执行(3/4),窗口[2025-12-30 22:00:00+08:00 ~ 2026-01-29 22:00:00+08:00]\n[2026-02-24 06:52:42] INFO | etl_billiards | DWD 装载开始:dwd.dim_site <= ods.table_fee_transactions\n[2026-02-24 06:52:43] INFO | etl_billiards | DWD 装载完成:dwd.dim_site,用时 1.00s\n[2026-02-24 06:52:43] INFO | etl_billiards | DWD 装载开始:dwd.dim_site_ex <= ods.table_fee_transactions\n[2026-02-24 06:52:44] INFO | etl_billiards | DWD 装载完成:dwd.dim_site_ex,用时 1.08s\n[2026-02-24 06:52:44] INFO | etl_billiards | DWD 装载开始:dwd.dim_table <= ods.site_tables_master\n[2026-02-24 06:52:45] INFO | etl_billiards | DWD 装载完成:dwd.dim_table,用时 0.69s\n[2026-02-24 06:52:45] INFO | etl_billiards | DWD 装载开始:dwd.dim_table_ex <= ods.site_tables_master\n[2026-02-24 06:52:46] INFO | etl_billiards | DWD 装载完成:dwd.dim_table_ex,用时 0.84s\n[2026-02-24 06:52:46] INFO | etl_billiards | DWD 装载开始:dwd.dim_assistant <= ods.assistant_accounts_master\n[2026-02-24 06:52:46] INFO | etl_billiards | DWD 装载完成:dwd.dim_assistant,用时 0.68s\n[2026-02-24 06:52:46] INFO | etl_billiards | DWD 装载开始:dwd.dim_assistant_ex <= ods.assistant_accounts_master\n[2026-02-24 06:52:47] INFO | etl_billiards | DWD 装载完成:dwd.dim_assistant_ex,用时 0.72s\n[2026-02-24 06:52:47] INFO | etl_billiards | DWD 装载开始:dwd.dim_member <= ods.member_profiles\n[2026-02-24 06:52:48] INFO | etl_billiards | DWD 装载完成:dwd.dim_member,用时 0.90s\n[2026-02-24 06:52:48] INFO | etl_billiards | DWD 装载开始:dwd.dim_member_ex <= ods.member_profiles\n[2026-02-24 06:52:49] INFO | etl_billiards | DWD 装载完成:dwd.dim_member_ex,用时 0.84s\n[2026-02-24 06:52:49] INFO | etl_billiards | DWD 装载开始:dwd.dim_member_card_account <= ods.member_stored_value_cards\n[2026-02-24 06:52:50] INFO | etl_billiards | DWD 装载完成:dwd.dim_member_card_account,用时 1.68s\n[2026-02-24 06:52:50] INFO | etl_billiards | DWD 装载开始:dwd.dim_member_card_account_ex <= ods.member_stored_value_cards\n[2026-02-24 06:52:53] INFO | etl_billiards | DWD 装载完成:dwd.dim_member_card_account_ex,用时 2.44s\n[2026-02-24 06:52:53] INFO | etl_billiards | DWD 装载开始:dwd.dim_tenant_goods <= ods.tenant_goods_master\n[2026-02-24 06:52:54] INFO | etl_billiards | DWD 装载完成:dwd.dim_tenant_goods,用时 0.69s\n[2026-02-24 06:52:54] INFO | etl_billiards | DWD 装载开始:dwd.dim_tenant_goods_ex <= ods.tenant_goods_master\n[2026-02-24 06:52:54] INFO | etl_billiards | DWD 装载完成:dwd.dim_tenant_goods_ex,用时 0.71s\n[2026-02-24 06:52:54] INFO | etl_billiards | DWD 装载开始:dwd.dim_store_goods <= ods.store_goods_master\n[2026-02-24 06:52:55] INFO | etl_billiards | DWD 装载完成:dwd.dim_store_goods,用时 0.87s\n[2026-02-24 06:52:55] INFO | etl_billiards | DWD 装载开始:dwd.dim_store_goods_ex <= ods.store_goods_master\n[2026-02-24 06:52:56] INFO | etl_billiards | DWD 装载完成:dwd.dim_store_goods_ex,用时 0.84s\n[2026-02-24 06:52:56] INFO | etl_billiards | DWD 装载开始:dwd.dim_goods_category <= ods.stock_goods_category_tree\n[2026-02-24 06:52:57] INFO | etl_billiards | DWD 装载完成:dwd.dim_goods_category,用时 0.69s\n[2026-02-24 06:52:57] INFO | etl_billiards | DWD 装载开始:dwd.dim_groupbuy_package <= ods.group_buy_packages\n[2026-02-24 06:52:58] INFO | etl_billiards | DWD 装载完成:dwd.dim_groupbuy_package,用时 1.08s\n[2026-02-24 06:52:58] INFO | etl_billiards | DWD 装载开始:dwd.dim_groupbuy_package_ex <= ods.group_buy_packages\n[2026-02-24 06:52:58] INFO | etl_billiards | DWD 装载完成:dwd.dim_groupbuy_package_ex,用时 0.67s\n[2026-02-24 06:52:58] INFO | etl_billiards | DWD 装载开始:dwd.dwd_settlement_head <= ods.settlement_records\n[2026-02-24 06:53:00] INFO | etl_billiards | DWD 装载完成:dwd.dwd_settlement_head,用时 2.01s\n[2026-02-24 06:53:00] INFO | etl_billiards | DWD 装载开始:dwd.dwd_settlement_head_ex <= ods.settlement_records\n[2026-02-24 06:53:02] INFO | etl_billiards | DWD 装载完成:dwd.dwd_settlement_head_ex,用时 1.19s\n[2026-02-24 06:53:02] INFO | etl_billiards | DWD 装载开始:dwd.dwd_table_fee_log <= ods.table_fee_transactions\n[2026-02-24 06:53:02] INFO | etl_billiards | DWD 装载完成:dwd.dwd_table_fee_log,用时 0.73s\n[2026-02-24 06:53:02] INFO | etl_billiards | DWD 装载开始:dwd.dwd_table_fee_log_ex <= ods.table_fee_transactions\n[2026-02-24 06:53:03] INFO | etl_billiards | DWD 装载完成:dwd.dwd_table_fee_log_ex,用时 0.62s\n[2026-02-24 06:53:03] INFO | etl_billiards | DWD 装载开始:dwd.dwd_table_fee_adjust <= ods.table_fee_discount_records\n[2026-02-24 06:53:04] INFO | etl_billiards | DWD 装载完成:dwd.dwd_table_fee_adjust,用时 0.60s\n[2026-02-24 06:53:04] INFO | etl_billiards | DWD 装载开始:dwd.dwd_table_fee_adjust_ex <= ods.table_fee_discount_records\n[2026-02-24 06:53:04] INFO | etl_billiards | DWD 装载完成:dwd.dwd_table_fee_adjust_ex,用时 0.74s\n[2026-02-24 06:53:04] INFO | etl_billiards | DWD 装载开始:dwd.dwd_store_goods_sale <= ods.store_goods_sales_records\n[2026-02-24 06:53:05] INFO | etl_billiards | DWD 装载完成:dwd.dwd_store_goods_sale,用时 0.54s\n[2026-02-24 06:53:05] INFO | etl_billiards | DWD 装载开始:dwd.dwd_store_goods_sale_ex <= ods.store_goods_sales_records\n[2026-02-24 06:53:05] INFO | etl_billiards | DWD 装载完成:dwd.dwd_store_goods_sale_ex,用时 0.51s\n[2026-02-24 06:53:05] INFO | etl_billiards | DWD 装载开始:dwd.dwd_assistant_service_log <= ods.assistant_service_records\n[2026-02-24 06:53:06] INFO | etl_billiards | DWD 装载完成:dwd.dwd_assistant_service_log,用时 0.54s\n[2026-02-24 06:53:06] INFO | etl_billiards | DWD 装载开始:dwd.dwd_assistant_service_log_ex <= ods.assistant_service_records\n[2026-02-24 06:53:06] INFO | etl_billiards | DWD 装载完成:dwd.dwd_assistant_service_log_ex,用时 0.54s\n[2026-02-24 06:53:06] INFO | etl_billiards | DWD 装载开始:dwd.dwd_member_balance_change <= ods.member_balance_changes\n[2026-02-24 06:53:07] INFO | etl_billiards | DWD 装载完成:dwd.dwd_member_balance_change,用时 0.55s\n[2026-02-24 06:53:07] INFO | etl_billiards | DWD 装载开始:dwd.dwd_member_balance_change_ex <= ods.member_balance_changes\n[2026-02-24 06:53:07] INFO | etl_billiards | DWD 装载完成:dwd.dwd_member_balance_change_ex,用时 0.51s\n[2026-02-24 06:53:07] INFO | etl_billiards | DWD 装载开始:dwd.dwd_groupbuy_redemption <= ods.group_buy_redemption_records\n[2026-02-24 06:53:08] INFO | etl_billiards | DWD 装载完成:dwd.dwd_groupbuy_redemption,用时 0.56s\n[2026-02-24 06:53:08] INFO | etl_billiards | DWD 装载开始:dwd.dwd_groupbuy_redemption_ex <= ods.group_buy_redemption_records\n[2026-02-24 06:53:09] INFO | etl_billiards | DWD 装载完成:dwd.dwd_groupbuy_redemption_ex,用时 0.56s\n[2026-02-24 06:53:09] INFO | etl_billiards | DWD 装载开始:dwd.dwd_platform_coupon_redemption <= ods.platform_coupon_redemption_records\n[2026-02-24 06:53:09] INFO | etl_billiards | DWD 装载完成:dwd.dwd_platform_coupon_redemption,用时 0.58s\n[2026-02-24 06:53:09] INFO | etl_billiards | DWD 装载开始:dwd.dwd_platform_coupon_redemption_ex <= ods.platform_coupon_redemption_records\n[2026-02-24 06:53:10] INFO | etl_billiards | DWD 装载完成:dwd.dwd_platform_coupon_redemption_ex,用时 0.53s\n[2026-02-24 06:53:10] INFO | etl_billiards | DWD 装载开始:dwd.dwd_recharge_order <= ods.recharge_settlements\n[2026-02-24 06:53:10] INFO | etl_billiards | DWD 装载完成:dwd.dwd_recharge_order,用时 0.52s\n[2026-02-24 06:53:10] INFO | etl_billiards | DWD 装载开始:dwd.dwd_recharge_order_ex <= ods.recharge_settlements\n[2026-02-24 06:53:11] INFO | etl_billiards | DWD 装载完成:dwd.dwd_recharge_order_ex,用时 0.54s\n[2026-02-24 06:53:11] INFO | etl_billiards | DWD 装载开始:dwd.dwd_payment <= ods.payment_transactions\n[2026-02-24 06:53:11] INFO | etl_billiards | DWD 装载完成:dwd.dwd_payment,用时 0.63s\n[2026-02-24 06:53:11] INFO | etl_billiards | DWD 装载开始:dwd.dwd_refund <= ods.refund_transactions\n[2026-02-24 06:53:12] INFO | etl_billiards | DWD 装载完成:dwd.dwd_refund,用时 0.52s\n[2026-02-24 06:53:12] INFO | etl_billiards | DWD 装载开始:dwd.dwd_refund_ex <= ods.refund_transactions\n[2026-02-24 06:53:12] INFO | etl_billiards | DWD 装载完成:dwd.dwd_refund_ex,用时 0.51s\n[2026-02-24 06:53:12] INFO | etl_billiards | DWD 装载开始:dwd.dwd_goods_stock_summary <= ods.goods_stock_summary\n[2026-02-24 06:53:13] INFO | etl_billiards | DWD 装载完成:dwd.dwd_goods_stock_summary,用时 0.51s\n[2026-02-24 06:53:13] INFO | etl_billiards | DWD 装载开始:dwd.dwd_goods_stock_movement <= ods.goods_stock_movements\n[2026-02-24 06:53:14] INFO | etl_billiards | DWD 装载完成:dwd.dwd_goods_stock_movement,用时 0.66s\n[2026-02-24 06:53:14] INFO | etl_billiards | DWD_LOAD_FROM_ODS: 完成(3/4),已处理 90/111.17 天\n[2026-02-24 06:53:14] INFO | etl_billiards | DWD_LOAD_FROM_ODS: 开始执行(4/4),窗口[2026-01-29 22:00:00+08:00 ~ 2026-02-20 02:00:00+08:00]\n[2026-02-24 06:53:14] INFO | etl_billiards | DWD 装载开始:dwd.dim_site <= ods.table_fee_transactions\n[2026-02-24 06:53:15] INFO | etl_billiards | DWD 装载完成:dwd.dim_site,用时 0.92s\n[2026-02-24 06:53:15] INFO | etl_billiards | DWD 装载开始:dwd.dim_site_ex <= ods.table_fee_transactions\n[2026-02-24 06:53:16] INFO | etl_billiards | DWD 装载完成:dwd.dim_site_ex,用时 1.09s\n[2026-02-24 06:53:16] INFO | etl_billiards | DWD 装载开始:dwd.dim_table <= ods.site_tables_master\n[2026-02-24 06:53:16] INFO | etl_billiards | DWD 装载完成:dwd.dim_table,用时 0.67s\n[2026-02-24 06:53:16] INFO | etl_billiards | DWD 装载开始:dwd.dim_table_ex <= ods.site_tables_master\n[2026-02-24 06:53:17] INFO | etl_billiards | DWD 装载完成:dwd.dim_table_ex,用时 0.67s\n[2026-02-24 06:53:17] INFO | etl_billiards | DWD 装载开始:dwd.dim_assistant <= ods.assistant_accounts_master\n[2026-02-24 06:53:18] INFO | etl_billiards | DWD 装载完成:dwd.dim_assistant,用时 0.67s\n[2026-02-24 06:53:18] INFO | etl_billiards | DWD 装载开始:dwd.dim_assistant_ex <= ods.assistant_accounts_master\n[2026-02-24 06:53:18] INFO | etl_billiards | DWD 装载完成:dwd.dim_assistant_ex,用时 0.71s\n[2026-02-24 06:53:18] INFO | etl_billiards | DWD 装载开始:dwd.dim_member <= ods.member_profiles\n[2026-02-24 06:53:20] INFO | etl_billiards | DWD 装载完成:dwd.dim_member,用时 1.35s\n[2026-02-24 06:53:20] INFO | etl_billiards | DWD 装载开始:dwd.dim_member_ex <= ods.member_profiles\n[2026-02-24 06:53:21] INFO | etl_billiards | DWD 装载完成:dwd.dim_member_ex,用时 0.84s\n[2026-02-24 06:53:21] INFO | etl_billiards | DWD 装载开始:dwd.dim_member_card_account <= ods.member_stored_value_cards\n[2026-02-24 06:53:22] INFO | etl_billiards | DWD 装载完成:dwd.dim_member_card_account,用时 1.73s\n[2026-02-24 06:53:22] INFO | etl_billiards | DWD 装载开始:dwd.dim_member_card_account_ex <= ods.member_stored_value_cards\n[2026-02-24 06:53:24] INFO | etl_billiards | DWD 装载完成:dwd.dim_member_card_account_ex,用时 1.71s\n[2026-02-24 06:53:24] INFO | etl_billiards | DWD 装载开始:dwd.dim_tenant_goods <= ods.tenant_goods_master\n[2026-02-24 06:53:25] INFO | etl_billiards | DWD 装载完成:dwd.dim_tenant_goods,用时 0.75s\n[2026-02-24 06:53:25] INFO | etl_billiards | DWD 装载开始:dwd.dim_tenant_goods_ex <= ods.tenant_goods_master\n[2026-02-24 06:53:25] INFO | etl_billiards | DWD 装载完成:dwd.dim_tenant_goods_ex,用时 0.76s\n[2026-02-24 06:53:25] INFO | etl_billiards | DWD 装载开始:dwd.dim_store_goods <= ods.store_goods_master\n[2026-02-24 06:53:26] INFO | etl_billiards | DWD 装载完成:dwd.dim_store_goods,用时 0.80s\n[2026-02-24 06:53:26] INFO | etl_billiards | DWD 装载开始:dwd.dim_store_goods_ex <= ods.store_goods_master\n[2026-02-24 06:53:27] INFO | etl_billiards | DWD 装载完成:dwd.dim_store_goods_ex,用时 0.78s\n[2026-02-24 06:53:27] INFO | etl_billiards | DWD 装载开始:dwd.dim_goods_category <= ods.stock_goods_category_tree\n[2026-02-24 06:53:28] INFO | etl_billiards | DWD 装载完成:dwd.dim_goods_category,用时 0.67s\n[2026-02-24 06:53:28] INFO | etl_billiards | DWD 装载开始:dwd.dim_groupbuy_package <= ods.group_buy_packages\n[2026-02-24 06:53:28] INFO | etl_billiards | DWD 装载完成:dwd.dim_groupbuy_package,用时 0.69s\n[2026-02-24 06:53:28] INFO | etl_billiards | DWD 装载开始:dwd.dim_groupbuy_package_ex <= ods.group_buy_packages\n[2026-02-24 06:53:29] INFO | etl_billiards | DWD 装载完成:dwd.dim_groupbuy_package_ex,用时 0.69s\n[2026-02-24 06:53:29] INFO | etl_billiards | DWD 装载开始:dwd.dwd_settlement_head <= ods.settlement_records\n[2026-02-24 06:53:30] INFO | etl_billiards | DWD 装载完成:dwd.dwd_settlement_head,用时 1.12s\n[2026-02-24 06:53:30] INFO | etl_billiards | DWD 装载开始:dwd.dwd_settlement_head_ex <= ods.settlement_records\n[2026-02-24 06:53:31] INFO | etl_billiards | DWD 装载完成:dwd.dwd_settlement_head_ex,用时 1.20s\n[2026-02-24 06:53:31] INFO | etl_billiards | DWD 装载开始:dwd.dwd_table_fee_log <= ods.table_fee_transactions\n[2026-02-24 06:53:32] INFO | etl_billiards | DWD 装载完成:dwd.dwd_table_fee_log,用时 0.80s\n[2026-02-24 06:53:32] INFO | etl_billiards | DWD 装载开始:dwd.dwd_table_fee_log_ex <= ods.table_fee_transactions\n[2026-02-24 06:53:33] INFO | etl_billiards | DWD 装载完成:dwd.dwd_table_fee_log_ex,用时 0.66s\n[2026-02-24 06:53:33] INFO | etl_billiards | DWD 装载开始:dwd.dwd_table_fee_adjust <= ods.table_fee_discount_records\n[2026-02-24 06:53:33] INFO | etl_billiards | DWD 装载完成:dwd.dwd_table_fee_adjust,用时 0.52s\n[2026-02-24 06:53:33] INFO | etl_billiards | DWD 装载开始:dwd.dwd_table_fee_adjust_ex <= ods.table_fee_discount_records\n[2026-02-24 06:53:34] INFO | etl_billiards | DWD 装载完成:dwd.dwd_table_fee_adjust_ex,用时 0.51s\n[2026-02-24 06:53:34] INFO | etl_billiards | DWD 装载开始:dwd.dwd_store_goods_sale <= ods.store_goods_sales_records\n[2026-02-24 06:53:35] INFO | etl_billiards | DWD 装载完成:dwd.dwd_store_goods_sale,用时 0.60s\n[2026-02-24 06:53:35] INFO | etl_billiards | DWD 装载开始:dwd.dwd_store_goods_sale_ex <= ods.store_goods_sales_records\n[2026-02-24 06:53:35] INFO | etl_billiards | DWD 装载完成:dwd.dwd_store_goods_sale_ex,用时 0.58s\n[2026-02-24 06:53:35] INFO | etl_billiards | DWD 装载开始:dwd.dwd_assistant_service_log <= ods.assistant_service_records\n[2026-02-24 06:53:36] INFO | etl_billiards | DWD 装载完成:dwd.dwd_assistant_service_log,用时 0.65s\n[2026-02-24 06:53:36] INFO | etl_billiards | DWD 装载开始:dwd.dwd_assistant_service_log_ex <= ods.assistant_service_records\n[2026-02-24 06:53:36] INFO | etl_billiards | DWD 装载完成:dwd.dwd_assistant_service_log_ex,用时 0.58s\n[2026-02-24 06:53:36] INFO | etl_billiards | DWD 装载开始:dwd.dwd_member_balance_change <= ods.member_balance_changes\n[2026-02-24 06:53:37] INFO | etl_billiards | DWD 装载完成:dwd.dwd_member_balance_change,用时 0.54s\n[2026-02-24 06:53:37] INFO | etl_billiards | DWD 装载开始:dwd.dwd_member_balance_change_ex <= ods.member_balance_changes\n[2026-02-24 06:53:37] INFO | etl_billiards | DWD 装载完成:dwd.dwd_member_balance_change_ex,用时 0.54s\n[2026-02-24 06:53:37] INFO | etl_billiards | DWD 装载开始:dwd.dwd_groupbuy_redemption <= ods.group_buy_redemption_records\n[2026-02-24 06:53:38] INFO | etl_billiards | DWD 装载完成:dwd.dwd_groupbuy_redemption,用时 0.72s\n[2026-02-24 06:53:38] INFO | etl_billiards | DWD 装载开始:dwd.dwd_groupbuy_redemption_ex <= ods.group_buy_redemption_records\n[2026-02-24 06:53:39] INFO | etl_billiards | DWD 装载完成:dwd.dwd_groupbuy_redemption_ex,用时 0.63s\n[2026-02-24 06:53:39] INFO | etl_billiards | DWD 装载开始:dwd.dwd_platform_coupon_redemption <= ods.platform_coupon_redemption_records\n[2026-02-24 06:53:39] INFO | etl_billiards | DWD 装载完成:dwd.dwd_platform_coupon_redemption,用时 0.53s\n[2026-02-24 06:53:39] INFO | etl_billiards | DWD 装载开始:dwd.dwd_platform_coupon_redemption_ex <= ods.platform_coupon_redemption_records\n[2026-02-24 06:53:40] INFO | etl_billiards | DWD 装载完成:dwd.dwd_platform_coupon_redemption_ex,用时 0.52s\n[2026-02-24 06:53:40] INFO | etl_billiards | DWD 装载开始:dwd.dwd_recharge_order <= ods.recharge_settlements\n[2026-02-24 06:53:40] INFO | etl_billiards | DWD 装载完成:dwd.dwd_recharge_order,用时 0.52s\n[2026-02-24 06:53:40] INFO | etl_billiards | DWD 装载开始:dwd.dwd_recharge_order_ex <= ods.recharge_settlements\n[2026-02-24 06:53:41] INFO | etl_billiards | DWD 装载完成:dwd.dwd_recharge_order_ex,用时 0.52s\n[2026-02-24 06:53:41] INFO | etl_billiards | DWD 装载开始:dwd.dwd_payment <= ods.payment_transactions\n[2026-02-24 06:53:41] INFO | etl_billiards | DWD 装载完成:dwd.dwd_payment,用时 0.59s\n[2026-02-24 06:53:41] INFO | etl_billiards | DWD 装载开始:dwd.dwd_refund <= ods.refund_transactions\n[2026-02-24 06:53:42] INFO | etl_billiards | DWD 装载完成:dwd.dwd_refund,用时 0.59s\n[2026-02-24 06:53:42] INFO | etl_billiards | DWD 装载开始:dwd.dwd_refund_ex <= ods.refund_transactions\n[2026-02-24 06:53:43] INFO | etl_billiards | DWD 装载完成:dwd.dwd_refund_ex,用时 0.56s\n[2026-02-24 06:53:43] INFO | etl_billiards | DWD 装载开始:dwd.dwd_goods_stock_summary <= ods.goods_stock_summary\n[2026-02-24 06:53:43] INFO | etl_billiards | DWD 装载完成:dwd.dwd_goods_stock_summary,用时 0.52s\n[2026-02-24 06:53:43] INFO | etl_billiards | DWD 装载开始:dwd.dwd_goods_stock_movement <= ods.goods_stock_movements\n[2026-02-24 06:53:44] INFO | etl_billiards | DWD 装载完成:dwd.dwd_goods_stock_movement,用时 0.57s\n[2026-02-24 06:53:44] INFO | etl_billiards | DWD_LOAD_FROM_ODS: 完成(4/4),已处理 111.17/111.17 天\n[2026-02-24 06:53:44] INFO | etl_billiards | DWD_LOAD_FROM_ODS: 完成,统计={'tables': 160, 'errors': 0, 'error_details': 0}\n[2026-02-24 06:53:44] INFO | etl_billiards | DWS_GOODS_STOCK_DAILY: 抓取阶段开始,目录=C:\\NeoZQYY\\export\\ETL-Connectors\\feiqiu\\JSON\\DWS_GOODS_STOCK_DAILY\\DWS_GOODS_STOCK_DAILY-9005-20260224-065344\n[2026-02-24 06:53:44] INFO | etl_billiards | DWS_GOODS_STOCK_DAILY: 提取数据,门店=2790685415443269,日期范围 2025-11-01 ~ 2026-02-20\n[2026-02-24 06:53:44] INFO | etl_billiards | DWS_GOODS_STOCK_DAILY: 提取到 0 条 DWD 记录\n[2026-02-24 06:53:44] INFO | etl_billiards | DWS_GOODS_STOCK_DAILY: 抓取完成,文件=None,记录数=0\n[2026-02-24 06:53:44] INFO | etl_billiards | DWS_GOODS_STOCK_DAILY: 本地清洗入库开始,源目录=C:\\NeoZQYY\\export\\ETL-Connectors\\feiqiu\\JSON\\DWS_GOODS_STOCK_DAILY\\DWS_GOODS_STOCK_DAILY-9005-20260224-065344\n[2026-02-24 06:53:44] INFO | etl_billiards | DWS_GOODS_STOCK_DAILY: 窗口拆分为 4 段(共 111.17 天)\n[2026-02-24 06:53:44] INFO | etl_billiards | DWS_GOODS_STOCK_DAILY: 开始执行(1/4),窗口[2025-10-31 22:00:00+08:00 ~ 2025-11-30 22:00:00+08:00]\n[2026-02-24 06:53:44] INFO | etl_billiards | DWS_GOODS_STOCK_DAILY: 提取数据,门店=2790685415443269,日期范围 2025-10-31 ~ 2025-11-30\n[2026-02-24 06:53:44] INFO | etl_billiards | DWS_GOODS_STOCK_DAILY: 提取到 0 条 DWD 记录\n[2026-02-24 06:53:44] INFO | etl_billiards | DWS_GOODS_STOCK_DAILY: 无数据需要汇总\n[2026-02-24 06:53:44] INFO | etl_billiards | DWS_GOODS_STOCK_DAILY: 完成(1/4),已处理 30/111.17 天\n[2026-02-24 06:53:44] INFO | etl_billiards | DWS_GOODS_STOCK_DAILY: 开始执行(2/4),窗口[2025-11-30 22:00:00+08:00 ~ 2025-12-30 22:00:00+08:00]\n[2026-02-24 06:53:44] INFO | etl_billiards | DWS_GOODS_STOCK_DAILY: 提取数据,门店=2790685415443269,日期范围 2025-11-30 ~ 2025-12-30\n[2026-02-24 06:53:45] INFO | etl_billiards | DWS_GOODS_STOCK_DAILY: 提取到 0 条 DWD 记录\n[2026-02-24 06:53:45] INFO | etl_billiards | DWS_GOODS_STOCK_DAILY: 无数据需要汇总\n[2026-02-24 06:53:45] INFO | etl_billiards | DWS_GOODS_STOCK_DAILY: 完成(2/4),已处理 60/111.17 天\n[2026-02-24 06:53:45] INFO | etl_billiards | DWS_GOODS_STOCK_DAILY: 开始执行(3/4),窗口[2025-12-30 22:00:00+08:00 ~ 2026-01-29 22:00:00+08:00]\n[2026-02-24 06:53:45] INFO | etl_billiards | DWS_GOODS_STOCK_DAILY: 提取数据,门店=2790685415443269,日期范围 2025-12-30 ~ 2026-01-29\n[2026-02-24 06:53:45] INFO | etl_billiards | DWS_GOODS_STOCK_DAILY: 提取到 0 条 DWD 记录\n[2026-02-24 06:53:45] INFO | etl_billiards | DWS_GOODS_STOCK_DAILY: 无数据需要汇总\n[2026-02-24 06:53:45] INFO | etl_billiards | DWS_GOODS_STOCK_DAILY: 完成(3/4),已处理 90/111.17 天\n[2026-02-24 06:53:45] INFO | etl_billiards | DWS_GOODS_STOCK_DAILY: 开始执行(4/4),窗口[2026-01-29 22:00:00+08:00 ~ 2026-02-20 02:00:00+08:00]\n[2026-02-24 06:53:45] INFO | etl_billiards | DWS_GOODS_STOCK_DAILY: 提取数据,门店=2790685415443269,日期范围 2026-01-29 ~ 2026-02-20\n[2026-02-24 06:53:45] INFO | etl_billiards | DWS_GOODS_STOCK_DAILY: 提取到 0 条 DWD 记录\n[2026-02-24 06:53:45] INFO | etl_billiards | DWS_GOODS_STOCK_DAILY: 无数据需要汇总\n[2026-02-24 06:53:45] INFO | etl_billiards | DWS_GOODS_STOCK_DAILY: 完成(4/4),已处理 111.17/111.17 天\n[2026-02-24 06:53:45] INFO | etl_billiards | DWS_GOODS_STOCK_DAILY: 完成,统计={'counts': {'fetched': 0, 'inserted': 0, 'updated': 0, 'skipped': 0, 'errors': 0}}\n[2026-02-24 06:53:46] INFO | etl_billiards | DWS_GOODS_STOCK_WEEKLY: 抓取阶段开始,目录=C:\\NeoZQYY\\export\\ETL-Connectors\\feiqiu\\JSON\\DWS_GOODS_STOCK_WEEKLY\\DWS_GOODS_STOCK_WEEKLY-9006-20260224-065346\n[2026-02-24 06:53:46] INFO | etl_billiards | DWS_GOODS_STOCK_WEEKLY: 提取数据,门店=2790685415443269,日期范围 2025-11-01 ~ 2026-02-20\n[2026-02-24 06:53:46] INFO | etl_billiards | DWS_GOODS_STOCK_WEEKLY: 提取到 0 条 DWD 记录\n[2026-02-24 06:53:46] INFO | etl_billiards | DWS_GOODS_STOCK_WEEKLY: 抓取完成,文件=None,记录数=0\n[2026-02-24 06:53:46] INFO | etl_billiards | DWS_GOODS_STOCK_WEEKLY: 本地清洗入库开始,源目录=C:\\NeoZQYY\\export\\ETL-Connectors\\feiqiu\\JSON\\DWS_GOODS_STOCK_WEEKLY\\DWS_GOODS_STOCK_WEEKLY-9006-20260224-065346\n[2026-02-24 06:53:46] INFO | etl_billiards | DWS_GOODS_STOCK_WEEKLY: 窗口拆分为 4 段(共 111.17 天)\n[2026-02-24 06:53:46] INFO | etl_billiards | DWS_GOODS_STOCK_WEEKLY: 开始执行(1/4),窗口[2025-10-31 22:00:00+08:00 ~ 2025-11-30 22:00:00+08:00]\n[2026-02-24 06:53:46] INFO | etl_billiards | DWS_GOODS_STOCK_WEEKLY: 提取数据,门店=2790685415443269,日期范围 2025-10-31 ~ 2025-11-30\n[2026-02-24 06:53:46] INFO | etl_billiards | DWS_GOODS_STOCK_WEEKLY: 提取到 0 条 DWD 记录\n[2026-02-24 06:53:46] INFO | etl_billiards | DWS_GOODS_STOCK_WEEKLY: 无数据需要汇总\n[2026-02-24 06:53:46] INFO | etl_billiards | DWS_GOODS_STOCK_WEEKLY: 完成(1/4),已处理 30/111.17 天\n[2026-02-24 06:53:46] INFO | etl_billiards | DWS_GOODS_STOCK_WEEKLY: 开始执行(2/4),窗口[2025-11-30 22:00:00+08:00 ~ 2025-12-30 22:00:00+08:00]\n[2026-02-24 06:53:46] INFO | etl_billiards | DWS_GOODS_STOCK_WEEKLY: 提取数据,门店=2790685415443269,日期范围 2025-11-30 ~ 2025-12-30\n[2026-02-24 06:53:46] INFO | etl_billiards | DWS_GOODS_STOCK_WEEKLY: 提取到 0 条 DWD 记录\n[2026-02-24 06:53:46] INFO | etl_billiards | DWS_GOODS_STOCK_WEEKLY: 无数据需要汇总\n[2026-02-24 06:53:46] INFO | etl_billiards | DWS_GOODS_STOCK_WEEKLY: 完成(2/4),已处理 60/111.17 天\n[2026-02-24 06:53:46] INFO | etl_billiards | DWS_GOODS_STOCK_WEEKLY: 开始执行(3/4),窗口[2025-12-30 22:00:00+08:00 ~ 2026-01-29 22:00:00+08:00]\n[2026-02-24 06:53:46] INFO | etl_billiards | DWS_GOODS_STOCK_WEEKLY: 提取数据,门店=2790685415443269,日期范围 2025-12-30 ~ 2026-01-29\n[2026-02-24 06:53:46] INFO | etl_billiards | DWS_GOODS_STOCK_WEEKLY: 提取到 0 条 DWD 记录\n[2026-02-24 06:53:46] INFO | etl_billiards | DWS_GOODS_STOCK_WEEKLY: 无数据需要汇总\n[2026-02-24 06:53:46] INFO | etl_billiards | DWS_GOODS_STOCK_WEEKLY: 完成(3/4),已处理 90/111.17 天\n[2026-02-24 06:53:46] INFO | etl_billiards | DWS_GOODS_STOCK_WEEKLY: 开始执行(4/4),窗口[2026-01-29 22:00:00+08:00 ~ 2026-02-20 02:00:00+08:00]\n[2026-02-24 06:53:46] INFO | etl_billiards | DWS_GOODS_STOCK_WEEKLY: 提取数据,门店=2790685415443269,日期范围 2026-01-29 ~ 2026-02-20\n[2026-02-24 06:53:46] INFO | etl_billiards | DWS_GOODS_STOCK_WEEKLY: 提取到 0 条 DWD 记录\n[2026-02-24 06:53:46] INFO | etl_billiards | DWS_GOODS_STOCK_WEEKLY: 无数据需要汇总\n[2026-02-24 06:53:46] INFO | etl_billiards | DWS_GOODS_STOCK_WEEKLY: 完成(4/4),已处理 111.17/111.17 天\n[2026-02-24 06:53:46] INFO | etl_billiards | DWS_GOODS_STOCK_WEEKLY: 完成,统计={'counts': {'fetched': 0, 'inserted': 0, 'updated': 0, 'skipped': 0, 'errors': 0}}\n[2026-02-24 06:53:47] INFO | etl_billiards | DWS_GOODS_STOCK_MONTHLY: 抓取阶段开始,目录=C:\\NeoZQYY\\export\\ETL-Connectors\\feiqiu\\JSON\\DWS_GOODS_STOCK_MONTHLY\\DWS_GOODS_STOCK_MONTHLY-9007-20260224-065347\n[2026-02-24 06:53:47] INFO | etl_billiards | DWS_GOODS_STOCK_MONTHLY: 提取数据,门店=2790685415443269,日期范围 2025-11-01 ~ 2026-02-20\n[2026-02-24 06:53:47] INFO | etl_billiards | DWS_GOODS_STOCK_MONTHLY: 提取到 0 条 DWD 记录\n[2026-02-24 06:53:47] INFO | etl_billiards | DWS_GOODS_STOCK_MONTHLY: 抓取完成,文件=None,记录数=0\n[2026-02-24 06:53:47] INFO | etl_billiards | DWS_GOODS_STOCK_MONTHLY: 本地清洗入库开始,源目录=C:\\NeoZQYY\\export\\ETL-Connectors\\feiqiu\\JSON\\DWS_GOODS_STOCK_MONTHLY\\DWS_GOODS_STOCK_MONTHLY-9007-20260224-065347\n[2026-02-24 06:53:47] INFO | etl_billiards | DWS_GOODS_STOCK_MONTHLY: 窗口拆分为 4 段(共 111.17 天)\n[2026-02-24 06:53:47] INFO | etl_billiards | DWS_GOODS_STOCK_MONTHLY: 开始执行(1/4),窗口[2025-10-31 22:00:00+08:00 ~ 2025-11-30 22:00:00+08:00]\n[2026-02-24 06:53:47] INFO | etl_billiards | DWS_GOODS_STOCK_MONTHLY: 提取数据,门店=2790685415443269,日期范围 2025-10-31 ~ 2025-11-30\n[2026-02-24 06:53:47] INFO | etl_billiards | DWS_GOODS_STOCK_MONTHLY: 提取到 0 条 DWD 记录\n[2026-02-24 06:53:47] INFO | etl_billiards | DWS_GOODS_STOCK_MONTHLY: 无数据需要汇总\n[2026-02-24 06:53:47] INFO | etl_billiards | DWS_GOODS_STOCK_MONTHLY: 完成(1/4),已处理 30/111.17 天\n[2026-02-24 06:53:47] INFO | etl_billiards | DWS_GOODS_STOCK_MONTHLY: 开始执行(2/4),窗口[2025-11-30 22:00:00+08:00 ~ 2025-12-30 22:00:00+08:00]\n[2026-02-24 06:53:47] INFO | etl_billiards | DWS_GOODS_STOCK_MONTHLY: 提取数据,门店=2790685415443269,日期范围 2025-11-30 ~ 2025-12-30\n[2026-02-24 06:53:47] INFO | etl_billiards | DWS_GOODS_STOCK_MONTHLY: 提取到 0 条 DWD 记录\n[2026-02-24 06:53:47] INFO | etl_billiards | DWS_GOODS_STOCK_MONTHLY: 无数据需要汇总\n[2026-02-24 06:53:47] INFO | etl_billiards | DWS_GOODS_STOCK_MONTHLY: 完成(2/4),已处理 60/111.17 天\n[2026-02-24 06:53:47] INFO | etl_billiards | DWS_GOODS_STOCK_MONTHLY: 开始执行(3/4),窗口[2025-12-30 22:00:00+08:00 ~ 2026-01-29 22:00:00+08:00]\n[2026-02-24 06:53:47] INFO | etl_billiards | DWS_GOODS_STOCK_MONTHLY: 提取数据,门店=2790685415443269,日期范围 2025-12-30 ~ 2026-01-29\n[2026-02-24 06:53:47] INFO | etl_billiards | DWS_GOODS_STOCK_MONTHLY: 提取到 0 条 DWD 记录\n[2026-02-24 06:53:47] INFO | etl_billiards | DWS_GOODS_STOCK_MONTHLY: 无数据需要汇总\n[2026-02-24 06:53:47] INFO | etl_billiards | DWS_GOODS_STOCK_MONTHLY: 完成(3/4),已处理 90/111.17 天\n[2026-02-24 06:53:47] INFO | etl_billiards | DWS_GOODS_STOCK_MONTHLY: 开始执行(4/4),窗口[2026-01-29 22:00:00+08:00 ~ 2026-02-20 02:00:00+08:00]\n[2026-02-24 06:53:47] INFO | etl_billiards | DWS_GOODS_STOCK_MONTHLY: 提取数据,门店=2790685415443269,日期范围 2026-01-29 ~ 2026-02-20\n[2026-02-24 06:53:48] INFO | etl_billiards | DWS_GOODS_STOCK_MONTHLY: 提取到 0 条 DWD 记录\n[2026-02-24 06:53:48] INFO | etl_billiards | DWS_GOODS_STOCK_MONTHLY: 无数据需要汇总\n[2026-02-24 06:53:48] INFO | etl_billiards | DWS_GOODS_STOCK_MONTHLY: 完成(4/4),已处理 111.17/111.17 天\n[2026-02-24 06:53:48] INFO | etl_billiards | DWS_GOODS_STOCK_MONTHLY: 完成,统计={'counts': {'fetched': 0, 'inserted': 0, 'updated': 0, 'skipped': 0, 'errors': 0}}\n[2026-02-24 06:53:48] INFO | etl_billiards | DWS_ASSISTANT_DAILY: 抓取阶段开始,目录=C:\\NeoZQYY\\export\\ETL-Connectors\\feiqiu\\JSON\\DWS_ASSISTANT_DAILY\\DWS_ASSISTANT_DAILY-9008-20260224-065348\n[2026-02-24 06:53:48] INFO | etl_billiards | DWS_ASSISTANT_DAILY: 提取数据,日期范围 2025-11-01 ~ 2026-02-20\n[2026-02-24 06:53:49] INFO | etl_billiards | DWS_ASSISTANT_DAILY: 抓取完成,文件=None,记录数=0\n[2026-02-24 06:53:49] INFO | etl_billiards | DWS_ASSISTANT_DAILY: 本地清洗入库开始,源目录=C:\\NeoZQYY\\export\\ETL-Connectors\\feiqiu\\JSON\\DWS_ASSISTANT_DAILY\\DWS_ASSISTANT_DAILY-9008-20260224-065348\n[2026-02-24 06:53:49] INFO | etl_billiards | DWS_ASSISTANT_DAILY: 窗口拆分为 4 段(共 111.17 天)\n[2026-02-24 06:53:49] INFO | etl_billiards | DWS_ASSISTANT_DAILY: 开始执行(1/4),窗口[2025-10-31 22:00:00+08:00 ~ 2025-11-30 22:00:00+08:00]\n[2026-02-24 06:53:49] INFO | etl_billiards | DWS_ASSISTANT_DAILY: 提取数据,日期范围 2025-10-31 ~ 2025-11-30\n[2026-02-24 06:53:49] INFO | etl_billiards | DWS_ASSISTANT_DAILY: 转换数据,服务记录 715 条\n[2026-02-24 06:54:26] INFO | etl_billiards | DWS_ASSISTANT_DAILY: 完成(1/4),已处理 30/111.17 天\n[2026-02-24 06:54:26] INFO | etl_billiards | DWS_ASSISTANT_DAILY: 开始执行(2/4),窗口[2025-11-30 22:00:00+08:00 ~ 2025-12-30 22:00:00+08:00]\n[2026-02-24 06:54:26] INFO | etl_billiards | DWS_ASSISTANT_DAILY: 提取数据,日期范围 2025-11-30 ~ 2025-12-30\n[2026-02-24 06:54:26] INFO | etl_billiards | DWS_ASSISTANT_DAILY: 转换数据,服务记录 959 条\n[2026-02-24 06:55:16] INFO | etl_billiards | DWS_ASSISTANT_DAILY: 完成(2/4),已处理 60/111.17 天\n[2026-02-24 06:55:16] INFO | etl_billiards | DWS_ASSISTANT_DAILY: 开始执行(3/4),窗口[2025-12-30 22:00:00+08:00 ~ 2026-01-29 22:00:00+08:00]\n[2026-02-24 06:55:16] INFO | etl_billiards | DWS_ASSISTANT_DAILY: 提取数据,日期范围 2025-12-30 ~ 2026-01-29\n[2026-02-24 06:55:16] INFO | etl_billiards | DWS_ASSISTANT_DAILY: 转换数据,服务记录 838 条\n[2026-02-24 06:55:53] INFO | etl_billiards | DWS_ASSISTANT_DAILY: 完成(3/4),已处理 90/111.17 天\n[2026-02-24 06:55:53] INFO | etl_billiards | DWS_ASSISTANT_DAILY: 开始执行(4/4),窗口[2026-01-29 22:00:00+08:00 ~ 2026-02-20 02:00:00+08:00]\n[2026-02-24 06:55:53] INFO | etl_billiards | DWS_ASSISTANT_DAILY: 提取数据,日期范围 2026-01-29 ~ 2026-02-20\n[2026-02-24 06:55:53] INFO | etl_billiards | DWS_ASSISTANT_DAILY: 转换数据,服务记录 216 条\n[2026-02-24 06:56:02] INFO | etl_billiards | DWS_ASSISTANT_DAILY: 完成(4/4),已处理 111.17/111.17 天\n[2026-02-24 06:56:02] INFO | etl_billiards | DWS_ASSISTANT_DAILY: 完成,统计={'counts': {'fetched': 367, 'inserted': 367, 'updated': 0, 'skipped': 0, 'errors': 0}, 'extra': {'deleted': 367}}\n[2026-02-24 06:56:03] INFO | etl_billiards | DWS_ASSISTANT_CUSTOMER: 抓取阶段开始,目录=C:\\NeoZQYY\\export\\ETL-Connectors\\feiqiu\\JSON\\DWS_ASSISTANT_CUSTOMER\\DWS_ASSISTANT_CUSTOMER-9009-20260224-065603\n[2026-02-24 06:56:03] INFO | etl_billiards | DWS_ASSISTANT_CUSTOMER: 提取数据,统计日期 2026-02-20\n[2026-02-24 06:56:03] INFO | etl_billiards | DWS_ASSISTANT_CUSTOMER: 抓取完成,文件=None,记录数=0\n[2026-02-24 06:56:03] INFO | etl_billiards | DWS_ASSISTANT_CUSTOMER: 本地清洗入库开始,源目录=C:\\NeoZQYY\\export\\ETL-Connectors\\feiqiu\\JSON\\DWS_ASSISTANT_CUSTOMER\\DWS_ASSISTANT_CUSTOMER-9009-20260224-065603\n[2026-02-24 06:56:03] INFO | etl_billiards | DWS_ASSISTANT_CUSTOMER: 窗口拆分为 4 段(共 111.17 天)\n[2026-02-24 06:56:03] INFO | etl_billiards | DWS_ASSISTANT_CUSTOMER: 开始执行(1/4),窗口[2025-10-31 22:00:00+08:00 ~ 2025-11-30 22:00:00+08:00]\n[2026-02-24 06:56:03] INFO | etl_billiards | DWS_ASSISTANT_CUSTOMER: 提取数据,统计日期 2025-11-30\n[2026-02-24 06:56:03] INFO | etl_billiards | DWS_ASSISTANT_CUSTOMER: 转换数据,486 条服务关系记录\n[2026-02-24 06:56:28] INFO | etl_billiards | DWS_ASSISTANT_CUSTOMER: 完成(1/4),已处理 30/111.17 天\n[2026-02-24 06:56:28] INFO | etl_billiards | DWS_ASSISTANT_CUSTOMER: 开始执行(2/4),窗口[2025-11-30 22:00:00+08:00 ~ 2025-12-30 22:00:00+08:00]\n[2026-02-24 06:56:28] INFO | etl_billiards | DWS_ASSISTANT_CUSTOMER: 提取数据,统计日期 2025-12-30\n[2026-02-24 06:56:28] INFO | etl_billiards | DWS_ASSISTANT_CUSTOMER: 转换数据,410 条服务关系记录\n[2026-02-24 06:56:49] INFO | etl_billiards | DWS_ASSISTANT_CUSTOMER: 完成(2/4),已处理 60/111.17 天\n[2026-02-24 06:56:49] INFO | etl_billiards | DWS_ASSISTANT_CUSTOMER: 开始执行(3/4),窗口[2025-12-30 22:00:00+08:00 ~ 2026-01-29 22:00:00+08:00]\n[2026-02-24 06:56:49] INFO | etl_billiards | DWS_ASSISTANT_CUSTOMER: 提取数据,统计日期 2026-01-29\n[2026-02-24 06:56:49] INFO | etl_billiards | DWS_ASSISTANT_CUSTOMER: 转换数据,334 条服务关系记录\n[2026-02-24 06:57:06] INFO | etl_billiards | DWS_ASSISTANT_CUSTOMER: 完成(3/4),已处理 90/111.17 天\n[2026-02-24 06:57:06] INFO | etl_billiards | DWS_ASSISTANT_CUSTOMER: 开始执行(4/4),窗口[2026-01-29 22:00:00+08:00 ~ 2026-02-20 02:00:00+08:00]\n[2026-02-24 06:57:06] INFO | etl_billiards | DWS_ASSISTANT_CUSTOMER: 提取数据,统计日期 2026-02-20\n[2026-02-24 06:57:06] INFO | etl_billiards | DWS_ASSISTANT_CUSTOMER: 转换数据,289 条服务关系记录\n[2026-02-24 06:57:21] INFO | etl_billiards | DWS_ASSISTANT_CUSTOMER: 完成(4/4),已处理 111.17/111.17 天\n[2026-02-24 06:57:21] INFO | etl_billiards | DWS_ASSISTANT_CUSTOMER: 完成,统计={'counts': {'fetched': 486, 'inserted': 486, 'updated': 0, 'skipped': 0, 'errors': 0}, 'extra': {'deleted': 0}}\n[2026-02-24 06:57:22] INFO | etl_billiards | DWS_ASSISTANT_SALARY: 抓取阶段开始,目录=C:\\NeoZQYY\\export\\ETL-Connectors\\feiqiu\\JSON\\DWS_ASSISTANT_SALARY\\DWS_ASSISTANT_SALARY-9010-20260224-065722\n[2026-02-24 06:57:22] INFO | etl_billiards | DWS_ASSISTANT_SALARY: 非工资结算期,跳过\n[2026-02-24 06:57:22] INFO | etl_billiards | DWS_ASSISTANT_SALARY: 抓取完成,文件=None,记录数=0\n[2026-02-24 06:57:22] INFO | etl_billiards | DWS_ASSISTANT_SALARY: 本地清洗入库开始,源目录=C:\\NeoZQYY\\export\\ETL-Connectors\\feiqiu\\JSON\\DWS_ASSISTANT_SALARY\\DWS_ASSISTANT_SALARY-9010-20260224-065722\n[2026-02-24 06:57:22] INFO | etl_billiards | DWS_ASSISTANT_SALARY: 窗口拆分为 4 段(共 111.17 天)\n[2026-02-24 06:57:22] INFO | etl_billiards | DWS_ASSISTANT_SALARY: 开始执行(1/4),窗口[2025-10-31 22:00:00+08:00 ~ 2025-11-30 22:00:00+08:00]\n[2026-02-24 06:57:22] INFO | etl_billiards | DWS_ASSISTANT_SALARY: 非工资结算期,跳过\n[2026-02-24 06:57:22] INFO | etl_billiards | DWS_ASSISTANT_SALARY: 无数据需要写入\n[2026-02-24 06:57:22] INFO | etl_billiards | DWS_ASSISTANT_SALARY: 完成(1/4),已处理 30/111.17 天\n[2026-02-24 06:57:22] INFO | etl_billiards | DWS_ASSISTANT_SALARY: 开始执行(2/4),窗口[2025-11-30 22:00:00+08:00 ~ 2025-12-30 22:00:00+08:00]\n[2026-02-24 06:57:22] INFO | etl_billiards | DWS_ASSISTANT_SALARY: 非工资结算期,跳过\n[2026-02-24 06:57:22] INFO | etl_billiards | DWS_ASSISTANT_SALARY: 无数据需要写入\n[2026-02-24 06:57:22] INFO | etl_billiards | DWS_ASSISTANT_SALARY: 完成(2/4),已处理 60/111.17 天\n[2026-02-24 06:57:22] INFO | etl_billiards | DWS_ASSISTANT_SALARY: 开始执行(3/4),窗口[2025-12-30 22:00:00+08:00 ~ 2026-01-29 22:00:00+08:00]\n[2026-02-24 06:57:22] INFO | etl_billiards | DWS_ASSISTANT_SALARY: 非工资结算期,跳过\n[2026-02-24 06:57:22] INFO | etl_billiards | DWS_ASSISTANT_SALARY: 无数据需要写入\n[2026-02-24 06:57:22] INFO | etl_billiards | DWS_ASSISTANT_SALARY: 完成(3/4),已处理 90/111.17 天\n[2026-02-24 06:57:22] INFO | etl_billiards | DWS_ASSISTANT_SALARY: 开始执行(4/4),窗口[2026-01-29 22:00:00+08:00 ~ 2026-02-20 02:00:00+08:00]\n[2026-02-24 06:57:22] INFO | etl_billiards | DWS_ASSISTANT_SALARY: 非工资结算期,跳过\n[2026-02-24 06:57:22] INFO | etl_billiards | DWS_ASSISTANT_SALARY: 无数据需要写入\n[2026-02-24 06:57:22] INFO | etl_billiards | DWS_ASSISTANT_SALARY: 完成(4/4),已处理 111.17/111.17 天\n[2026-02-24 06:57:22] INFO | etl_billiards | DWS_ASSISTANT_SALARY: 完成,统计={'counts': {'fetched': 0, 'inserted': 0, 'updated': 0, 'skipped': 0, 'errors': 0}}\n[2026-02-24 06:57:22] INFO | etl_billiards | DWS_BUILD_ORDER_SUMMARY: 开始执行工具类任务\n[2026-02-24 06:57:22] INFO | etl_billiards | DWS_BUILD_ORDER_SUMMARY: 分段执行 共4段\n[2026-02-24 06:57:22] INFO | etl_billiards | DWS_BUILD_ORDER_SUMMARY: 开始执行(1/4), 窗口[2025-10-31 22:00:00+08:00 ~ 2025-11-30 22:00:00+08:00]\n[2026-02-24 06:57:22] INFO | etl_billiards | DWS订单汇总: 删除=4005 语句=DELETE FROM dws.dws_order_summary WHERE 1=1 AND site_id = %s AND order_date >= %s AND order_date <= %s\n[2026-02-24 06:57:22] INFO | etl_billiards | DWS_BUILD_ORDER_SUMMARY: 开始执行(2/4), 窗口[2025-11-30 22:00:00+08:00 ~ 2025-12-30 22:00:00+08:00]\n[2026-02-24 06:57:23] INFO | etl_billiards | DWS订单汇总: 删除=4029 语句=DELETE FROM dws.dws_order_summary WHERE 1=1 AND site_id = %s AND order_date >= %s AND order_date <= %s\n[2026-02-24 06:57:23] INFO | etl_billiards | DWS_BUILD_ORDER_SUMMARY: 开始执行(3/4), 窗口[2025-12-30 22:00:00+08:00 ~ 2026-01-29 22:00:00+08:00]\n[2026-02-24 06:57:23] INFO | etl_billiards | DWS订单汇总: 删除=3602 语句=DELETE FROM dws.dws_order_summary WHERE 1=1 AND site_id = %s AND order_date >= %s AND order_date <= %s\n[2026-02-24 06:57:23] INFO | etl_billiards | DWS_BUILD_ORDER_SUMMARY: 开始执行(4/4), 窗口[2026-01-29 22:00:00+08:00 ~ 2026-02-20 02:00:00+08:00]\n[2026-02-24 06:57:23] INFO | etl_billiards | DWS订单汇总: 删除=1660 语句=DELETE FROM dws.dws_order_summary WHERE 1=1 AND site_id = %s AND order_date >= %s AND order_date <= %s\n[2026-02-24 06:57:23] INFO | etl_billiards | DWS_BUILD_ORDER_SUMMARY: 完成, 统计={'fetched': 0, 'inserted': 13296, 'updated': 0, 'skipped': 0, 'errors': 0}\n[2026-02-24 06:57:23] INFO | etl_billiards | DWS_BUILD_ORDER_SUMMARY: 工具类任务执行成功\n[2026-02-24 06:57:23] INFO | etl_billiards | DWS_BUILD_ORDER_SUMMARY: 结果统计: {'fetched': 0, 'inserted': 13296, 'updated': 0, 'skipped': 0, 'errors': 0}\n[2026-02-24 06:57:24] INFO | etl_billiards | DWS_MEMBER_CONSUMPTION: 抓取阶段开始,目录=C:\\NeoZQYY\\export\\ETL-Connectors\\feiqiu\\JSON\\DWS_MEMBER_CONSUMPTION\\DWS_MEMBER_CONSUMPTION-9011-20260224-065724\n[2026-02-24 06:57:24] INFO | etl_billiards | DWS_MEMBER_CONSUMPTION: 提取数据,统计日期 2026-02-20\n[2026-02-24 06:57:24] WARNING | etl_billiards | DWS_MEMBER_CONSUMPTION: FDW 读取 member_birthday_manual 失败,降级为 dim_member.birthday — 错误: 关系 \"fdw_app.member_birthday_manual\" 不存在\nLINE 11: FROM fdw_app.member_birthday_manual\n ^\n\n[2026-02-24 06:57:24] ERROR | etl_billiards | 任务 DWS_MEMBER_CONSUMPTION 失败: 错误: 当前事务被终止, 事务块结束之前的查询被忽略\nTraceback (most recent call last):\n File \"C:\\NeoZQYY\\apps\\etl\\connectors\\feiqiu\\tasks\\dws\\member_consumption_task.py\", line 288, in _extract_member_info\n rows = self.db.query(sql_with_fdw, (site_id,))\n File \"C:\\NeoZQYY\\apps\\etl\\connectors\\feiqiu\\database\\operations.py\", line 99, in query\n return self._connection.query(sql, args)\n ~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^\n File \"C:\\NeoZQYY\\apps\\etl\\connectors\\feiqiu\\database\\connection.py\", line 50, in query\n c.execute(sql, args)\n ~~~~~~~~~^^^^^^^^^^^\n File \"C:\\NeoZQYY\\.venv\\Lib\\site-packages\\psycopg2\\extras.py\", line 236, in execute\n return super().execute(query, vars)\n ~~~~~~~~~~~~~~~^^^^^^^^^^^^^\npsycopg2.errors.UndefinedTable: 错误: 关系 \"fdw_app.member_birthday_manual\" 不存在\nLINE 11: FROM fdw_app.member_birthday_manual\n ^\n\n\nDuring handling of the above exception, another exception occurred:\n\nTraceback (most recent call last):\n File \"C:\\NeoZQYY\\apps\\etl\\connectors\\feiqiu\\orchestration\\task_executor.py\", line 215, in run_single_task\n fetch_stats = self._execute_fetch(task_code, cursor_data, fetch_dir, run_id)\n File \"C:\\NeoZQYY\\apps\\etl\\connectors\\feiqiu\\orchestration\\task_executor.py\", line 289, in _execute_fetch\n extracted = task.extract(context)\n File \"C:\\NeoZQYY\\apps\\etl\\connectors\\feiqiu\\tasks\\dws\\member_consumption_task.py\", line 83, in extract\n member_info = self._extract_member_info(site_id)\n File \"C:\\NeoZQYY\\apps\\etl\\connectors\\feiqiu\\tasks\\dws\\member_consumption_task.py\", line 297, in _extract_member_info\n rows = self.db.query(sql_fallback, (site_id,))\n File \"C:\\NeoZQYY\\apps\\etl\\connectors\\feiqiu\\database\\operations.py\", line 99, in query\n return self._connection.query(sql, args)\n ~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^\n File \"C:\\NeoZQYY\\apps\\etl\\connectors\\feiqiu\\database\\connection.py\", line 50, in query\n c.execute(sql, args)\n ~~~~~~~~~^^^^^^^^^^^\n File \"C:\\NeoZQYY\\.venv\\Lib\\site-packages\\psycopg2\\extras.py\", line 236, in execute\n return super().execute(query, vars)\n ~~~~~~~~~~~~~~~^^^^^^^^^^^^^\npsycopg2.errors.UndefinedColumn: 错误: 字段 \"tenant_member_id\" 不存在\nLINE 12: SELECT DISTINCT tenant_member_id\n ^\n\n\nDuring handling of the above exception, another exception occurred:\n\nTraceback (most recent call last):\n File \"C:\\NeoZQYY\\apps\\etl\\connectors\\feiqiu\\orchestration\\task_executor.py\", line 94, in run_tasks\n task_result = self.run_single_task(\n task_code, run_uuid, store_id, data_source=data_source,\n )\n File \"C:\\NeoZQYY\\apps\\etl\\connectors\\feiqiu\\orchestration\\task_executor.py\", line 255, in run_single_task\n self.run_tracker.update_run(\n ~~~~~~~~~~~~~~~~~~~~~~~~~~~^\n run_id=run_id,\n ^^^^^^^^^^^^^^\n ...<3 lines>...\n error_message=str(exc),\n ^^^^^^^^^^^^^^^^^^^^^^^\n )\n ^\n File \"C:\\NeoZQYY\\apps\\etl\\connectors\\feiqiu\\orchestration\\run_tracker.py\", line 105, in update_run\n self.db.execute(\n ~~~~~~~~~~~~~~~^\n sql,\n ^^^^\n ...<18 lines>...\n ),\n ^^\n )\n ^\n File \"C:\\NeoZQYY\\apps\\etl\\connectors\\feiqiu\\database\\connection.py\", line 56, in execute\n c.execute(sql, args)\n ~~~~~~~~~^^^^^^^^^^^\npsycopg2.errors.InFailedSqlTransaction: 错误: 当前事务被终止, 事务块结束之前的查询被忽略\n\n[2026-02-24 06:57:24] ERROR | etl_billiards | 任务 DWS_MEMBER_VISIT 失败: 错误: 当前事务被终止, 事务块结束之前的查询被忽略\nTraceback (most recent call last):\n File \"C:\\NeoZQYY\\apps\\etl\\connectors\\feiqiu\\orchestration\\task_executor.py\", line 94, in run_tasks\n task_result = self.run_single_task(\n task_code, run_uuid, store_id, data_source=data_source,\n )\n File \"C:\\NeoZQYY\\apps\\etl\\connectors\\feiqiu\\orchestration\\task_executor.py\", line 152, in run_single_task\n task_cfg = self._load_task_config(task_code, store_id)\n File \"C:\\NeoZQYY\\apps\\etl\\connectors\\feiqiu\\orchestration\\task_executor.py\", line 429, in _load_task_config\n rows = self.db_ops.query(sql, (store_id, task_code))\n File \"C:\\NeoZQYY\\apps\\etl\\connectors\\feiqiu\\database\\operations.py\", line 99, in query\n return self._connection.query(sql, args)\n ~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^\n File \"C:\\NeoZQYY\\apps\\etl\\connectors\\feiqiu\\database\\connection.py\", line 50, in query\n c.execute(sql, args)\n ~~~~~~~~~^^^^^^^^^^^\n File \"C:\\NeoZQYY\\.venv\\Lib\\site-packages\\psycopg2\\extras.py\", line 236, in execute\n return super().execute(query, vars)\n ~~~~~~~~~~~~~~~^^^^^^^^^^^^^\npsycopg2.errors.InFailedSqlTransaction: 错误: 当前事务被终止, 事务块结束之前的查询被忽略\n\n[2026-02-24 06:57:24] ERROR | etl_billiards | 任务 DWS_FINANCE_DAILY 失败: 错误: 当前事务被终止, 事务块结束之前的查询被忽略\nTraceback (most recent call last):\n File \"C:\\NeoZQYY\\apps\\etl\\connectors\\feiqiu\\orchestration\\task_executor.py\", line 94, in run_tasks\n task_result = self.run_single_task(\n task_code, run_uuid, store_id, data_source=data_source,\n )\n File \"C:\\NeoZQYY\\apps\\etl\\connectors\\feiqiu\\orchestration\\task_executor.py\", line 152, in run_single_task\n task_cfg = self._load_task_config(task_code, store_id)\n File \"C:\\NeoZQYY\\apps\\etl\\connectors\\feiqiu\\orchestration\\task_executor.py\", line 429, in _load_task_config\n rows = self.db_ops.query(sql, (store_id, task_code))\n File \"C:\\NeoZQYY\\apps\\etl\\connectors\\feiqiu\\database\\operations.py\", line 99, in query\n return self._connection.query(sql, args)\n ~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^\n File \"C:\\NeoZQYY\\apps\\etl\\connectors\\feiqiu\\database\\connection.py\", line 50, in query\n c.execute(sql, args)\n ~~~~~~~~~^^^^^^^^^^^\n File \"C:\\NeoZQYY\\.venv\\Lib\\site-packages\\psycopg2\\extras.py\", line 236, in execute\n return super().execute(query, vars)\n ~~~~~~~~~~~~~~~^^^^^^^^^^^^^\npsycopg2.errors.InFailedSqlTransaction: 错误: 当前事务被终止, 事务块结束之前的查询被忽略\n\n[2026-02-24 06:57:24] ERROR | etl_billiards | 任务 DWS_FINANCE_RECHARGE 失败: 错误: 当前事务被终止, 事务块结束之前的查询被忽略\nTraceback (most recent call last):\n File \"C:\\NeoZQYY\\apps\\etl\\connectors\\feiqiu\\orchestration\\task_executor.py\", line 94, in run_tasks\n task_result = self.run_single_task(\n task_code, run_uuid, store_id, data_source=data_source,\n )\n File \"C:\\NeoZQYY\\apps\\etl\\connectors\\feiqiu\\orchestration\\task_executor.py\", line 152, in run_single_task\n task_cfg = self._load_task_config(task_code, store_id)\n File \"C:\\NeoZQYY\\apps\\etl\\connectors\\feiqiu\\orchestration\\task_executor.py\", line 429, in _load_task_config\n rows = self.db_ops.query(sql, (store_id, task_code))\n File \"C:\\NeoZQYY\\apps\\etl\\connectors\\feiqiu\\database\\operations.py\", line 99, in query\n return self._connection.query(sql, args)\n ~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^\n File \"C:\\NeoZQYY\\apps\\etl\\connectors\\feiqiu\\database\\connection.py\", line 50, in query\n c.execute(sql, args)\n ~~~~~~~~~^^^^^^^^^^^\n File \"C:\\NeoZQYY\\.venv\\Lib\\site-packages\\psycopg2\\extras.py\", line 236, in execute\n return super().execute(query, vars)\n ~~~~~~~~~~~~~~~^^^^^^^^^^^^^\npsycopg2.errors.InFailedSqlTransaction: 错误: 当前事务被终止, 事务块结束之前的查询被忽略\n\n[2026-02-24 06:57:24] ERROR | etl_billiards | 任务 DWS_FINANCE_INCOME_STRUCTURE 失败: 错误: 当前事务被终止, 事务块结束之前的查询被忽略\nTraceback (most recent call last):\n File \"C:\\NeoZQYY\\apps\\etl\\connectors\\feiqiu\\orchestration\\task_executor.py\", line 94, in run_tasks\n task_result = self.run_single_task(\n task_code, run_uuid, store_id, data_source=data_source,\n )\n File \"C:\\NeoZQYY\\apps\\etl\\connectors\\feiqiu\\orchestration\\task_executor.py\", line 152, in run_single_task\n task_cfg = self._load_task_config(task_code, store_id)\n File \"C:\\NeoZQYY\\apps\\etl\\connectors\\feiqiu\\orchestration\\task_executor.py\", line 429, in _load_task_config\n rows = self.db_ops.query(sql, (store_id, task_code))\n File \"C:\\NeoZQYY\\apps\\etl\\connectors\\feiqiu\\database\\operations.py\", line 99, in query\n return self._connection.query(sql, args)\n ~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^\n File \"C:\\NeoZQYY\\apps\\etl\\connectors\\feiqiu\\database\\connection.py\", line 50, in query\n c.execute(sql, args)\n ~~~~~~~~~^^^^^^^^^^^\n File \"C:\\NeoZQYY\\.venv\\Lib\\site-packages\\psycopg2\\extras.py\", line 236, in execute\n return super().execute(query, vars)\n ~~~~~~~~~~~~~~~^^^^^^^^^^^^^\npsycopg2.errors.InFailedSqlTransaction: 错误: 当前事务被终止, 事务块结束之前的查询被忽略\n\n[2026-02-24 06:57:24] ERROR | etl_billiards | 任务 DWS_FINANCE_DISCOUNT_DETAIL 失败: 错误: 当前事务被终止, 事务块结束之前的查询被忽略\nTraceback (most recent call last):\n File \"C:\\NeoZQYY\\apps\\etl\\connectors\\feiqiu\\orchestration\\task_executor.py\", line 94, in run_tasks\n task_result = self.run_single_task(\n task_code, run_uuid, store_id, data_source=data_source,\n )\n File \"C:\\NeoZQYY\\apps\\etl\\connectors\\feiqiu\\orchestration\\task_executor.py\", line 152, in run_single_task\n task_cfg = self._load_task_config(task_code, store_id)\n File \"C:\\NeoZQYY\\apps\\etl\\connectors\\feiqiu\\orchestration\\task_executor.py\", line 429, in _load_task_config\n rows = self.db_ops.query(sql, (store_id, task_code))\n File \"C:\\NeoZQYY\\apps\\etl\\connectors\\feiqiu\\database\\operations.py\", line 99, in query\n return self._connection.query(sql, args)\n ~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^\n File \"C:\\NeoZQYY\\apps\\etl\\connectors\\feiqiu\\database\\connection.py\", line 50, in query\n c.execute(sql, args)\n ~~~~~~~~~^^^^^^^^^^^\n File \"C:\\NeoZQYY\\.venv\\Lib\\site-packages\\psycopg2\\extras.py\", line 236, in execute\n return super().execute(query, vars)\n ~~~~~~~~~~~~~~~^^^^^^^^^^^^^\npsycopg2.errors.InFailedSqlTransaction: 错误: 当前事务被终止, 事务块结束之前的查询被忽略\n\n[2026-02-24 06:57:24] ERROR | etl_billiards | 任务 DWS_ASSISTANT_MONTHLY 失败: 错误: 当前事务被终止, 事务块结束之前的查询被忽略\nTraceback (most recent call last):\n File \"C:\\NeoZQYY\\apps\\etl\\connectors\\feiqiu\\orchestration\\task_executor.py\", line 94, in run_tasks\n task_result = self.run_single_task(\n task_code, run_uuid, store_id, data_source=data_source,\n )\n File \"C:\\NeoZQYY\\apps\\etl\\connectors\\feiqiu\\orchestration\\task_executor.py\", line 152, in run_single_task\n task_cfg = self._load_task_config(task_code, store_id)\n File \"C:\\NeoZQYY\\apps\\etl\\connectors\\feiqiu\\orchestration\\task_executor.py\", line 429, in _load_task_config\n rows = self.db_ops.query(sql, (store_id, task_code))\n File \"C:\\NeoZQYY\\apps\\etl\\connectors\\feiqiu\\database\\operations.py\", line 99, in query\n return self._connection.query(sql, args)\n ~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^\n File \"C:\\NeoZQYY\\apps\\etl\\connectors\\feiqiu\\database\\connection.py\", line 50, in query\n c.execute(sql, args)\n ~~~~~~~~~^^^^^^^^^^^\n File \"C:\\NeoZQYY\\.venv\\Lib\\site-packages\\psycopg2\\extras.py\", line 236, in execute\n return super().execute(query, vars)\n ~~~~~~~~~~~~~~~^^^^^^^^^^^^^\npsycopg2.errors.InFailedSqlTransaction: 错误: 当前事务被终止, 事务块结束之前的查询被忽略\n\n[2026-02-24 06:57:24] ERROR | etl_billiards | 任务 DWS_ASSISTANT_FINANCE 失败: 错误: 当前事务被终止, 事务块结束之前的查询被忽略\nTraceback (most recent call last):\n File \"C:\\NeoZQYY\\apps\\etl\\connectors\\feiqiu\\orchestration\\task_executor.py\", line 94, in run_tasks\n task_result = self.run_single_task(\n task_code, run_uuid, store_id, data_source=data_source,\n )\n File \"C:\\NeoZQYY\\apps\\etl\\connectors\\feiqiu\\orchestration\\task_executor.py\", line 152, in run_single_task\n task_cfg = self._load_task_config(task_code, store_id)\n File \"C:\\NeoZQYY\\apps\\etl\\connectors\\feiqiu\\orchestration\\task_executor.py\", line 429, in _load_task_config\n rows = self.db_ops.query(sql, (store_id, task_code))\n File \"C:\\NeoZQYY\\apps\\etl\\connectors\\feiqiu\\database\\operations.py\", line 99, in query\n return self._connection.query(sql, args)\n ~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^\n File \"C:\\NeoZQYY\\apps\\etl\\connectors\\feiqiu\\database\\connection.py\", line 50, in query\n c.execute(sql, args)\n ~~~~~~~~~^^^^^^^^^^^\n File \"C:\\NeoZQYY\\.venv\\Lib\\site-packages\\psycopg2\\extras.py\", line 236, in execute\n return super().execute(query, vars)\n ~~~~~~~~~~~~~~~^^^^^^^^^^^^^\npsycopg2.errors.InFailedSqlTransaction: 错误: 当前事务被终止, 事务块结束之前的查询被忽略\n\n[2026-02-24 06:57:24] INFO | etl_billiards | DWS_WINBACK_INDEX: 开始执行工具类任务\n[2026-02-24 06:57:24] INFO | etl_billiards | 开始计算 DWS_WINBACK_INDEX\n[2026-02-24 06:57:24] ERROR | etl_billiards | DWS_WINBACK_INDEX: 工具类任务执行失败: 错误: 当前事务被终止, 事务块结束之前的查询被忽略\nTraceback (most recent call last):\n File \"C:\\NeoZQYY\\apps\\etl\\connectors\\feiqiu\\orchestration\\task_executor.py\", line 403, in _run_utility_task\n result = task.execute(None)\n File \"C:\\NeoZQYY\\apps\\etl\\connectors\\feiqiu\\tasks\\dws\\index\\member_index_base.py\", line 84, in execute\n tenant_id = self._get_tenant_id()\n File \"C:\\NeoZQYY\\apps\\etl\\connectors\\feiqiu\\tasks\\dws\\index\\member_index_base.py\", line 169, in _get_tenant_id\n rows = self.db.query(sql)\n File \"C:\\NeoZQYY\\apps\\etl\\connectors\\feiqiu\\database\\operations.py\", line 99, in query\n return self._connection.query(sql, args)\n ~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^\n File \"C:\\NeoZQYY\\apps\\etl\\connectors\\feiqiu\\database\\connection.py\", line 50, in query\n c.execute(sql, args)\n ~~~~~~~~~^^^^^^^^^^^\n File \"C:\\NeoZQYY\\.venv\\Lib\\site-packages\\psycopg2\\extras.py\", line 236, in execute\n return super().execute(query, vars)\n ~~~~~~~~~~~~~~~^^^^^^^^^^^^^\npsycopg2.errors.InFailedSqlTransaction: 错误: 当前事务被终止, 事务块结束之前的查询被忽略\n\n[2026-02-24 06:57:24] ERROR | etl_billiards | 任务 DWS_WINBACK_INDEX 失败: 错误: 当前事务被终止, 事务块结束之前的查询被忽略\nTraceback (most recent call last):\n File \"C:\\NeoZQYY\\apps\\etl\\connectors\\feiqiu\\orchestration\\task_executor.py\", line 94, in run_tasks\n task_result = self.run_single_task(\n task_code, run_uuid, store_id, data_source=data_source,\n )\n File \"C:\\NeoZQYY\\apps\\etl\\connectors\\feiqiu\\orchestration\\task_executor.py\", line 150, in run_single_task\n return self._run_utility_task(task_code_upper, store_id)\n ~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^\n File \"C:\\NeoZQYY\\apps\\etl\\connectors\\feiqiu\\orchestration\\task_executor.py\", line 403, in _run_utility_task\n result = task.execute(None)\n File \"C:\\NeoZQYY\\apps\\etl\\connectors\\feiqiu\\tasks\\dws\\index\\member_index_base.py\", line 84, in execute\n tenant_id = self._get_tenant_id()\n File \"C:\\NeoZQYY\\apps\\etl\\connectors\\feiqiu\\tasks\\dws\\index\\member_index_base.py\", line 169, in _get_tenant_id\n rows = self.db.query(sql)\n File \"C:\\NeoZQYY\\apps\\etl\\connectors\\feiqiu\\database\\operations.py\", line 99, in query\n return self._connection.query(sql, args)\n ~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^\n File \"C:\\NeoZQYY\\apps\\etl\\connectors\\feiqiu\\database\\connection.py\", line 50, in query\n c.execute(sql, args)\n ~~~~~~~~~^^^^^^^^^^^\n File \"C:\\NeoZQYY\\.venv\\Lib\\site-packages\\psycopg2\\extras.py\", line 236, in execute\n return super().execute(query, vars)\n ~~~~~~~~~~~~~~~^^^^^^^^^^^^^\npsycopg2.errors.InFailedSqlTransaction: 错误: 当前事务被终止, 事务块结束之前的查询被忽略\n\n[2026-02-24 06:57:24] INFO | etl_billiards | DWS_NEWCONV_INDEX: 开始执行工具类任务\n[2026-02-24 06:57:24] INFO | etl_billiards | 开始计算 DWS_NEWCONV_INDEX\n[2026-02-24 06:57:25] ERROR | etl_billiards | DWS_NEWCONV_INDEX: 工具类任务执行失败: 错误: 当前事务被终止, 事务块结束之前的查询被忽略\nTraceback (most recent call last):\n File \"C:\\NeoZQYY\\apps\\etl\\connectors\\feiqiu\\orchestration\\task_executor.py\", line 403, in _run_utility_task\n result = task.execute(None)\n File \"C:\\NeoZQYY\\apps\\etl\\connectors\\feiqiu\\tasks\\dws\\index\\member_index_base.py\", line 84, in execute\n tenant_id = self._get_tenant_id()\n File \"C:\\NeoZQYY\\apps\\etl\\connectors\\feiqiu\\tasks\\dws\\index\\member_index_base.py\", line 169, in _get_tenant_id\n rows = self.db.query(sql)\n File \"C:\\NeoZQYY\\apps\\etl\\connectors\\feiqiu\\database\\operations.py\", line 99, in query\n return self._connection.query(sql, args)\n ~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^\n File \"C:\\NeoZQYY\\apps\\etl\\connectors\\feiqiu\\database\\connection.py\", line 50, in query\n c.execute(sql, args)\n ~~~~~~~~~^^^^^^^^^^^\n File \"C:\\NeoZQYY\\.venv\\Lib\\site-packages\\psycopg2\\extras.py\", line 236, in execute\n return super().execute(query, vars)\n ~~~~~~~~~~~~~~~^^^^^^^^^^^^^\npsycopg2.errors.InFailedSqlTransaction: 错误: 当前事务被终止, 事务块结束之前的查询被忽略\n\n[2026-02-24 06:57:25] ERROR | etl_billiards | 任务 DWS_NEWCONV_INDEX 失败: 错误: 当前事务被终止, 事务块结束之前的查询被忽略\nTraceback (most recent call last):\n File \"C:\\NeoZQYY\\apps\\etl\\connectors\\feiqiu\\orchestration\\task_executor.py\", line 94, in run_tasks\n task_result = self.run_single_task(\n task_code, run_uuid, store_id, data_source=data_source,\n )\n File \"C:\\NeoZQYY\\apps\\etl\\connectors\\feiqiu\\orchestration\\task_executor.py\", line 150, in run_single_task\n return self._run_utility_task(task_code_upper, store_id)\n ~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^\n File \"C:\\NeoZQYY\\apps\\etl\\connectors\\feiqiu\\orchestration\\task_executor.py\", line 403, in _run_utility_task\n result = task.execute(None)\n File \"C:\\NeoZQYY\\apps\\etl\\connectors\\feiqiu\\tasks\\dws\\index\\member_index_base.py\", line 84, in execute\n tenant_id = self._get_tenant_id()\n File \"C:\\NeoZQYY\\apps\\etl\\connectors\\feiqiu\\tasks\\dws\\index\\member_index_base.py\", line 169, in _get_tenant_id\n rows = self.db.query(sql)\n File \"C:\\NeoZQYY\\apps\\etl\\connectors\\feiqiu\\database\\operations.py\", line 99, in query\n return self._connection.query(sql, args)\n ~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^\n File \"C:\\NeoZQYY\\apps\\etl\\connectors\\feiqiu\\database\\connection.py\", line 50, in query\n c.execute(sql, args)\n ~~~~~~~~~^^^^^^^^^^^\n File \"C:\\NeoZQYY\\.venv\\Lib\\site-packages\\psycopg2\\extras.py\", line 236, in execute\n return super().execute(query, vars)\n ~~~~~~~~~~~~~~~^^^^^^^^^^^^^\npsycopg2.errors.InFailedSqlTransaction: 错误: 当前事务被终止, 事务块结束之前的查询被忽略\n\n[2026-02-24 06:57:25] INFO | etl_billiards | DWS_RELATION_INDEX: 开始执行工具类任务\n[2026-02-24 06:57:25] INFO | etl_billiards | 开始计算关系指数(RS/OS/MS/ML)\n[2026-02-24 06:57:25] ERROR | etl_billiards | DWS_RELATION_INDEX: 工具类任务执行失败: 错误: 当前事务被终止, 事务块结束之前的查询被忽略\nTraceback (most recent call last):\n File \"C:\\NeoZQYY\\apps\\etl\\connectors\\feiqiu\\orchestration\\task_executor.py\", line 403, in _run_utility_task\n result = task.execute(None)\n File \"C:\\NeoZQYY\\apps\\etl\\connectors\\feiqiu\\tasks\\dws\\index\\relation_index_task.py\", line 145, in execute\n tenant_id = self._get_tenant_id()\n File \"C:\\NeoZQYY\\apps\\etl\\connectors\\feiqiu\\tasks\\dws\\index\\relation_index_task.py\", line 688, in _get_tenant_id\n rows = self.db.query(sql)\n File \"C:\\NeoZQYY\\apps\\etl\\connectors\\feiqiu\\database\\operations.py\", line 99, in query\n return self._connection.query(sql, args)\n ~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^\n File \"C:\\NeoZQYY\\apps\\etl\\connectors\\feiqiu\\database\\connection.py\", line 50, in query\n c.execute(sql, args)\n ~~~~~~~~~^^^^^^^^^^^\n File \"C:\\NeoZQYY\\.venv\\Lib\\site-packages\\psycopg2\\extras.py\", line 236, in execute\n return super().execute(query, vars)\n ~~~~~~~~~~~~~~~^^^^^^^^^^^^^\npsycopg2.errors.InFailedSqlTransaction: 错误: 当前事务被终止, 事务块结束之前的查询被忽略\n\n[2026-02-24 06:57:25] ERROR | etl_billiards | 任务 DWS_RELATION_INDEX 失败: 错误: 当前事务被终止, 事务块结束之前的查询被忽略\nTraceback (most recent call last):\n File \"C:\\NeoZQYY\\apps\\etl\\connectors\\feiqiu\\orchestration\\task_executor.py\", line 94, in run_tasks\n task_result = self.run_single_task(\n task_code, run_uuid, store_id, data_source=data_source,\n )\n File \"C:\\NeoZQYY\\apps\\etl\\connectors\\feiqiu\\orchestration\\task_executor.py\", line 150, in run_single_task\n return self._run_utility_task(task_code_upper, store_id)\n ~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^\n File \"C:\\NeoZQYY\\apps\\etl\\connectors\\feiqiu\\orchestration\\task_executor.py\", line 403, in _run_utility_task\n result = task.execute(None)\n File \"C:\\NeoZQYY\\apps\\etl\\connectors\\feiqiu\\tasks\\dws\\index\\relation_index_task.py\", line 145, in execute\n tenant_id = self._get_tenant_id()\n File \"C:\\NeoZQYY\\apps\\etl\\connectors\\feiqiu\\tasks\\dws\\index\\relation_index_task.py\", line 688, in _get_tenant_id\n rows = self.db.query(sql)\n File \"C:\\NeoZQYY\\apps\\etl\\connectors\\feiqiu\\database\\operations.py\", line 99, in query\n return self._connection.query(sql, args)\n ~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^\n File \"C:\\NeoZQYY\\apps\\etl\\connectors\\feiqiu\\database\\connection.py\", line 50, in query\n c.execute(sql, args)\n ~~~~~~~~~^^^^^^^^^^^\n File \"C:\\NeoZQYY\\.venv\\Lib\\site-packages\\psycopg2\\extras.py\", line 236, in execute\n return super().execute(query, vars)\n ~~~~~~~~~~~~~~~^^^^^^^^^^^^^\npsycopg2.errors.InFailedSqlTransaction: 错误: 当前事务被终止, 事务块结束之前的查询被忽略\n\n[2026-02-24 06:57:25] INFO | etl_billiards | 所有任务执行完成\n[2026-02-24 06:57:27] INFO | etl_billiards | 一致性检查报告已生成: C:\\NeoZQYY\\export\\ETL-Connectors\\feiqiu\\REPORTS\\consistency_report_20260224_065727.md\n[2026-02-24 06:57:27] INFO | etl_billiards | 计时报告已生成\n[2026-02-24 06:57:27] INFO | etl_billiards | \n╔══════════════════════════════════════════════════════════════╗\n║ 任务执行总结 ║\n╠══════════════════════════════════════════════════════════════╣\n║ 任务代码: FLOW_API_FULL ║\n║ 执行状态: 成功 ║\n║ 执行时间: 2026-02-24 06:24:14 ~ 06:57:27 (33分13秒) ║\n╠══════════════════════════════════════════════════════════════╣\n║ 数据统计 ║\n║ - 获取记录: 227,842 ║\n║ - 新增记录: 13,617 ║\n║ - 更新记录: 227,669 ║\n║ - 跳过记录: 0 ║\n║ - 错误记录: 0 ║\n╚══════════════════════════════════════════════════════════════╝\n[2026-02-24 06:57:27] INFO | etl_billiards | \n╔══════════════════════════════════════════════════════════════╗\n║ 任务执行总结 ║\n╠══════════════════════════════════════════════════════════════╣\n║ 任务代码: FLOW_API_FULL ║\n║ 执行状态: 成功 ║\n║ 执行时间: 2026-02-24 06:24:14 ~ 06:57:27 (33分13秒) ║\n╠══════════════════════════════════════════════════════════════╣\n║ 数据统计 ║\n║ - 获取记录: 227,842 ║\n║ - 新增记录: 13,617 ║\n║ - 更新记录: 227,669 ║\n║ - 跳过记录: 0 ║\n║ - 错误记录: 0 ║\n╚══════════════════════════════════════════════════════════════╝\n[2026-02-24 06:57:27] INFO | etl_billiards | Flow 执行完成: SUCCESS\n[2026-02-24 06:57:27] INFO | etl_billiards | ETL运行完成"
|
||
}
|