1. 项目概述
在数据科学项目中,数据预处理环节往往占据了70%以上的工作时间。作为一名长期使用Dataiku DSS的数据工程师,我发现很多新手在构建数据处理流程时,常常陷入"receipes套receipes"的困境——为了完成一个简单的过滤或计算操作,不得不在流程中插入多个独立的receipes节点,导致项目流看起来像意大利面条一样杂乱。这正是Dataiku设计预过滤(Pre-filter)、后过滤(Post-filter)和计算列(Computed columns)这三个通用步骤的初衷。
需要模型API调用? 免费领10W Token,多模型网关一键接入 Claude、DeepSeek 等主流模型。
2. 核心功能解析
2.1 预过滤(Pre-Filter)的深度应用
预过滤的本质是在当前receipes执行前对输入数据集进行条件筛选。与独立的"采样/过滤"receipes相比,内置的预过滤有三大优势:
- 性能优化:过滤操作在内存中完成,避免了中间数据集的物理写入
- 流程简化:减少项目流中的节点数量,提升可读性
- 上下文保留:过滤条件与receipes逻辑保持在同一配置界面
典型应用场景:
- 在关联(Join)操作前排除空值记录
- 在分组(Group)前筛选特定时间范围的数据
- 在窗口(Window)计算前限制数据量级
技术细节:预过滤使用Dataiku自研的过滤引擎,支持以下表达式类型:
- 简单条件:
column_A > 100- 复合条件:
(column_A LIKE '%test%') AND (column_B BETWEEN 10 AND 20)- 函数表达式:
LEN(column_C) < 5
2.2 后过滤(Post-Filter)的巧妙之处
后过滤的特殊性在于它作用于receipes输出结果而非输入数据。这在以下场景中不可替代:
-
基于聚合结果的筛选:
sql复制-- 只保留分组后平均金额大于100的记录 WHERE avg_amount > 100 -
去除中间结果中的异常值:
sql复制-- 在窗口计算后排除3σ以外的数据 WHERE value BETWEEN (mean - 3*std) AND (mean + 3*std)
