如何在n8n Filter节点后统计各输入连接的留存条目数
解决n8n多输入Filter节点的来源跟踪与自动汇总问题
步骤1:给每个输入条目添加来源标识
在每个接入Filter节点的上游节点之后,新增一个Set节点(或Code节点),给当前输入的所有条目打上来源标签:
- 对应Filter的Input 0,用Set节点添加字段
source,值设为Input 0 - 对应Filter的Input 1,Set节点将
source值设为Input 1,以此类推
如果用Code节点实现,可运行以下代码(按需修改source值):
return items.map(item => { item.json.source = "Input 0"; return item; });
步骤2:用Filter节点处理带标识的条目
正常配置Filter节点的过滤规则即可,此时所有通过过滤的条目都会保留source字段,明确标记自身来源的输入连接。
步骤3:自动统计生成指定格式的汇总
添加一个Code节点,用以下代码统计各来源的留存数并生成汇总:
// 统计各来源条目数 const countMap = {}; let total = 0; items.forEach(item => { const source = item.json.source; countMap[source] = (countMap[source] || 0) + 1; total++; }); // 生成目标格式的汇总文本 const summaryLines = Object.entries(countMap).map(([source, count]) => `${source}: ${count} items kept`); summaryLines.push(`Total: ${total} items`); const summaryText = summaryLines.join('\n'); // 输出汇总结果 return [{ json: { summary: summaryText } }];
运行后,该Code节点的输出会直接生成你需要的汇总内容,无需手动切换输入查看。
替代方案:批量拆分+合并流
若不想给单个条目打标记,也可将每个输入分别接入Split In Batches节点(批量大小设为原输入的总条目数),在每个Split节点后用Set节点标记来源,再合并所有流到Filter节点处理,后续统计逻辑与步骤3一致。
内容的提问来源于stack exchange,提问作者Ohad Cohen
相关产品推荐
相关产品推荐

