5 lines
74 KiB
JSON
5 lines
74 KiB
JSON
{
|
||
"execution_id": "d9443781-e4ac-4df6-9f87-11c45d72e5ba",
|
||
"output_log": "",
|
||
"error_log": "[2026-02-21 20:45:18] INFO | etl_billiards | 配置加载完成\n[2026-02-21 20:45:18] INFO | etl_billiards | 门店ID: 2790685415443269\n[2026-02-21 20:45:18] INFO | etl_billiards | 执行模式: Flow 模式\n[2026-02-21 20:45:18] INFO | etl_billiards | Flow 类型: api_full\n[2026-02-21 20:45:18] INFO | etl_billiards | 处理模式: full_window\n[2026-02-21 20:45:18] INFO | etl_billiards | FLOW_API_FULL | 开始执行 Flow: api_full | 开始时间: 2026-02-21 20:45:18\n[2026-02-21 20:45:18] INFO | etl_billiards | Flow api_full: 执行增量 ETL,层=['ODS', 'DWD', 'DWS', 'INDEX']\n[2026-02-21 20:45:18] INFO | etl_billiards | 开始运行任务: ['DWS_ASSISTANT_DAILY', 'DWS_ASSISTANT_MONTHLY', 'DWS_ASSISTANT_CUSTOMER', 'DWS_ASSISTANT_SALARY', 'DWS_ASSISTANT_FINANCE', 'ODS_SETTLEMENT_RECORDS', 'ODS_PAYMENT', 'ODS_REFUND', 'DWS_BUILD_ORDER_SUMMARY', 'DWS_MEMBER_CONSUMPTION', 'DWS_MEMBER_VISIT', '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', 'DWS_GOODS_STOCK_DAILY', 'DWS_GOODS_STOCK_WEEKLY', 'DWS_GOODS_STOCK_MONTHLY', 'DWS_FINANCE_DAILY', 'DWS_FINANCE_RECHARGE', 'DWS_FINANCE_INCOME_STRUCTURE', 'DWS_FINANCE_DISCOUNT_DETAIL', 'DWS_WINBACK_INDEX', 'DWS_NEWCONV_INDEX', 'DWS_RELATION_INDEX', 'DWD_LOAD_FROM_ODS'], run_uuid=70e84da172f04a6bb52ce79be8c57dd2\n[2026-02-21 20:45:19] INFO | etl_billiards | DWS_ASSISTANT_DAILY: 抓取阶段开始,目录=C:\\NeoZQYY\\export\\ETL-Connectors\\feiqiu\\JSON\\DWS_ASSISTANT_DAILY\\DWS_ASSISTANT_DAILY-8866-20260221-204519\n[2026-02-21 20:45:19] INFO | etl_billiards | DWS_ASSISTANT_DAILY: 提取数据,日期范围 2025-11-01 ~ 2026-02-20\n[2026-02-21 20:45:19] INFO | etl_billiards | DWS_ASSISTANT_DAILY: 抓取完成,文件=None,记录数=0\n[2026-02-21 20:45:19] INFO | etl_billiards | DWS_ASSISTANT_DAILY: 本地清洗入库开始,源目录=C:\\NeoZQYY\\export\\ETL-Connectors\\feiqiu\\JSON\\DWS_ASSISTANT_DAILY\\DWS_ASSISTANT_DAILY-8866-20260221-204519\n[2026-02-21 20:45:19] INFO | etl_billiards | DWS_ASSISTANT_DAILY: 窗口拆分为 4 段(共 111.17 天)\n[2026-02-21 20:45:19] 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-21 20:45:19] INFO | etl_billiards | DWS_ASSISTANT_DAILY: 提取数据,日期范围 2025-10-31 ~ 2025-11-30\n[2026-02-21 20:45:20] INFO | etl_billiards | DWS_ASSISTANT_DAILY: 转换数据,服务记录 715 条,废除记录 12 条\n[2026-02-21 20:46:00] INFO | etl_billiards | DWS_ASSISTANT_DAILY: 完成(1/4),已处理 30/111.17 天\n[2026-02-21 20:46:00] 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-21 20:46:00] INFO | etl_billiards | DWS_ASSISTANT_DAILY: 提取数据,日期范围 2025-11-30 ~ 2025-12-30\n[2026-02-21 20:46:00] INFO | etl_billiards | DWS_ASSISTANT_DAILY: 转换数据,服务记录 959 条,废除记录 30 条\n[2026-02-21 20:46:52] INFO | etl_billiards | DWS_ASSISTANT_DAILY: 完成(2/4),已处理 60/111.17 天\n[2026-02-21 20:46:52] 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-21 20:46:52] INFO | etl_billiards | DWS_ASSISTANT_DAILY: 提取数据,日期范围 2025-12-30 ~ 2026-01-29\n[2026-02-21 20:46:53] INFO | etl_billiards | DWS_ASSISTANT_DAILY: 转换数据,服务记录 838 条,废除记录 46 条\n[2026-02-21 20:47:32] INFO | etl_billiards | DWS_ASSISTANT_DAILY: 完成(3/4),已处理 90/111.17 天\n[2026-02-21 20:47:32] 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-21 20:47:32] INFO | etl_billiards | DWS_ASSISTANT_DAILY: 提取数据,日期范围 2026-01-29 ~ 2026-02-20\n[2026-02-21 20:47:32] INFO | etl_billiards | DWS_ASSISTANT_DAILY: 转换数据,服务记录 216 条,废除记录 1 条\n[2026-02-21 20:47:42] INFO | etl_billiards | DWS_ASSISTANT_DAILY: 完成(4/4),已处理 111.17/111.17 天\n[2026-02-21 20:47:42] INFO | etl_billiards | DWS_ASSISTANT_DAILY: 完成,统计={'counts': {'fetched': 367, 'inserted': 367, 'updated': 0, 'skipped': 0, 'errors': 0}, 'extra': {'deleted': 367}}\n[2026-02-21 20:47:43] INFO | etl_billiards | DWS_ASSISTANT_MONTHLY: 抓取阶段开始,目录=C:\\NeoZQYY\\export\\ETL-Connectors\\feiqiu\\JSON\\DWS_ASSISTANT_MONTHLY\\DWS_ASSISTANT_MONTHLY-8867-20260221-204743\n[2026-02-21 20:47:43] INFO | etl_billiards | DWS_ASSISTANT_MONTHLY: 跳过历史月份 ['2025-11-01', '2025-12-01', '2026-01-01']\n[2026-02-21 20:47:43] INFO | etl_billiards | DWS_ASSISTANT_MONTHLY: 提取数据,月份范围 ['2026-02-01']\n[2026-02-21 20:47:43] INFO | etl_billiards | DWS_ASSISTANT_MONTHLY: 抓取完成,文件=None,记录数=0\n[2026-02-21 20:47:43] INFO | etl_billiards | DWS_ASSISTANT_MONTHLY: 本地清洗入库开始,源目录=C:\\NeoZQYY\\export\\ETL-Connectors\\feiqiu\\JSON\\DWS_ASSISTANT_MONTHLY\\DWS_ASSISTANT_MONTHLY-8867-20260221-204743\n[2026-02-21 20:47:43] INFO | etl_billiards | DWS_ASSISTANT_MONTHLY: 窗口拆分为 4 段(共 111.17 天)\n[2026-02-21 20:47:43] INFO | etl_billiards | DWS_ASSISTANT_MONTHLY: 开始执行(1/4),窗口[2025-10-31 22:00:00+08:00 ~ 2025-11-30 22:00:00+08:00]\n[2026-02-21 20:47:43] INFO | etl_billiards | DWS_ASSISTANT_MONTHLY: 跳过历史月份 ['2025-10-01']\n[2026-02-21 20:47:43] INFO | etl_billiards | DWS_ASSISTANT_MONTHLY: 提取数据,月份范围 ['2025-11-01']\n[2026-02-21 20:47:44] INFO | etl_billiards | DWS_ASSISTANT_MONTHLY: 转换数据,1 个月份,25 条聚合记录\n[2026-02-21 20:47:47] INFO | etl_billiards | DWS_ASSISTANT_MONTHLY: 加载完成,删除 25 行,插入 25 行\n[2026-02-21 20:47:47] INFO | etl_billiards | DWS_ASSISTANT_MONTHLY: 完成(1/4),已处理 30/111.17 天\n[2026-02-21 20:47:47] INFO | etl_billiards | DWS_ASSISTANT_MONTHLY: 开始执行(2/4),窗口[2025-11-30 22:00:00+08:00 ~ 2025-12-30 22:00:00+08:00]\n[2026-02-21 20:47:47] INFO | etl_billiards | DWS_ASSISTANT_MONTHLY: 跳过历史月份 ['2025-11-01']\n[2026-02-21 20:47:47] INFO | etl_billiards | DWS_ASSISTANT_MONTHLY: 提取数据,月份范围 ['2025-12-01']\n[2026-02-21 20:47:47] INFO | etl_billiards | DWS_ASSISTANT_MONTHLY: 转换数据,1 个月份,29 条聚合记录\n[2026-02-21 20:47:50] INFO | etl_billiards | DWS_ASSISTANT_MONTHLY: 加载完成,删除 29 行,插入 29 行\n[2026-02-21 20:47:50] INFO | etl_billiards | DWS_ASSISTANT_MONTHLY: 完成(2/4),已处理 60/111.17 天\n[2026-02-21 20:47:50] INFO | etl_billiards | DWS_ASSISTANT_MONTHLY: 开始执行(3/4),窗口[2025-12-30 22:00:00+08:00 ~ 2026-01-29 22:00:00+08:00]\n[2026-02-21 20:47:50] INFO | etl_billiards | DWS_ASSISTANT_MONTHLY: 跳过历史月份 ['2025-12-01']\n[2026-02-21 20:47:50] INFO | etl_billiards | DWS_ASSISTANT_MONTHLY: 提取数据,月份范围 ['2026-01-01']\n[2026-02-21 20:47:50] INFO | etl_billiards | DWS_ASSISTANT_MONTHLY: 转换数据,1 个月份,22 条聚合记录\n[2026-02-21 20:47:53] INFO | etl_billiards | DWS_ASSISTANT_MONTHLY: 加载完成,删除 22 行,插入 22 行\n[2026-02-21 20:47:53] INFO | etl_billiards | DWS_ASSISTANT_MONTHLY: 完成(3/4),已处理 90/111.17 天\n[2026-02-21 20:47:53] INFO | etl_billiards | DWS_ASSISTANT_MONTHLY: 开始执行(4/4),窗口[2026-01-29 22:00:00+08:00 ~ 2026-02-20 02:00:00+08:00]\n[2026-02-21 20:47:53] INFO | etl_billiards | DWS_ASSISTANT_MONTHLY: 跳过历史月份 ['2026-01-01']\n[2026-02-21 20:47:53] INFO | etl_billiards | DWS_ASSISTANT_MONTHLY: 提取数据,月份范围 ['2026-02-01']\n[2026-02-21 20:47:53] INFO | etl_billiards | DWS_ASSISTANT_MONTHLY: 转换数据,1 个月份,9 条聚合记录\n[2026-02-21 20:47:54] INFO | etl_billiards | DWS_ASSISTANT_MONTHLY: 加载完成,删除 9 行,插入 9 行\n[2026-02-21 20:47:54] INFO | etl_billiards | DWS_ASSISTANT_MONTHLY: 完成(4/4),已处理 111.17/111.17 天\n[2026-02-21 20:47:54] INFO | etl_billiards | DWS_ASSISTANT_MONTHLY: 完成,统计={'counts': {'fetched': 25, 'inserted': 25, 'updated': 0, 'skipped': 0, 'errors': 0}, 'extra': {'deleted': 25}}\n[2026-02-21 20:47:55] INFO | etl_billiards | DWS_ASSISTANT_CUSTOMER: 抓取阶段开始,目录=C:\\NeoZQYY\\export\\ETL-Connectors\\feiqiu\\JSON\\DWS_ASSISTANT_CUSTOMER\\DWS_ASSISTANT_CUSTOMER-8868-20260221-204755\n[2026-02-21 20:47:55] INFO | etl_billiards | DWS_ASSISTANT_CUSTOMER: 提取数据,统计日期 2026-02-20\n[2026-02-21 20:47:55] INFO | etl_billiards | DWS_ASSISTANT_CUSTOMER: 抓取完成,文件=None,记录数=0\n[2026-02-21 20:47:55] INFO | etl_billiards | DWS_ASSISTANT_CUSTOMER: 本地清洗入库开始,源目录=C:\\NeoZQYY\\export\\ETL-Connectors\\feiqiu\\JSON\\DWS_ASSISTANT_CUSTOMER\\DWS_ASSISTANT_CUSTOMER-8868-20260221-204755\n[2026-02-21 20:47:55] INFO | etl_billiards | DWS_ASSISTANT_CUSTOMER: 窗口拆分为 4 段(共 111.17 天)\n[2026-02-21 20:47:55] 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-21 20:47:55] INFO | etl_billiards | DWS_ASSISTANT_CUSTOMER: 提取数据,统计日期 2025-11-30\n[2026-02-21 20:47:55] INFO | etl_billiards | DWS_ASSISTANT_CUSTOMER: 转换数据,486 条服务关系记录\n[2026-02-21 20:48:24] INFO | etl_billiards | DWS_ASSISTANT_CUSTOMER: 完成(1/4),已处理 30/111.17 天\n[2026-02-21 20:48:24] 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-21 20:48:24] INFO | etl_billiards | DWS_ASSISTANT_CUSTOMER: 提取数据,统计日期 2025-12-30\n[2026-02-21 20:48:24] INFO | etl_billiards | DWS_ASSISTANT_CUSTOMER: 转换数据,410 条服务关系记录\n[2026-02-21 20:48:51] INFO | etl_billiards | DWS_ASSISTANT_CUSTOMER: 完成(2/4),已处理 60/111.17 天\n[2026-02-21 20:48:51] 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-21 20:48:51] INFO | etl_billiards | DWS_ASSISTANT_CUSTOMER: 提取数据,统计日期 2026-01-29\n[2026-02-21 20:48:51] INFO | etl_billiards | DWS_ASSISTANT_CUSTOMER: 转换数据,334 条服务关系记录\n[2026-02-21 20:49:11] INFO | etl_billiards | DWS_ASSISTANT_CUSTOMER: 完成(3/4),已处理 90/111.17 天\n[2026-02-21 20:49:11] 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-21 20:49:11] INFO | etl_billiards | DWS_ASSISTANT_CUSTOMER: 提取数据,统计日期 2026-02-20\n[2026-02-21 20:49:12] INFO | etl_billiards | DWS_ASSISTANT_CUSTOMER: 转换数据,289 条服务关系记录\n[2026-02-21 20:49:28] INFO | etl_billiards | DWS_ASSISTANT_CUSTOMER: 完成(4/4),已处理 111.17/111.17 天\n[2026-02-21 20:49:28] INFO | etl_billiards | DWS_ASSISTANT_CUSTOMER: 完成,统计={'counts': {'fetched': 486, 'inserted': 486, 'updated': 0, 'skipped': 0, 'errors': 0}, 'extra': {'deleted': 0}}\n[2026-02-21 20:49:29] INFO | etl_billiards | DWS_ASSISTANT_SALARY: 抓取阶段开始,目录=C:\\NeoZQYY\\export\\ETL-Connectors\\feiqiu\\JSON\\DWS_ASSISTANT_SALARY\\DWS_ASSISTANT_SALARY-8869-20260221-204929\n[2026-02-21 20:49:29] INFO | etl_billiards | DWS_ASSISTANT_SALARY: 非工资结算期,跳过\n[2026-02-21 20:49:29] INFO | etl_billiards | DWS_ASSISTANT_SALARY: 抓取完成,文件=None,记录数=0\n[2026-02-21 20:49:29] INFO | etl_billiards | DWS_ASSISTANT_SALARY: 本地清洗入库开始,源目录=C:\\NeoZQYY\\export\\ETL-Connectors\\feiqiu\\JSON\\DWS_ASSISTANT_SALARY\\DWS_ASSISTANT_SALARY-8869-20260221-204929\n[2026-02-21 20:49:29] INFO | etl_billiards | DWS_ASSISTANT_SALARY: 窗口拆分为 4 段(共 111.17 天)\n[2026-02-21 20:49:29] 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-21 20:49:29] INFO | etl_billiards | DWS_ASSISTANT_SALARY: 非工资结算期,跳过\n[2026-02-21 20:49:29] INFO | etl_billiards | DWS_ASSISTANT_SALARY: 无数据需要写入\n[2026-02-21 20:49:29] INFO | etl_billiards | DWS_ASSISTANT_SALARY: 完成(1/4),已处理 30/111.17 天\n[2026-02-21 20:49:29] 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-21 20:49:29] INFO | etl_billiards | DWS_ASSISTANT_SALARY: 非工资结算期,跳过\n[2026-02-21 20:49:29] INFO | etl_billiards | DWS_ASSISTANT_SALARY: 无数据需要写入\n[2026-02-21 20:49:29] INFO | etl_billiards | DWS_ASSISTANT_SALARY: 完成(2/4),已处理 60/111.17 天\n[2026-02-21 20:49:29] 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-21 20:49:29] INFO | etl_billiards | DWS_ASSISTANT_SALARY: 非工资结算期,跳过\n[2026-02-21 20:49:29] INFO | etl_billiards | DWS_ASSISTANT_SALARY: 无数据需要写入\n[2026-02-21 20:49:29] INFO | etl_billiards | DWS_ASSISTANT_SALARY: 完成(3/4),已处理 90/111.17 天\n[2026-02-21 20:49:29] 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-21 20:49:29] INFO | etl_billiards | DWS_ASSISTANT_SALARY: 非工资结算期,跳过\n[2026-02-21 20:49:29] INFO | etl_billiards | DWS_ASSISTANT_SALARY: 无数据需要写入\n[2026-02-21 20:49:29] INFO | etl_billiards | DWS_ASSISTANT_SALARY: 完成(4/4),已处理 111.17/111.17 天\n[2026-02-21 20:49:29] INFO | etl_billiards | DWS_ASSISTANT_SALARY: 完成,统计={'counts': {'fetched': 0, 'inserted': 0, 'updated': 0, 'skipped': 0, 'errors': 0}}\n[2026-02-21 20:49:30] INFO | etl_billiards | DWS_ASSISTANT_FINANCE: 抓取阶段开始,目录=C:\\NeoZQYY\\export\\ETL-Connectors\\feiqiu\\JSON\\DWS_ASSISTANT_FINANCE\\DWS_ASSISTANT_FINANCE-8870-20260221-204930\n[2026-02-21 20:49:30] INFO | etl_billiards | DWS_ASSISTANT_FINANCE: 抓取完成,文件=None,记录数=0\n[2026-02-21 20:49:30] INFO | etl_billiards | DWS_ASSISTANT_FINANCE: 本地清洗入库开始,源目录=C:\\NeoZQYY\\export\\ETL-Connectors\\feiqiu\\JSON\\DWS_ASSISTANT_FINANCE\\DWS_ASSISTANT_FINANCE-8870-20260221-204930\n[2026-02-21 20:49:30] INFO | etl_billiards | DWS_ASSISTANT_FINANCE: 窗口拆分为 4 段(共 111.17 天)\n[2026-02-21 20:49:30] INFO | etl_billiards | DWS_ASSISTANT_FINANCE: 开始执行(1/4),窗口[2025-10-31 22:00:00+08:00 ~ 2025-11-30 22:00:00+08:00]\n[2026-02-21 20:49:53] INFO | etl_billiards | DWS_ASSISTANT_FINANCE: 完成(1/4),已处理 30/111.17 天\n[2026-02-21 20:49:53] INFO | etl_billiards | DWS_ASSISTANT_FINANCE: 开始执行(2/4),窗口[2025-11-30 22:00:00+08:00 ~ 2025-12-30 22:00:00+08:00]\n[2026-02-21 20:50:20] INFO | etl_billiards | DWS_ASSISTANT_FINANCE: 完成(2/4),已处理 60/111.17 天\n[2026-02-21 20:50:20] INFO | etl_billiards | DWS_ASSISTANT_FINANCE: 开始执行(3/4),窗口[2025-12-30 22:00:00+08:00 ~ 2026-01-29 22:00:00+08:00]\n[2026-02-21 20:50:42] INFO | etl_billiards | DWS_ASSISTANT_FINANCE: 完成(3/4),已处理 90/111.17 天\n[2026-02-21 20:50:42] INFO | etl_billiards | DWS_ASSISTANT_FINANCE: 开始执行(4/4),窗口[2026-01-29 22:00:00+08:00 ~ 2026-02-20 02:00:00+08:00]\n[2026-02-21 20:50:47] INFO | etl_billiards | DWS_ASSISTANT_FINANCE: 完成(4/4),已处理 111.17/111.17 天\n[2026-02-21 20:50:47] INFO | etl_billiards | DWS_ASSISTANT_FINANCE: 完成,统计={'counts': {'fetched': 367, 'inserted': 367, 'updated': 0, 'skipped': 0, 'errors': 0}, 'extra': {'deleted': 367}}\n[2026-02-21 20:50:48] INFO | etl_billiards | ODS_SETTLEMENT_RECORDS: ODS fetch+load start, dir=C:\\NeoZQYY\\export\\ETL-Connectors\\feiqiu\\JSON\\ODS_SETTLEMENT_RECORDS\\ODS_SETTLEMENT_RECORDS-8871-20260221-205048\n[2026-02-21 20:50:48] INFO | etl_billiards | 开始执行ODS_SETTLEMENT_RECORDS (ODS)\n[2026-02-21 20:50:48] INFO | etl_billiards | ODS_SETTLEMENT_RECORDS: 窗口拆分为 4 段(共 111.17 天)\n[2026-02-21 20:50:48] 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-21 20:51:06] INFO | etl_billiards | ODS_SETTLEMENT_RECORDS: 完成(1/4),已处理 30/111.17 天\n[2026-02-21 20:51:06] 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-21 20:51:48] INFO | etl_billiards | ODS_SETTLEMENT_RECORDS: 完成(2/4),已处理 60/111.17 天\n[2026-02-21 20:51:48] 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-21 20:52:26] INFO | etl_billiards | ODS_SETTLEMENT_RECORDS: 完成(3/4),已处理 90/111.17 天\n[2026-02-21 20:52:26] 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-21 20:52:41] INFO | etl_billiards | ODS_SETTLEMENT_RECORDS: 完成(4/4),已处理 111.17/111.17 天\n[2026-02-21 20:52:41] INFO | etl_billiards | ODS_SETTLEMENT_RECORDS ODS 任务完成: {'fetched': 10366, 'inserted': 0, 'updated': 10366, 'skipped': 0, 'errors': 0, 'deleted': 0}\n[2026-02-21 20:52:41] INFO | etl_billiards | ODS_PAYMENT: ODS fetch+load start, dir=C:\\NeoZQYY\\export\\ETL-Connectors\\feiqiu\\JSON\\ODS_PAYMENT\\ODS_PAYMENT-8872-20260221-205241\n[2026-02-21 20:52:41] INFO | etl_billiards | 开始执行ODS_PAYMENT (ODS)\n[2026-02-21 20:52:41] INFO | etl_billiards | ODS_PAYMENT: 窗口拆分为 4 段(共 111.17 天)\n[2026-02-21 20:52:42] 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-21 20:53:38] INFO | etl_billiards | ODS_PAYMENT: 完成(1/4),已处理 30/111.17 天\n[2026-02-21 20:53:38] 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-21 20:54:37] INFO | etl_billiards | ODS_PAYMENT: 完成(2/4),已处理 60/111.17 天\n[2026-02-21 20:54:37] 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-21 20:55:37] INFO | etl_billiards | ODS_PAYMENT: 完成(3/4),已处理 90/111.17 天\n[2026-02-21 20:55:37] 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-21 20:56:42] INFO | etl_billiards | ODS_PAYMENT: 完成(4/4),已处理 111.17/111.17 天\n[2026-02-21 20:56:42] INFO | etl_billiards | ODS_PAYMENT ODS 任务完成: {'fetched': 42500, 'inserted': 0, 'updated': 42500, 'skipped': 0, 'errors': 0, 'deleted': 0}\n[2026-02-21 20:56:43] INFO | etl_billiards | ODS_REFUND: ODS fetch+load start, dir=C:\\NeoZQYY\\export\\ETL-Connectors\\feiqiu\\JSON\\ODS_REFUND\\ODS_REFUND-8873-20260221-205643\n[2026-02-21 20:56:43] INFO | etl_billiards | 开始执行ODS_REFUND (ODS)\n[2026-02-21 20:56:43] INFO | etl_billiards | ODS_REFUND: 窗口拆分为 4 段(共 111.17 天)\n[2026-02-21 20:56:43] 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-21 20:56:44] INFO | etl_billiards | ODS_REFUND: early-cutoff 保护生效,软删除窗口起点从 2025-10-31 22:00:00+08:00 收窄至 2025-11-21 22:00:16+08:00\n[2026-02-21 20:56:44] INFO | etl_billiards | ODS_REFUND: 完成(1/4),已处理 30/111.17 天\n[2026-02-21 20:56:44] 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-21 20:56:45] INFO | etl_billiards | ODS_REFUND: 完成(2/4),已处理 60/111.17 天\n[2026-02-21 20:56:45] 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-21 20:56:45] INFO | etl_billiards | ODS_REFUND: 完成(3/4),已处理 90/111.17 天\n[2026-02-21 20:56:45] 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-21 20:56:46] INFO | etl_billiards | ODS_REFUND: 完成(4/4),已处理 111.17/111.17 天\n[2026-02-21 20:56:46] INFO | etl_billiards | ODS_REFUND ODS 任务完成: {'fetched': 116, 'inserted': 0, 'updated': 116, 'skipped': 0, 'errors': 0, 'deleted': 0}\n[2026-02-21 20:56:46] INFO | etl_billiards | DWS_BUILD_ORDER_SUMMARY: 开始执行工具类任务\n[2026-02-21 20:56:46] INFO | etl_billiards | DWS_BUILD_ORDER_SUMMARY: 分段执行 共4段\n[2026-02-21 20:56:46] 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-21 20:56:47] 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-21 20:56:47] 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-21 20:56:47] 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-21 20:56:47] 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-21 20:56:47] 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-21 20:56:48] 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-21 20:56:48] 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-21 20:56:48] INFO | etl_billiards | DWS_BUILD_ORDER_SUMMARY: 完成, 统计={'fetched': 0, 'inserted': 13296, 'updated': 0, 'skipped': 0, 'errors': 0}\n[2026-02-21 20:56:48] INFO | etl_billiards | DWS_BUILD_ORDER_SUMMARY: 工具类任务执行成功\n[2026-02-21 20:56:48] INFO | etl_billiards | DWS_BUILD_ORDER_SUMMARY: 结果统计: {'fetched': 0, 'inserted': 13296, 'updated': 0, 'skipped': 0, 'errors': 0}\n[2026-02-21 20:56:49] INFO | etl_billiards | DWS_MEMBER_CONSUMPTION: 抓取阶段开始,目录=C:\\NeoZQYY\\export\\ETL-Connectors\\feiqiu\\JSON\\DWS_MEMBER_CONSUMPTION\\DWS_MEMBER_CONSUMPTION-8874-20260221-205649\n[2026-02-21 20:56:49] INFO | etl_billiards | DWS_MEMBER_CONSUMPTION: 提取数据,统计日期 2026-02-20\n[2026-02-21 20:56:50] INFO | etl_billiards | DWS_MEMBER_CONSUMPTION: 抓取完成,文件=None,记录数=0\n[2026-02-21 20:56:50] INFO | etl_billiards | DWS_MEMBER_CONSUMPTION: 本地清洗入库开始,源目录=C:\\NeoZQYY\\export\\ETL-Connectors\\feiqiu\\JSON\\DWS_MEMBER_CONSUMPTION\\DWS_MEMBER_CONSUMPTION-8874-20260221-205649\n[2026-02-21 20:56:50] INFO | etl_billiards | DWS_MEMBER_CONSUMPTION: 窗口拆分为 4 段(共 111.17 天)\n[2026-02-21 20:56:50] INFO | etl_billiards | DWS_MEMBER_CONSUMPTION: 开始执行(1/4),窗口[2025-10-31 22:00:00+08:00 ~ 2025-11-30 22:00:00+08:00]\n[2026-02-21 20:56:50] INFO | etl_billiards | DWS_MEMBER_CONSUMPTION: 提取数据,统计日期 2025-11-30\n[2026-02-21 20:56:50] INFO | etl_billiards | DWS_MEMBER_CONSUMPTION: 转换数据,198 条会员消费记录\n[2026-02-21 20:57:01] INFO | etl_billiards | DWS_MEMBER_CONSUMPTION: 完成(1/4),已处理 30/111.17 天\n[2026-02-21 20:57:01] INFO | etl_billiards | DWS_MEMBER_CONSUMPTION: 开始执行(2/4),窗口[2025-11-30 22:00:00+08:00 ~ 2025-12-30 22:00:00+08:00]\n[2026-02-21 20:57:01] INFO | etl_billiards | DWS_MEMBER_CONSUMPTION: 提取数据,统计日期 2025-12-30\n[2026-02-21 20:57:01] INFO | etl_billiards | DWS_MEMBER_CONSUMPTION: 转换数据,198 条会员消费记录\n[2026-02-21 20:57:13] INFO | etl_billiards | DWS_MEMBER_CONSUMPTION: 完成(2/4),已处理 60/111.17 天\n[2026-02-21 20:57:13] INFO | etl_billiards | DWS_MEMBER_CONSUMPTION: 开始执行(3/4),窗口[2025-12-30 22:00:00+08:00 ~ 2026-01-29 22:00:00+08:00]\n[2026-02-21 20:57:13] INFO | etl_billiards | DWS_MEMBER_CONSUMPTION: 提取数据,统计日期 2026-01-29\n[2026-02-21 20:57:13] INFO | etl_billiards | DWS_MEMBER_CONSUMPTION: 转换数据,198 条会员消费记录\n[2026-02-21 20:57:24] INFO | etl_billiards | DWS_MEMBER_CONSUMPTION: 完成(3/4),已处理 90/111.17 天\n[2026-02-21 20:57:24] INFO | etl_billiards | DWS_MEMBER_CONSUMPTION: 开始执行(4/4),窗口[2026-01-29 22:00:00+08:00 ~ 2026-02-20 02:00:00+08:00]\n[2026-02-21 20:57:24] INFO | etl_billiards | DWS_MEMBER_CONSUMPTION: 提取数据,统计日期 2026-02-20\n[2026-02-21 20:57:24] INFO | etl_billiards | DWS_MEMBER_CONSUMPTION: 转换数据,198 条会员消费记录\n[2026-02-21 20:57:36] INFO | etl_billiards | DWS_MEMBER_CONSUMPTION: 完成(4/4),已处理 111.17/111.17 天\n[2026-02-21 20:57:36] INFO | etl_billiards | DWS_MEMBER_CONSUMPTION: 完成,统计={'counts': {'fetched': 198, 'inserted': 198, 'updated': 0, 'skipped': 0, 'errors': 0}, 'extra': {'deleted': 0}}\n[2026-02-21 20:57:36] INFO | etl_billiards | DWS_MEMBER_VISIT: 抓取阶段开始,目录=C:\\NeoZQYY\\export\\ETL-Connectors\\feiqiu\\JSON\\DWS_MEMBER_VISIT\\DWS_MEMBER_VISIT-8875-20260221-205736\n[2026-02-21 20:57:36] INFO | etl_billiards | DWS_MEMBER_VISIT: 提取数据,日期范围 2025-11-01 ~ 2026-02-20\n[2026-02-21 20:57:37] INFO | etl_billiards | DWS_MEMBER_VISIT: 抓取完成,文件=None,记录数=0\n[2026-02-21 20:57:37] INFO | etl_billiards | DWS_MEMBER_VISIT: 本地清洗入库开始,源目录=C:\\NeoZQYY\\export\\ETL-Connectors\\feiqiu\\JSON\\DWS_MEMBER_VISIT\\DWS_MEMBER_VISIT-8875-20260221-205736\n[2026-02-21 20:57:37] INFO | etl_billiards | DWS_MEMBER_VISIT: 窗口拆分为 4 段(共 111.17 天)\n[2026-02-21 20:57:37] INFO | etl_billiards | DWS_MEMBER_VISIT: 开始执行(1/4),窗口[2025-10-31 22:00:00+08:00 ~ 2025-11-30 22:00:00+08:00]\n[2026-02-21 20:57:37] INFO | etl_billiards | DWS_MEMBER_VISIT: 提取数据,日期范围 2025-10-31 ~ 2025-11-30\n[2026-02-21 20:57:38] INFO | etl_billiards | DWS_MEMBER_VISIT: 转换数据,658 条结账单\n[2026-02-21 20:58:16] INFO | etl_billiards | DWS_MEMBER_VISIT: 完成(1/4),已处理 30/111.17 天\n[2026-02-21 20:58:16] INFO | etl_billiards | DWS_MEMBER_VISIT: 开始执行(2/4),窗口[2025-11-30 22:00:00+08:00 ~ 2025-12-30 22:00:00+08:00]\n[2026-02-21 20:58:16] INFO | etl_billiards | DWS_MEMBER_VISIT: 提取数据,日期范围 2025-11-30 ~ 2025-12-30\n[2026-02-21 20:58:16] INFO | etl_billiards | DWS_MEMBER_VISIT: 转换数据,745 条结账单\n[2026-02-21 20:59:00] INFO | etl_billiards | DWS_MEMBER_VISIT: 完成(2/4),已处理 60/111.17 天\n[2026-02-21 20:59:00] INFO | etl_billiards | DWS_MEMBER_VISIT: 开始执行(3/4),窗口[2025-12-30 22:00:00+08:00 ~ 2026-01-29 22:00:00+08:00]\n[2026-02-21 20:59:00] INFO | etl_billiards | DWS_MEMBER_VISIT: 提取数据,日期范围 2025-12-30 ~ 2026-01-29\n[2026-02-21 20:59:01] INFO | etl_billiards | DWS_MEMBER_VISIT: 转换数据,568 条结账单\n[2026-02-21 20:59:32] INFO | etl_billiards | DWS_MEMBER_VISIT: 完成(3/4),已处理 90/111.17 天\n[2026-02-21 20:59:32] INFO | etl_billiards | DWS_MEMBER_VISIT: 开始执行(4/4),窗口[2026-01-29 22:00:00+08:00 ~ 2026-02-20 02:00:00+08:00]\n[2026-02-21 20:59:32] INFO | etl_billiards | DWS_MEMBER_VISIT: 提取数据,日期范围 2026-01-29 ~ 2026-02-20\n[2026-02-21 20:59:32] INFO | etl_billiards | DWS_MEMBER_VISIT: 转换数据,206 条结账单\n[2026-02-21 20:59:44] INFO | etl_billiards | DWS_MEMBER_VISIT: 完成(4/4),已处理 111.17/111.17 天\n[2026-02-21 20:59:44] INFO | etl_billiards | DWS_MEMBER_VISIT: 完成,统计={'counts': {'fetched': 658, 'inserted': 658, 'updated': 0, 'skipped': 0, 'errors': 0}, 'extra': {'deleted': 658}}\n[2026-02-21 20:59:45] INFO | etl_billiards | ODS_GOODS_CATEGORY: ODS fetch+load start, dir=C:\\NeoZQYY\\export\\ETL-Connectors\\feiqiu\\JSON\\ODS_GOODS_CATEGORY\\ODS_GOODS_CATEGORY-8876-20260221-205945\n[2026-02-21 20:59:45] INFO | etl_billiards | 开始执行ODS_GOODS_CATEGORY (ODS)\n[2026-02-21 20:59:45] INFO | etl_billiards | ODS_GOODS_CATEGORY: 窗口拆分为 4 段(共 111.17 天)\n[2026-02-21 20:59:45] 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-21 20:59:46] INFO | etl_billiards | ODS_GOODS_CATEGORY: 完成(1/4),已处理 30/111.17 天\n[2026-02-21 20:59:46] 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-21 20:59:46] INFO | etl_billiards | ODS_GOODS_CATEGORY: 完成(2/4),已处理 60/111.17 天\n[2026-02-21 20:59:46] 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-21 20:59:46] INFO | etl_billiards | ODS_GOODS_CATEGORY: 完成(3/4),已处理 90/111.17 天\n[2026-02-21 20:59:46] 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-21 20:59:47] INFO | etl_billiards | ODS_GOODS_CATEGORY: 完成(4/4),已处理 111.17/111.17 天\n[2026-02-21 20:59:47] INFO | etl_billiards | ODS_GOODS_CATEGORY ODS 任务完成: {'fetched': 36, 'inserted': 0, 'updated': 36, 'skipped': 0, 'errors': 0, 'deleted': 0}\n[2026-02-21 20:59:47] INFO | etl_billiards | ODS_STORE_GOODS: ODS fetch+load start, dir=C:\\NeoZQYY\\export\\ETL-Connectors\\feiqiu\\JSON\\ODS_STORE_GOODS\\ODS_STORE_GOODS-8877-20260221-205947\n[2026-02-21 20:59:47] INFO | etl_billiards | 开始执行ODS_STORE_GOODS (ODS)\n[2026-02-21 20:59:47] INFO | etl_billiards | ODS_STORE_GOODS: 窗口拆分为 4 段(共 111.17 天)\n[2026-02-21 20:59:47] 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-21 20:59:49] INFO | etl_billiards | ODS_STORE_GOODS: 完成(1/4),已处理 30/111.17 天\n[2026-02-21 20:59:49] 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-21 20:59:50] INFO | etl_billiards | ODS_STORE_GOODS: 完成(2/4),已处理 60/111.17 天\n[2026-02-21 20:59:50] 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-21 20:59:52] INFO | etl_billiards | ODS_STORE_GOODS: 完成(3/4),已处理 90/111.17 天\n[2026-02-21 20:59:52] 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-21 20:59:52] INFO | etl_billiards | ODS_STORE_GOODS: 完成(4/4),已处理 111.17/111.17 天\n[2026-02-21 20:59:52] INFO | etl_billiards | ODS_STORE_GOODS ODS 任务完成: {'fetched': 692, 'inserted': 40, 'updated': 652, 'skipped': 0, 'errors': 0, 'deleted': 0}\n[2026-02-21 20:59:53] 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-8878-20260221-205953\n[2026-02-21 20:59:53] INFO | etl_billiards | 开始执行ODS_STORE_GOODS_SALES (ODS)\n[2026-02-21 20:59:53] INFO | etl_billiards | ODS_STORE_GOODS_SALES: 窗口拆分为 4 段(共 111.17 天)\n[2026-02-21 20:59:53] 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-21 20:59:53] INFO | etl_billiards | ODS_STORE_GOODS_SALES: 完成(1/4),已处理 30/111.17 天\n[2026-02-21 20:59:53] 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-21 20:59:53] INFO | etl_billiards | ODS_STORE_GOODS_SALES: 完成(2/4),已处理 60/111.17 天\n[2026-02-21 20:59:53] 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-21 20:59:54] INFO | etl_billiards | ODS_STORE_GOODS_SALES: 完成(3/4),已处理 90/111.17 天\n[2026-02-21 20:59:54] 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-21 20:59:54] INFO | etl_billiards | ODS_STORE_GOODS_SALES: 完成(4/4),已处理 111.17/111.17 天\n[2026-02-21 20:59:54] INFO | etl_billiards | ODS_STORE_GOODS_SALES ODS 任务完成: {'fetched': 0, 'inserted': 0, 'updated': 0, 'skipped': 0, 'errors': 0, 'deleted': 0}\n[2026-02-21 20:59:54] INFO | etl_billiards | ODS_TENANT_GOODS: ODS fetch+load start, dir=C:\\NeoZQYY\\export\\ETL-Connectors\\feiqiu\\JSON\\ODS_TENANT_GOODS\\ODS_TENANT_GOODS-8879-20260221-205954\n[2026-02-21 20:59:54] INFO | etl_billiards | 开始执行ODS_TENANT_GOODS (ODS)\n[2026-02-21 20:59:54] INFO | etl_billiards | ODS_TENANT_GOODS: 窗口拆分为 4 段(共 111.17 天)\n[2026-02-21 20:59:54] 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-21 20:59:55] INFO | etl_billiards | ODS_TENANT_GOODS: 完成(1/4),已处理 30/111.17 天\n[2026-02-21 20:59:55] 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-21 20:59:56] INFO | etl_billiards | ODS_TENANT_GOODS: 完成(2/4),已处理 60/111.17 天\n[2026-02-21 20:59:56] 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-21 20:59:57] INFO | etl_billiards | ODS_TENANT_GOODS: 完成(3/4),已处理 90/111.17 天\n[2026-02-21 20:59:57] 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-21 20:59:58] INFO | etl_billiards | ODS_TENANT_GOODS: 完成(4/4),已处理 111.17/111.17 天\n[2026-02-21 20:59:58] INFO | etl_billiards | ODS_TENANT_GOODS ODS 任务完成: {'fetched': 696, 'inserted': 0, 'updated': 696, 'skipped': 0, 'errors': 0, 'deleted': 0}\n[2026-02-21 20:59:59] INFO | etl_billiards | ODS_PLATFORM_COUPON: ODS fetch+load start, dir=C:\\NeoZQYY\\export\\ETL-Connectors\\feiqiu\\JSON\\ODS_PLATFORM_COUPON\\ODS_PLATFORM_COUPON-8880-20260221-205959\n[2026-02-21 20:59:59] INFO | etl_billiards | 开始执行ODS_PLATFORM_COUPON (ODS)\n[2026-02-21 20:59:59] INFO | etl_billiards | ODS_PLATFORM_COUPON: 窗口拆分为 4 段(共 111.17 天)\n[2026-02-21 20:59:59] 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-21 21:02:13] INFO | etl_billiards | ODS_PLATFORM_COUPON: 完成(1/4),已处理 30/111.17 天\n[2026-02-21 21:02:13] 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-21 21:04:19] INFO | etl_billiards | ODS_PLATFORM_COUPON: 完成(2/4),已处理 60/111.17 天\n[2026-02-21 21:04:19] 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-21 21:06:33] INFO | etl_billiards | ODS_PLATFORM_COUPON: 完成(3/4),已处理 90/111.17 天\n[2026-02-21 21:06:33] 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-21 21:09:06] INFO | etl_billiards | ODS_PLATFORM_COUPON: 完成(4/4),已处理 111.17/111.17 天\n[2026-02-21 21:09:06] INFO | etl_billiards | ODS_PLATFORM_COUPON ODS 任务完成: {'fetched': 73244, 'inserted': 0, 'updated': 73244, 'skipped': 0, 'errors': 0, 'deleted': 0}\n[2026-02-21 21:09:06] INFO | etl_billiards | ODS_GROUP_PACKAGE: ODS fetch+load start, dir=C:\\NeoZQYY\\export\\ETL-Connectors\\feiqiu\\JSON\\ODS_GROUP_PACKAGE\\ODS_GROUP_PACKAGE-8881-20260221-210906\n[2026-02-21 21:09:06] INFO | etl_billiards | 开始执行ODS_GROUP_PACKAGE (ODS)\n[2026-02-21 21:09:06] INFO | etl_billiards | ODS_GROUP_PACKAGE: 窗口拆分为 4 段(共 111.17 天)\n[2026-02-21 21:09:06] 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-21 21:09:07] INFO | etl_billiards | ODS_GROUP_PACKAGE: 完成(1/4),已处理 30/111.17 天\n[2026-02-21 21:09:07] 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-21 21:09:08] INFO | etl_billiards | ODS_GROUP_PACKAGE: 完成(2/4),已处理 60/111.17 天\n[2026-02-21 21:09:08] 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-21 21:09:09] INFO | etl_billiards | ODS_GROUP_PACKAGE: 完成(3/4),已处理 90/111.17 天\n[2026-02-21 21:09:09] 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-21 21:09:10] INFO | etl_billiards | ODS_GROUP_PACKAGE: 完成(4/4),已处理 111.17/111.17 天\n[2026-02-21 21:09:10] INFO | etl_billiards | ODS_GROUP_PACKAGE ODS 任务完成: {'fetched': 72, 'inserted': 0, 'updated': 72, 'skipped': 0, 'errors': 0, 'deleted': 0}\n[2026-02-21 21:09:10] 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-8882-20260221-210910\n[2026-02-21 21:09:10] INFO | etl_billiards | 开始执行ODS_GROUP_BUY_REDEMPTION (ODS)\n[2026-02-21 21:09:10] INFO | etl_billiards | ODS_GROUP_BUY_REDEMPTION: 窗口拆分为 4 段(共 111.17 天)\n[2026-02-21 21:09:11] 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-21 21:10:18] INFO | etl_billiards | ODS_GROUP_BUY_REDEMPTION: early-cutoff 保护生效,软删除窗口起点从 2025-10-31 22:00:00+08:00 收窄至 2025-11-21 11:14:11+08:00\n[2026-02-21 21:10:18] INFO | etl_billiards | ODS_GROUP_BUY_REDEMPTION: 完成(1/4),已处理 30/111.17 天\n[2026-02-21 21:10:18] 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-21 21:11:17] INFO | etl_billiards | ODS_GROUP_BUY_REDEMPTION: 完成(2/4),已处理 60/111.17 天\n[2026-02-21 21:11:17] 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-21 21:12:24] INFO | etl_billiards | ODS_GROUP_BUY_REDEMPTION: 完成(3/4),已处理 90/111.17 天\n[2026-02-21 21:12:24] 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-21 21:13:30] INFO | etl_billiards | ODS_GROUP_BUY_REDEMPTION: 完成(4/4),已处理 111.17/111.17 天\n[2026-02-21 21:13:30] INFO | etl_billiards | ODS_GROUP_BUY_REDEMPTION ODS 任务完成: {'fetched': 29068, 'inserted': 0, 'updated': 29068, 'skipped': 0, 'errors': 0, 'deleted': 0}\n[2026-02-21 21:13:31] INFO | etl_billiards | ODS_INVENTORY_STOCK: ODS fetch+load start, dir=C:\\NeoZQYY\\export\\ETL-Connectors\\feiqiu\\JSON\\ODS_INVENTORY_STOCK\\ODS_INVENTORY_STOCK-8883-20260221-211331\n[2026-02-21 21:13:31] INFO | etl_billiards | 开始执行ODS_INVENTORY_STOCK (ODS)\n[2026-02-21 21:13:31] INFO | etl_billiards | ODS_INVENTORY_STOCK: 窗口拆分为 4 段(共 111.17 天)\n[2026-02-21 21:13:31] 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-21 21:13:35] INFO | etl_billiards | ODS_INVENTORY_STOCK: 完成(1/4),已处理 30/111.17 天\n[2026-02-21 21:13:35] 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-21 21:13:37] INFO | etl_billiards | ODS_INVENTORY_STOCK: 完成(2/4),已处理 60/111.17 天\n[2026-02-21 21:13:37] 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-21 21:13:38] INFO | etl_billiards | ODS_INVENTORY_STOCK: 完成(3/4),已处理 90/111.17 天\n[2026-02-21 21:13:38] 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-21 21:13:39] INFO | etl_billiards | ODS_INVENTORY_STOCK: 完成(4/4),已处理 111.17/111.17 天\n[2026-02-21 21:13:39] INFO | etl_billiards | ODS_INVENTORY_STOCK ODS 任务完成: {'fetched': 865, 'inserted': 326, 'updated': 539, 'skipped': 0, 'errors': 0, 'deleted': 0}\n[2026-02-21 21:13:40] INFO | etl_billiards | ODS_INVENTORY_CHANGE: ODS fetch+load start, dir=C:\\NeoZQYY\\export\\ETL-Connectors\\feiqiu\\JSON\\ODS_INVENTORY_CHANGE\\ODS_INVENTORY_CHANGE-8884-20260221-211340\n[2026-02-21 21:13:40] INFO | etl_billiards | 开始执行ODS_INVENTORY_CHANGE (ODS)\n[2026-02-21 21:13:40] INFO | etl_billiards | ODS_INVENTORY_CHANGE: 窗口拆分为 4 段(共 111.17 天)\n[2026-02-21 21:13:40] 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-21 21:13:50] INFO | etl_billiards | ODS_INVENTORY_CHANGE: 完成(1/4),已处理 30/111.17 天\n[2026-02-21 21:13:50] 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-21 21:14:11] INFO | etl_billiards | ODS_INVENTORY_CHANGE: 完成(2/4),已处理 60/111.17 天\n[2026-02-21 21:14:11] 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-21 21:14:28] INFO | etl_billiards | ODS_INVENTORY_CHANGE: 完成(3/4),已处理 90/111.17 天\n[2026-02-21 21:14:28] 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-21 21:14:36] INFO | etl_billiards | ODS_INVENTORY_CHANGE: 完成(4/4),已处理 111.17/111.17 天\n[2026-02-21 21:14:36] INFO | etl_billiards | ODS_INVENTORY_CHANGE ODS 任务完成: {'fetched': 14306, 'inserted': 0, 'updated': 14306, 'skipped': 0, 'errors': 0, 'deleted': 0}\n[2026-02-21 21:14:36] INFO | etl_billiards | DWS_GOODS_STOCK_DAILY: 抓取阶段开始,目录=C:\\NeoZQYY\\export\\ETL-Connectors\\feiqiu\\JSON\\DWS_GOODS_STOCK_DAILY\\DWS_GOODS_STOCK_DAILY-8885-20260221-211436\n[2026-02-21 21:14:36] INFO | etl_billiards | DWS_GOODS_STOCK_DAILY: 提取数据,门店=2790685415443269,日期范围 2025-11-01 ~ 2026-02-20\n[2026-02-21 21:14:37] INFO | etl_billiards | DWS_GOODS_STOCK_DAILY: 提取到 0 条 DWD 记录\n[2026-02-21 21:14:37] INFO | etl_billiards | DWS_GOODS_STOCK_DAILY: 抓取完成,文件=None,记录数=0\n[2026-02-21 21:14:37] INFO | etl_billiards | DWS_GOODS_STOCK_DAILY: 本地清洗入库开始,源目录=C:\\NeoZQYY\\export\\ETL-Connectors\\feiqiu\\JSON\\DWS_GOODS_STOCK_DAILY\\DWS_GOODS_STOCK_DAILY-8885-20260221-211436\n[2026-02-21 21:14:37] INFO | etl_billiards | DWS_GOODS_STOCK_DAILY: 窗口拆分为 4 段(共 111.17 天)\n[2026-02-21 21:14:37] 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-21 21:14:37] INFO | etl_billiards | DWS_GOODS_STOCK_DAILY: 提取数据,门店=2790685415443269,日期范围 2025-10-31 ~ 2025-11-30\n[2026-02-21 21:14:37] INFO | etl_billiards | DWS_GOODS_STOCK_DAILY: 提取到 0 条 DWD 记录\n[2026-02-21 21:14:37] INFO | etl_billiards | DWS_GOODS_STOCK_DAILY: 无数据需要汇总\n[2026-02-21 21:14:37] INFO | etl_billiards | DWS_GOODS_STOCK_DAILY: 完成(1/4),已处理 30/111.17 天\n[2026-02-21 21:14:37] 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-21 21:14:37] INFO | etl_billiards | DWS_GOODS_STOCK_DAILY: 提取数据,门店=2790685415443269,日期范围 2025-11-30 ~ 2025-12-30\n[2026-02-21 21:14:37] INFO | etl_billiards | DWS_GOODS_STOCK_DAILY: 提取到 0 条 DWD 记录\n[2026-02-21 21:14:37] INFO | etl_billiards | DWS_GOODS_STOCK_DAILY: 无数据需要汇总\n[2026-02-21 21:14:37] INFO | etl_billiards | DWS_GOODS_STOCK_DAILY: 完成(2/4),已处理 60/111.17 天\n[2026-02-21 21:14:37] 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-21 21:14:37] INFO | etl_billiards | DWS_GOODS_STOCK_DAILY: 提取数据,门店=2790685415443269,日期范围 2025-12-30 ~ 2026-01-29\n[2026-02-21 21:14:37] INFO | etl_billiards | DWS_GOODS_STOCK_DAILY: 提取到 0 条 DWD 记录\n[2026-02-21 21:14:37] INFO | etl_billiards | DWS_GOODS_STOCK_DAILY: 无数据需要汇总\n[2026-02-21 21:14:37] INFO | etl_billiards | DWS_GOODS_STOCK_DAILY: 完成(3/4),已处理 90/111.17 天\n[2026-02-21 21:14:37] 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-21 21:14:37] INFO | etl_billiards | DWS_GOODS_STOCK_DAILY: 提取数据,门店=2790685415443269,日期范围 2026-01-29 ~ 2026-02-20\n[2026-02-21 21:14:37] INFO | etl_billiards | DWS_GOODS_STOCK_DAILY: 提取到 0 条 DWD 记录\n[2026-02-21 21:14:37] INFO | etl_billiards | DWS_GOODS_STOCK_DAILY: 无数据需要汇总\n[2026-02-21 21:14:37] INFO | etl_billiards | DWS_GOODS_STOCK_DAILY: 完成(4/4),已处理 111.17/111.17 天\n[2026-02-21 21:14:37] INFO | etl_billiards | DWS_GOODS_STOCK_DAILY: 完成,统计={'counts': {'fetched': 0, 'inserted': 0, 'updated': 0, 'skipped': 0, 'errors': 0}}\n[2026-02-21 21:14:38] INFO | etl_billiards | DWS_GOODS_STOCK_WEEKLY: 抓取阶段开始,目录=C:\\NeoZQYY\\export\\ETL-Connectors\\feiqiu\\JSON\\DWS_GOODS_STOCK_WEEKLY\\DWS_GOODS_STOCK_WEEKLY-8886-20260221-211438\n[2026-02-21 21:14:38] INFO | etl_billiards | DWS_GOODS_STOCK_WEEKLY: 提取数据,门店=2790685415443269,日期范围 2025-11-01 ~ 2026-02-20\n[2026-02-21 21:14:38] INFO | etl_billiards | DWS_GOODS_STOCK_WEEKLY: 提取到 0 条 DWD 记录\n[2026-02-21 21:14:38] INFO | etl_billiards | DWS_GOODS_STOCK_WEEKLY: 抓取完成,文件=None,记录数=0\n[2026-02-21 21:14:38] INFO | etl_billiards | DWS_GOODS_STOCK_WEEKLY: 本地清洗入库开始,源目录=C:\\NeoZQYY\\export\\ETL-Connectors\\feiqiu\\JSON\\DWS_GOODS_STOCK_WEEKLY\\DWS_GOODS_STOCK_WEEKLY-8886-20260221-211438\n[2026-02-21 21:14:38] INFO | etl_billiards | DWS_GOODS_STOCK_WEEKLY: 窗口拆分为 4 段(共 111.17 天)\n[2026-02-21 21:14:38] 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-21 21:14:38] INFO | etl_billiards | DWS_GOODS_STOCK_WEEKLY: 提取数据,门店=2790685415443269,日期范围 2025-10-31 ~ 2025-11-30\n[2026-02-21 21:14:38] INFO | etl_billiards | DWS_GOODS_STOCK_WEEKLY: 提取到 0 条 DWD 记录\n[2026-02-21 21:14:38] INFO | etl_billiards | DWS_GOODS_STOCK_WEEKLY: 无数据需要汇总\n[2026-02-21 21:14:38] INFO | etl_billiards | DWS_GOODS_STOCK_WEEKLY: 完成(1/4),已处理 30/111.17 天\n[2026-02-21 21:14:38] 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-21 21:14:38] INFO | etl_billiards | DWS_GOODS_STOCK_WEEKLY: 提取数据,门店=2790685415443269,日期范围 2025-11-30 ~ 2025-12-30\n[2026-02-21 21:14:38] INFO | etl_billiards | DWS_GOODS_STOCK_WEEKLY: 提取到 0 条 DWD 记录\n[2026-02-21 21:14:38] INFO | etl_billiards | DWS_GOODS_STOCK_WEEKLY: 无数据需要汇总\n[2026-02-21 21:14:38] INFO | etl_billiards | DWS_GOODS_STOCK_WEEKLY: 完成(2/4),已处理 60/111.17 天\n[2026-02-21 21:14:38] 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-21 21:14:38] INFO | etl_billiards | DWS_GOODS_STOCK_WEEKLY: 提取数据,门店=2790685415443269,日期范围 2025-12-30 ~ 2026-01-29\n[2026-02-21 21:14:39] INFO | etl_billiards | DWS_GOODS_STOCK_WEEKLY: 提取到 0 条 DWD 记录\n[2026-02-21 21:14:39] INFO | etl_billiards | DWS_GOODS_STOCK_WEEKLY: 无数据需要汇总\n[2026-02-21 21:14:39] INFO | etl_billiards | DWS_GOODS_STOCK_WEEKLY: 完成(3/4),已处理 90/111.17 天\n[2026-02-21 21:14:39] 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-21 21:14:39] INFO | etl_billiards | DWS_GOODS_STOCK_WEEKLY: 提取数据,门店=2790685415443269,日期范围 2026-01-29 ~ 2026-02-20\n[2026-02-21 21:14:39] INFO | etl_billiards | DWS_GOODS_STOCK_WEEKLY: 提取到 0 条 DWD 记录\n[2026-02-21 21:14:39] INFO | etl_billiards | DWS_GOODS_STOCK_WEEKLY: 无数据需要汇总\n[2026-02-21 21:14:39] INFO | etl_billiards | DWS_GOODS_STOCK_WEEKLY: 完成(4/4),已处理 111.17/111.17 天\n[2026-02-21 21:14:39] INFO | etl_billiards | DWS_GOODS_STOCK_WEEKLY: 完成,统计={'counts': {'fetched': 0, 'inserted': 0, 'updated': 0, 'skipped': 0, 'errors': 0}}\n[2026-02-21 21:14:40] INFO | etl_billiards | DWS_GOODS_STOCK_MONTHLY: 抓取阶段开始,目录=C:\\NeoZQYY\\export\\ETL-Connectors\\feiqiu\\JSON\\DWS_GOODS_STOCK_MONTHLY\\DWS_GOODS_STOCK_MONTHLY-8887-20260221-211440\n[2026-02-21 21:14:40] INFO | etl_billiards | DWS_GOODS_STOCK_MONTHLY: 提取数据,门店=2790685415443269,日期范围 2025-11-01 ~ 2026-02-20\n[2026-02-21 21:14:40] INFO | etl_billiards | DWS_GOODS_STOCK_MONTHLY: 提取到 0 条 DWD 记录\n[2026-02-21 21:14:40] INFO | etl_billiards | DWS_GOODS_STOCK_MONTHLY: 抓取完成,文件=None,记录数=0\n[2026-02-21 21:14:40] INFO | etl_billiards | DWS_GOODS_STOCK_MONTHLY: 本地清洗入库开始,源目录=C:\\NeoZQYY\\export\\ETL-Connectors\\feiqiu\\JSON\\DWS_GOODS_STOCK_MONTHLY\\DWS_GOODS_STOCK_MONTHLY-8887-20260221-211440\n[2026-02-21 21:14:40] INFO | etl_billiards | DWS_GOODS_STOCK_MONTHLY: 窗口拆分为 4 段(共 111.17 天)\n[2026-02-21 21:14:40] 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-21 21:14:40] INFO | etl_billiards | DWS_GOODS_STOCK_MONTHLY: 提取数据,门店=2790685415443269,日期范围 2025-10-31 ~ 2025-11-30\n[2026-02-21 21:14:40] INFO | etl_billiards | DWS_GOODS_STOCK_MONTHLY: 提取到 0 条 DWD 记录\n[2026-02-21 21:14:40] INFO | etl_billiards | DWS_GOODS_STOCK_MONTHLY: 无数据需要汇总\n[2026-02-21 21:14:40] INFO | etl_billiards | DWS_GOODS_STOCK_MONTHLY: 完成(1/4),已处理 30/111.17 天\n[2026-02-21 21:14:40] 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-21 21:14:40] INFO | etl_billiards | DWS_GOODS_STOCK_MONTHLY: 提取数据,门店=2790685415443269,日期范围 2025-11-30 ~ 2025-12-30\n[2026-02-21 21:14:40] INFO | etl_billiards | DWS_GOODS_STOCK_MONTHLY: 提取到 0 条 DWD 记录\n[2026-02-21 21:14:40] INFO | etl_billiards | DWS_GOODS_STOCK_MONTHLY: 无数据需要汇总\n[2026-02-21 21:14:40] INFO | etl_billiards | DWS_GOODS_STOCK_MONTHLY: 完成(2/4),已处理 60/111.17 天\n[2026-02-21 21:14:40] 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-21 21:14:40] INFO | etl_billiards | DWS_GOODS_STOCK_MONTHLY: 提取数据,门店=2790685415443269,日期范围 2025-12-30 ~ 2026-01-29\n[2026-02-21 21:14:40] INFO | etl_billiards | DWS_GOODS_STOCK_MONTHLY: 提取到 0 条 DWD 记录\n[2026-02-21 21:14:40] INFO | etl_billiards | DWS_GOODS_STOCK_MONTHLY: 无数据需要汇总\n[2026-02-21 21:14:40] INFO | etl_billiards | DWS_GOODS_STOCK_MONTHLY: 完成(3/4),已处理 90/111.17 天\n[2026-02-21 21:14:40] 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-21 21:14:40] INFO | etl_billiards | DWS_GOODS_STOCK_MONTHLY: 提取数据,门店=2790685415443269,日期范围 2026-01-29 ~ 2026-02-20\n[2026-02-21 21:14:40] INFO | etl_billiards | DWS_GOODS_STOCK_MONTHLY: 提取到 0 条 DWD 记录\n[2026-02-21 21:14:40] INFO | etl_billiards | DWS_GOODS_STOCK_MONTHLY: 无数据需要汇总\n[2026-02-21 21:14:40] INFO | etl_billiards | DWS_GOODS_STOCK_MONTHLY: 完成(4/4),已处理 111.17/111.17 天\n[2026-02-21 21:14:40] INFO | etl_billiards | DWS_GOODS_STOCK_MONTHLY: 完成,统计={'counts': {'fetched': 0, 'inserted': 0, 'updated': 0, 'skipped': 0, 'errors': 0}}\n[2026-02-21 21:14:41] INFO | etl_billiards | DWS_FINANCE_DAILY: 抓取阶段开始,目录=C:\\NeoZQYY\\export\\ETL-Connectors\\feiqiu\\JSON\\DWS_FINANCE_DAILY\\DWS_FINANCE_DAILY-8888-20260221-211441\n[2026-02-21 21:14:41] INFO | etl_billiards | DWS_FINANCE_DAILY: 提取数据,日期范围 2025-11-01 ~ 2026-02-20\n[2026-02-21 21:14:42] ERROR | etl_billiards | 任务 DWS_FINANCE_DAILY 失败: 错误: 当前事务被终止, 事务块结束之前的查询被忽略\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\\finance_daily_task.py\", line 92, in extract\n recharge_summary = self._extract_recharge_summary(site_id, start_date, end_date)\n File \"C:\\NeoZQYY\\apps\\etl\\connectors\\feiqiu\\tasks\\dws\\finance_base_task.py\", line 107, in _extract_recharge_summary\n rows = self.db.query(sql, (site_id, start_date, end_date))\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: 错误: 字段 \"pay_money\" 不存在\nLINE 5: SUM(pay_money + gift_money) AS recharge_tota...\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-21 21:14:42] 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-21 21:14:42] 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-21 21:14:42] 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-21 21:14:42] INFO | etl_billiards | DWS_WINBACK_INDEX: 开始执行工具类任务\n[2026-02-21 21:14:42] INFO | etl_billiards | 开始计算 DWS_WINBACK_INDEX\n[2026-02-21 21:14:42] 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-21 21:14:42] 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-21 21:14:42] INFO | etl_billiards | DWS_NEWCONV_INDEX: 开始执行工具类任务\n[2026-02-21 21:14:42] INFO | etl_billiards | 开始计算 DWS_NEWCONV_INDEX\n[2026-02-21 21:14:42] 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-21 21:14:42] 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-21 21:14:42] INFO | etl_billiards | DWS_RELATION_INDEX: 开始执行工具类任务\n[2026-02-21 21:14:42] INFO | etl_billiards | 开始计算关系指数(RS/OS/MS/ML)\n[2026-02-21 21:14:42] 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-21 21:14:42] 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-21 21:14:42] ERROR | etl_billiards | 任务 DWD_LOAD_FROM_ODS 失败: 错误: 当前事务被终止, 事务块结束之前的查询被忽略\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-21 21:14:42] INFO | etl_billiards | 所有任务执行完成\n[2026-02-21 21:14:45] INFO | etl_billiards | 一致性检查报告已生成: C:\\NeoZQYY\\export\\ETL-Connectors\\feiqiu\\REPORTS\\consistency_report_20260221_211445.md\n[2026-02-21 21:14:45] INFO | etl_billiards | 计时报告已生成\n[2026-02-21 21:14:45] INFO | etl_billiards | \n╔══════════════════════════════════════════════════════════════╗\n║ 任务执行总结 ║\n╠══════════════════════════════════════════════════════════════╣\n║ 任务代码: FLOW_API_FULL ║\n║ 执行状态: 成功 ║\n║ 执行时间: 2026-02-21 20:45:18 ~ 21:14:45 (29分26秒) ║\n╠══════════════════════════════════════════════════════════════╣\n║ 数据统计 ║\n║ - 获取记录: 171,961 ║\n║ - 新增记录: 13,662 ║\n║ - 更新记录: 171,595 ║\n║ - 跳过记录: 0 ║\n║ - 错误记录: 0 ║\n╚══════════════════════════════════════════════════════════════╝\n[2026-02-21 21:14:45] INFO | etl_billiards | \n╔══════════════════════════════════════════════════════════════╗\n║ 任务执行总结 ║\n╠══════════════════════════════════════════════════════════════╣\n║ 任务代码: FLOW_API_FULL ║\n║ 执行状态: 成功 ║\n║ 执行时间: 2026-02-21 20:45:18 ~ 21:14:45 (29分26秒) ║\n╠══════════════════════════════════════════════════════════════╣\n║ 数据统计 ║\n║ - 获取记录: 171,961 ║\n║ - 新增记录: 13,662 ║\n║ - 更新记录: 171,595 ║\n║ - 跳过记录: 0 ║\n║ - 错误记录: 0 ║\n╚══════════════════════════════════════════════════════════════╝\n[2026-02-21 21:14:45] INFO | etl_billiards | Flow 执行完成: SUCCESS\n[2026-02-21 21:14:45] INFO | etl_billiards | ETL运行完成"
|
||
} |