微信小程序页面迁移校验之前 P5任务处理之前

This commit is contained in:
Neo
2026-03-09 01:19:21 +08:00
parent 263bf96035
commit 6e20987d2f
1112 changed files with 153824 additions and 219694 deletions

View File

@@ -0,0 +1,62 @@
"""诊断NULL level_name 助教的 SCD2 最早记录 vs daily 最早日期"""
import os, sys
from pathlib import Path
from dotenv import load_dotenv
load_dotenv(Path(__file__).resolve().parents[2] / ".env")
import psycopg2
import psycopg2.extras
dsn = os.environ.get("PG_DSN")
if not dsn:
raise RuntimeError("PG_DSN 未设置")
conn = psycopg2.connect(dsn)
cur = conn.cursor(cursor_factory=psycopg2.extras.RealDictCursor)
# 对比每个 NULL assistant_id 的 SCD2 最早时间 vs daily 最早日期
cur.execute("""
WITH null_aids AS (
SELECT DISTINCT assistant_id
FROM dws.dws_assistant_daily_detail
WHERE assistant_level_name IS NULL
),
scd2_earliest AS (
SELECT da.assistant_id, MIN(da.scd2_start_time) AS earliest_scd2
FROM dwd.dim_assistant da
JOIN null_aids n ON da.assistant_id = n.assistant_id
GROUP BY da.assistant_id
),
daily_earliest AS (
SELECT d.assistant_id, MIN(d.stat_date) AS earliest_daily
FROM dws.dws_assistant_daily_detail d
JOIN null_aids n ON d.assistant_id = n.assistant_id
WHERE d.assistant_level_name IS NULL
GROUP BY d.assistant_id
)
SELECT
de.assistant_id,
de.earliest_daily,
se.earliest_scd2,
se.earliest_scd2::date AS scd2_date,
CASE WHEN de.earliest_daily < se.earliest_scd2::date THEN 'DAILY_BEFORE_SCD2'
ELSE 'SCD2_COVERS' END AS status
FROM daily_earliest de
LEFT JOIN scd2_earliest se ON de.assistant_id = se.assistant_id
ORDER BY de.earliest_daily
""")
rows = cur.fetchall()
print(f"=== {len(rows)} 个 NULL level_name 助教 ===")
before_count = 0
for r in rows:
status = r['status']
if status == 'DAILY_BEFORE_SCD2':
before_count += 1
print(f" aid={r['assistant_id']}, daily_earliest={r['earliest_daily']}, "
f"scd2_earliest={r['scd2_date']}, status={status}")
print(f"\n总计: {before_count}/{len(rows)} 个助教的 daily 数据早于 SCD2 首条记录")
cur.close()
conn.close()