You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何取消Polars LazyFrame查询计划中的select操作?

如何取消Polars LazyFrame的select操作而无需重新执行合并?

我的处理流程(实际查询计划更复杂)

  1. 合并一周数据(延迟执行)
week_data = pl.scan_parquet(one_week_data[0])

for day in one_week_data[1:]:
    temp = pl.scan_parquet(day)
    week_data = pl.concat([week_data, temp])
  1. 调整列顺序并选择部分列
week_data = week_data.select([
    'OID_',
    'Hashed_Device_ID',
    'Lat_of_Observation_Point',
    'Lon_of_Observation_Point',
    'Polygon_ID',
    'Unix_Timestamp_of_Observation_Point',
    'Local_Timezone_of_Observation_Point'
])

现在希望无需重新执行合并步骤,直接取消上述select操作,是否有可行方法?


可行解决方案

因为你使用的是Polars的延迟执行(Lazy API),所有操作都是构建查询计划而非实际计算数据,所以完全可以不用重新执行合并,直接调整查询计划来取消select操作:

方法1:回溯查询计划(精准移除select步骤)

如果week_data的最后一步操作就是select,可以直接获取该操作的输入节点,恢复到select之前的状态:

# 获取select操作前的LazyFrame,跳过最后一步select
week_data = week_data.plan.input

方法2:选择所有列(通用兼容方式)

如果不确定查询计划的具体结构,或者select之后还叠加了其他操作,直接选择所有列即可覆盖之前的select逻辑,同时保留原数据的所有列和顺序:

# 选择全部列,等同于取消之前的自定义select
week_data = week_data.select(pl.all())

这两种方法都不会触发实际的数据合并计算,只有当你调用collect()时,Polars才会根据修改后的查询计划执行最终计算。


内容的提问来源于stack exchange,提问作者Amri Rasyidi

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.27 02:45:05