Files
Neo-ZQYY/scripts/ops/analyze_v8_detail.py

62 lines
1.9 KiB
Python
Raw Permalink Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
# -*- coding: utf-8 -*-
"""详细分析 v8 日志,提取所有任务状态。"""
import json
import re
from pathlib import Path
from dotenv import load_dotenv
load_dotenv(Path(__file__).resolve().parents[2] / ".env")
from _env_paths import get_output_path
log_dir = get_output_path("SYSTEM_LOG_ROOT")
raw = json.loads((log_dir / "2026-02-21__etl_run_raw_v8.json").read_text("utf-8"))
error_log = raw.get("error_log", "")
output_log = raw.get("output_log", "")
full = output_log + "\n" + error_log
# 更宽泛的匹配
success_pat = re.compile(r"任务\s+(\S+)\s+执行成功")
fail_pat = re.compile(r"任务\s+(\S+)\s+失败")
complete_pat = re.compile(r"(\S+)\s*(?:完成|成功|✅)")
# 查找所有提到的任务
task_pat = re.compile(r"(ODS_FETCH|DWD_LOAD_FROM_ODS|DWS_\w+)")
all_tasks = set(task_pat.findall(full))
print("=== 日志中出现的所有任务 ===")
for t in sorted(all_tasks):
print(f" {t}")
print(f"\n=== 成功匹配 ===")
for m in success_pat.finditer(full):
print(f"{m.group(1)}")
print(f"\n=== 失败匹配 ===")
for m in fail_pat.finditer(full):
print(f"{m.group(1)}")
# 查找 DWD 装载详情
dwd_pat = re.compile(r"DWD 装载(成功|失败)(\S+?),用时 ([\d.]+)s(?:err=(.*))?")
print(f"\n=== DWD 装载详情 ===")
dwd_success = 0
dwd_fail = 0
for m in dwd_pat.finditer(full):
status, table, dur, err = m.groups()
icon = "" if status == "成功" else ""
if status == "成功":
dwd_success += 1
else:
dwd_fail += 1
line = f" {icon} {table} ({dur}s)"
if err:
line += f"{err[:80]}"
print(line)
print(f" 合计: {dwd_success} 成功, {dwd_fail} 失败")
# 查找 year -1 相关上下文
print(f"\n=== 'year -1' 相关行 ===")
for line in full.split("\n"):
if "year" in line.lower() and ("-1" in line or "out of range" in line):
print(f" {line.strip()[:200]}")