From d5582fd6f2cbebb090652caf1c281ab3fdabe45b Mon Sep 17 00:00:00 2001 From: claude_dev Date: Thu, 23 Jul 2026 23:50:03 +0800 Subject: [PATCH] =?UTF-8?q?fix(migrate):=20deep=20glob=20=E6=8E=92?= =?UTF-8?q?=E9=99=A4=20*=5Fannounce=5Funion.parquet(=E4=B8=8D=E5=90=8C=20s?= =?UTF-8?q?chema)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit deep union 段 glob '*_union.parquet' 误匹配 000852_announce_union.parquet/ 932000_announce_union.parquet, 它们无 in_current/was_removed 列(用 adjust_type) -> KeyError 崩溃。显式 skip _announce_union.parquet 文件。 VPS 验证通过: - 000852: 1672 rows (in_current=1000, was_removed=672) - 932000: 2684 rows (in_current=2000, was_removed=684) - 000300/000905/000016/399001 行数不变(回归 OK) --- scripts/data_platform/migrate_constituent.py | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/scripts/data_platform/migrate_constituent.py b/scripts/data_platform/migrate_constituent.py index 821c3dd..2ce65dc 100644 --- a/scripts/data_platform/migrate_constituent.py +++ b/scripts/data_platform/migrate_constituent.py @@ -158,9 +158,11 @@ def migrate(db_path: str) -> None: pool["source"] = "baostock" print(f"[baostock] pool rows={len(pool)} (300/500/50 全集)") - # 2. 深证 union + # 2. 深证 union (排除 *_announce_union.parquet, 不同 schema) deep = [] for f in sorted(glob.glob(os.path.join(HIST, "*_union.parquet"))): + if f.endswith("_announce_union.parquet"): + continue d = pd.read_parquet(f)[["index_code", "code", "code_name", "in_current", "was_removed"]] d["source"] = "akshare_cni"