Time Window Sampler

时间窗口采样算子。读取JSONL时间序列记录,按指定时间窗口分组后在每个窗口内均匀抽取样本。 当用户提到按天抽样、按小时抽样、周期性抽样、时间窗口采样等需求时使用此skill。 即使用户没有明确说出"时间窗口采样",只要任务涉及按时间粒度分组后抽样,就应该使用此skill。 不负责时间字段清洗、时间聚合统计或异常检测。

cas-bigdatalab 2cfcc2f 4 files · 11.2 KB Updated

File contents

TimeWindowSampler - 时间窗口采样算子

功能概述

按照时间窗口对数据进行采样,每个窗口内均匀抽取指定数量的样本。支持按天、小时、月、周等时间粒度,适用于时间序列数据的周期性抽样。

触发条件

当用户请求以下任务时,应使用此skill:

  • 按天抽样
  • 按小时抽样
  • 周期性抽样
  • 时间窗口采样
  • 按时间粒度分组后抽样

核心参数说明

必需参数

  • --input:输入JSONL文件路径
  • --output:输出JSONL文件路径
  • --time_field:时间字段名
  • --window_size:窗口大小(如 1d2h1m1w

可选参数

  • --time_format:时间格式字符串
  • --sample_per_window:每个窗口采样数量,默认 1
  • --log_file:日志文件路径

输入文件格式

输入文件必须是JSONL,每行一个JSON对象,且至少包含时间字段。时间字段应能被脚本识别为日期时间字符串。

使用方法

python scripts/run_time_window_sampler.py --input data.jsonl --output sampled.jsonl --time_field event_time --window_size 1d --sample_per_window 2

输出示例

{"id": 1, "event_time": "2025-06-01 00:15:00", "_time_window": "2025-06-01", "_window_sample_index": 0}
{"id": 7, "event_time": "2025-06-01 06:15:00", "_time_window": "2025-06-01", "_window_sample_index": 1}

环境要求

  • Python 3.10+
  • 标准库 datetime

注意事项

  • 无法解析时间字段的记录会被跳过
  • _time_window 标记窗口起点标签
  • _window_sample_index 标记窗口内抽样顺序

cas-bigdatalab/piflow/tree/main/workspace/skills/time_window_sampler commit 2cfcc2f434

Frequently asked questions

npx skillmds@latest add cas-bigdatalab/time-window-sampler