项目

一般

简介

Story #186

Huarui Lin 更新于 2 天 之前

**统计各基金有效周数,剔除 <52 周,Polars 内按年切片写 Parquet,创建 DuckDB VIEW。** 

 --- 
 ① 存活期计算 = 该基金所有段有效周数之和,< 52 周整体剔除; 
 ② data/processed/ 下产出 net_value_YYYY.parquet(覆盖写入,不追加),显式指定 row_group_size=100000; net_value_YYYY.parquet(覆盖写入,不追加);落盘 Schema 绝对锁定:仅含 4 列 fund_id(String), net_value_date(Date), cumulative_net_value(Float64), segment_id(UInt32),临时列 fund_type 落盘前必须被显式 select 丢弃; PyArrow write_parquet() 显式指定 row_group_size=100000;cumulative_net_value 全链路强制映射为 Float64,严禁使用 Decimal; create_duckdb_view() 函数拼接所有年份文件创建 v_net_value_processed;create_duckdb_view() 严禁依赖持久化状态,必须动态扫描年份文件拼接生成 v_net_value_processed。 单测:Mock 含短生命周期基金的 DataFrame,验证其被完整剔除。 

 --- 
 *规约 1.2 (存活期过滤/清盘基金);规约 1.3 (存储方案/row_group_size);FW-4/FW-5*

返回