【n8n教程】:Summarize 节点,掌握数据聚合的魔法武器

【n8n教程】:Summarize 节点,掌握数据聚合的魔法武器

在数据处理的世界中,你是否曾经遇到过这样的问题:需要统计销售员的总业绩?想要计算每个地区的总收入?或者需要汇总一堆散乱的数据?这些工作在 Excel 中通常需要使用数据透视表来完成,但在 n8n 中,我们有一个强大的工具来解决这一切——Summarize 节点

Summarize 节点就像 Excel 中的数据透视表功能,它能够将多条数据进行聚合、分组和统计。无论你是初学者还是有一定经验的用户,这篇教程都将帮助你快速掌握这个强大的数据转换工具。


点击获取最新AI资讯、n8n工作流、开发经验分享

🎯 什么是 Summarize 节点?

Summarize 节点 是 n8n 中的一个数据转换工具,用于对输入数据进行聚合操作,类似于 Excel 的数据透视表或 SQL 中的 GROUP BY 语句。

核心功能:

  • 数据聚合:将多条数据项合并成一条或多条汇总数据
  • 分组统计:按照指定字段对数据进行分组
  • 多种计算方式:支持求和、计数、平均值、最大值、最小值等

实际应用场景:

场景示例
销售分析按销售员统计总业绩
地区统计按地区统计总销售额
数据清理计算数据中的唯一值个数
数据整理合并相同类别的项目
报表生成自动生成周期性数据报表

🔧 Summarize 节点的关键参数

1. 字段聚合方法 (Fields to Summarize)

这是 Summarize 节点的核心,决定了如何对数据进行计算。n8n 提供了 8 种聚合方式:

📊 常用聚合方法详解:

① 计数 (Count)

  • 统计数据项的总数量
  • 最常见的聚合方式
  • 示例:计算有多少条订单记录

② 求和 (Sum)

  • 将数值字段相加
  • 适用于数值类型的数据
  • 示例:计算总销售额

③ 平均值 (Average)

  • 计算数值字段的平均值
  • 自动忽略非数值数据
  • 示例:计算平均订单金额

④ 最大值 (Max) / 最小值 (Min)

  • 找出最大或最小的数值
  • 可用于找出性能最好或最差的数据
  • 示例:找出最高和最低销售额

⑤ 连接 (Concatenate)

  • 将多个文本值合并成一个字符串
  • 可自定义分隔符(逗号、空格、换行符等)
  • 选项:Include Empty Values(是否包含空值)
  • 示例:将所有标签合并成一行文本

⑥ 追加 (Append)

  • 将多个值收集到一个数组中
  • 适合需要保留所有值的场景
  • 选项:Include Empty Values(是否包含空值)
  • 示例:收集某个类别下的所有项目

⑦ 计数唯一值 (Count Unique)

  • 统计不重复的值的个数
  • 自动去除重复
  • 示例:统计有多少个不同的客户

2. 分组字段 (Fields to Split By)

用于定义如何对数据进行分组,类似于 Excel 数据透视表中的"行"字段或 SQL 的 GROUP BY 子句。

重要特性:

  • 可以输入单个字段名称
  • 支持多字段分组(用逗号分隔)
  • 例如:Sales RepSales Rep, Region
  • 字段名称支持点号记法(访问嵌套字段)

应用示例:

假设你有这样的数据:

{ name: "Alice", department: "Sales", bonus: 1000 }
{ name: "Alice", department: "Sales", bonus: 1500 }
{ name: "Bob", department: "Marketing", bonus: 800 }

如果按 department 分组并对 bonus 求和,你会得到:

{ department: "Sales", sum_bonus: 2500 }
{ department: "Marketing", sum_bonus: 800 }

3. 节点选项 (Node Options)

🔄 输出格式 (Output Format)

这个选项决定了最终输出数据的结构方式:

选项 1:每个分组单独成一项 (Each Split in a Separate Item)

  • ✅ 推荐用于:需要逐个处理每个分组的场景
  • 输出:多条数据项,每条包含一个分组的结果

选项 2:所有分组在一项中 (All Splits in a Single Item)

  • ✅ 推荐用于:需要统一处理所有分组的场景
  • 输出:单条数据项,包含所有分组的结果
⚠️ 其他关键选项:
选项说明默认值
继续(若字段未找到)字段不存在时是否继续执行关闭
禁用点号记法是否禁用嵌套字段访问(parent.child)关闭
忽略不含分组字段的项跳过未包含分组字段的数据项开启

📸 节点界面详解

Summarize 节点在 n8n 工作流编辑器中的配置界面包含:

  1. 上方:字段聚合区域 - 添加和配置你要聚合的字段
  2. 中间:分组字段区域 - 定义数据分组的依据
  3. 下方:节点选项 - 调整输出格式和错误处理

💡 快速入门示例

示例 1:简单计数

场景:统计有多少条订单记录

输入数据

[
  { "order_id": 1, "customer": "Alice" },
  { "order_id": 2, "customer": "Bob" },
  { "order_id": 3, "customer": "Alice" }
]

Summarize 配置

  • 聚合方法:Count
  • 字段:order_id

输出结果

[
  { "count_order_id": 3 }
]

示例 2:按分类分组统计

场景:按客户统计他们的订单总数

输入数据

[
  { "customer": "Alice", "amount": 100 },
  { "customer": "Alice", "amount": 200 },
  { "customer": "Bob", "amount": 150 }
]

Summarize 配置

  • 聚合方法:Sum
  • 字段:amount
  • 分组字段:customer

输出结果

[
  { "customer": "Alice", "sum_amount": 300 },
  { "customer": "Bob", "sum_amount": 150 }
]

示例 3:多个聚合操作

场景:按区域统计销售数据(计数、求和、求平均)

输入数据

[
  { "region": "North", "sales": 5000 },
  { "region": "North", "sales": 7000 },
  { "region": "South", "sales": 4000 },
  { "region": "South", "sales": 6000 }
]

Summarize 配置

  • 聚合方法 1:Count 字段 sales
  • 聚合方法 2:Sum 字段 sales
  • 聚合方法 3:Average 字段 sales
  • 分组字段:region

输出结果

[
  { "region": "North", "count_sales": 2, "sum_sales": 12000, "average_sales": 6000 },
  { "region": "South", "count_sales": 2, "sum_sales": 10000, "average_sales": 5000 }
]

示例 4:连接文本值

场景:将同一类别下的所有标签合并为一行

输入数据

[
  { "product": "Laptop", "tag": "Electronics" },
  { "product": "Laptop", "tag": "Premium" },
  { "product": "Mouse", "tag": "Electronics" },
  { "product": "Mouse", "tag": "Budget" }
]

Summarize 配置

  • 聚合方法:Concatenate
  • 字段:tag
  • 分隔符:, (逗号+空格)
  • 分组字段:product

输出结果

[
  { "product": "Laptop", "concatenate_tag": "Electronics, Premium" },
  { "product": "Mouse", "concatenate_tag": "Electronics, Budget" }
]

🚀 实战工作流案例:销售团队业绩分析

现在让我们构建一个完整的实际应用工作流,展示如何使用 Summarize 节点来分析销售团队的业绩数据。

工作流场景

一个销售团队有多名销售员,每月完成多笔交易。我们需要:

  1. ✅ 统计每个销售员的交易总数
  2. ✅ 计算每个销售员的总销售额
  3. ✅ 计算每个销售员的平均交易金额
  4. ✅ 找出最高和最低交易额

完整工作流代码

将以下代码复制到 n8n 的工作流编辑器中:

{
  "nodes": [
    {
      "parameters": {},
      "id": "2a3ff9ba-c72d-4f65-ba8d-85e5c6e2d1a0",
      "name": "Start",
      "type": "n8n-nodes-base.start",
      "typeVersion": 1,
      "position": [
        50,
        50
      ]
    },
    {
      "parameters": {
        "functionCode": "// 模拟销售数据\nreturn [\n  { json: { sales_rep: 'Alice', deal_amount: 5000, deal_date: '2024-01-15' } },\n  { json: { sales_rep: 'Alice', deal_amount: 3000, deal_date: '2024-01-20' } },\n  { json: { sales_rep: 'Alice', deal_amount: 7000, deal_date: '2024-01-28' } },\n  { json: { sales_rep: 'Bob', deal_amount: 4500, deal_date: '2024-01-10' } },\n  { json: { sales_rep: 'Bob', deal_amount: 6000, deal_date: '2024-01-22' } },\n  { json: { sales_rep: 'Charlie', deal_amount: 8000, deal_date: '2024-01-05' } },\n  { json: { sales_rep: 'Charlie', deal_amount: 2000, deal_date: '2024-01-25' } },\n  { json: { sales_rep: 'Charlie', deal_amount: 5500, deal_date: '2024-01-29' } }\n];"
      },
      "id": "7c9e1b3a-4d2e-4f5b-9a1c-2e3f4a5b6c7d",
      "name": "生成销售数据",
      "type": "n8n-nodes-base.code",
      "typeVersion": 1,
      "position": [
        250,
        50
      ],
      "connections": {}
    },
    {
      "parameters": {
        "fields": [
          {
            "aggregation": "count",
            "field": "deal_amount"
          },
          {
            "aggregation": "sum",
            "field": "deal_amount"
          },
          {
            "aggregation": "average",
            "field": "deal_amount"
          },
          {
            "aggregation": "max",
            "field": "deal_amount"
          },
          {
            "aggregation": "min",
            "field": "deal_amount"
          }
        ],
        "splitBy": "sales_rep",
        "options": {
          "outputFormat": "eachSplitInASeparateItem"
        }
      },
      "id": "9f8e7d6c-5b4a-3f2e-1a9c-8b7a6f5e4d3c",
      "name": "销售业绩汇总",
      "type": "n8n-nodes-base.summarize",
      "typeVersion": 1,
      "position": [
        500,
        50
      ],
      "connections": {}
    },
    {
      "parameters": {
        "functionCode": "// 将输出格式优化为更易读的形式\nreturn items.map(item => {\n  return {\n    json: {\n      \"销售员\": item.json.sales_rep,\n      \"交易总数\": item.json.count_deal_amount,\n      \"总销售额\": `¥${item.json.sum_deal_amount.toFixed(2)}`,\n      \"平均交易额\": `¥${item.json.average_deal_amount.toFixed(2)}`,\n      \"最高交易额\": `¥${item.json.max_deal_amount}`,\n      \"最低交易额\": `¥${item.json.min_deal_amount}`\n    }\n  };\n});"
      },
      "id": "3a2b1c0d-9e8f-7a6b-5c4d-3e2f1a0b9c8d",
      "name": "格式化输出",
      "type": "n8n-nodes-base.code",
      "typeVersion": 1,
      "position": [
        750,
        50
      ],
      "connections": {}
    }
  ],
  "connections": {
    "Start": {
      "main": [
        [
          {
            "node": "生成销售数据",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "生成销售数据": {
      "main": [
        [
          {
            "node": "销售业绩汇总",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "销售业绩汇总": {
      "main": [
        [
          {
            "node": "格式化输出",
            "type": "main",
            "index": 0
          }
        ]
      ]
    }
  }
}

工作流执行步骤

  1. 第一步:启动工作流 → 从"Start"节点开始

  2. 第二步:生成销售数据 → "生成销售数据"节点创建样本数据,包含:

    • 销售员名字(Alice、Bob、Charlie)
    • 交易金额
    • 交易日期
  3. 第三步:数据聚合 → "销售业绩汇总"节点执行以下操作:

    • 按销售员名字分组
    • 对每个销售员统计:交易总数、总销售额、平均交易额、最高额、最低额
  4. 第四步:格式化输出 → "格式化输出"节点美化展示格式

预期输出结果

销售员: Alice
交易总数: 3
总销售额: ¥15,000.00
平均交易额: ¥5,000.00
最高交易额: ¥7,000
最低交易额: ¥3,000

销售员: Bob
交易总数: 2
总销售额: ¥10,500.00
平均交易额: ¥5,250.00
最高交易额: ¥6,000
最低交易额: ¥4,500

销售员: Charlie
交易总数: 3
总销售额: ¥15,500.00
平均交易额: ¥5,166.67
最高交易额: ¥8,000
最低交易额: ¥2,000

⚡ 常见问题与解决方案

❓ 问题 1:Summarize 节点找不到我指定的字段

原因:字段名称拼写错误或字段不存在

解决方案

  • ✅ 确认字段名称的准确拼写
  • ✅ 如果是嵌套字段,使用点号记法:parent.child
  • ✅ 在"节点选项"中开启"继续(若字段未找到)"选项

❓ 问题 2:聚合结果为空或不正确

原因:输入数据结构不符合预期或聚合逻辑配置错误

解决方案

  • ✅ 使用"执行步骤"按钮检查前一个节点的输出
  • ✅ 验证是否有数据流进入 Summarize 节点
  • ✅ 检查字段类型是否与聚合方法匹配(如数值类型与 Sum)

❓ 问题 3:多字段分组时结果不对

原因:分组字段顺序或配置错误

解决方案

  • ✅ 确认分组字段用逗号正确分隔:field1, field2
  • ✅ 检查分组字段的数据类型是否一致
  • ✅ 在输出格式中选择"每个分组单独成一项"以便调试

❓ 问题 4:如何处理包含空值或缺失值的数据?

原因:数据不完整或包含 null 值

解决方案

  • ✅ 对于 Concatenate 和 Append,使用"Include Empty Values"选项
  • ✅ 在 Summarize 前使用"Remove Duplicates"或"Filter"节点清理数据
  • ✅ 使用"Set"节点为缺失值提供默认值

🎓 进阶技巧

💎 技巧 1:结合 SplitOut 处理嵌套数据

数据源 → SplitOut 节点 → Summarize 节点 → 最终输出

SplitOut 节点先将数组展开成多条数据项,然后 Summarize 进行聚合。


💎 技巧 2:链式聚合操作

在复杂场景中,你可以使用多个 Summarize 节点进行多层次的聚合:

原始数据 → 第一层 Summarize(按部门分组)
         → 第二层 Summarize(按公司分组)
         → 最终报表

💎 技巧 3:与其他节点结合

结合节点应用场景
HTTP Request从 API 获取数据,然后聚合
Database从数据库查询后聚合统计
Google Sheets从电子表格读取,聚合后写回
If条件聚合(满足条件才聚合)
Code自定义聚合逻辑

🎯 总结

通过本教程,你已经学会了:

理解 Summarize 节点的核心概念 - 数据聚合和分组

掌握 8 种聚合方法 - Count、Sum、Average、Max、Min、Concatenate、Append、Count Unique

灵活使用分组功能 - 按单个或多个字段分组

配置输出格式 - 选择合适的数据结构

实现完整的工作流 - 从数据输入到结果输出

解决常见问题 - 处理错误和优化性能

Summarize 节点是 n8n 中最强大的数据转换工具之一。熟练掌握它,你将能够构建高效的数据处理工作流,大幅提高自动化的能力!


<think>好的,用户问的是n8n中的Summarize节点怎么使用。首先我得确认自己对这个节点的了解。n8n是一个自动化工作流工具,Summarize节点可能用于对数据进行总结或摘要处理。 首先,我需要回忆一下Summarize节点的功能。可能它用于将大量文本或数据汇总成更简洁的形式,比如总结文章、提取关键信息等。用户可能想用这个节点来处理从其他节点获取的数据,比如从HTTP请求获取的文章内容,然后生成摘要。 接下来,使用步骤应该包括如何添加节点到工作流,如何配置它的参数。可能需要连接到前一个节点,比如一个HTTP请求节点,然后将响应数据传给Summarize节点。参数方面,可能需要指定要总结的字段,或者设置摘要的长度、语言等选项。 另外,可能需要举例说明,比如在工作流中添加Summarize节点,配置输入字段为“content”,输出字段为“summary”,然后设置摘要长度为100字。这样用户就能看到具体操作步骤。 还要考虑用户可能的疑问点,比如数据格式的要求,是否需要特定的输入结构,或者支持哪些类型的数据。比如是否只能处理文本,还是能处理JSON中的特定字段。此外,Summarize节点是否有依赖的模型或服务,比如是否需要连接AI模型来生成摘要。 然后,相关问题需要围绕这个主题展开。例如用户可能想知道如何配置参数、如何处理不同数据类型、是否需要API密钥、与其他节点的兼容性,以及如何处理多语言内容。这些都是用户在使用过程中可能遇到的后续问题。 需要确保回答准确,可能需要查阅n8n的文档确认Summarize节点的具体用法,确保步骤正确。比如确认节点是否在“Transform”类别下,参数名称是否正确,是否有示例工作流等。 最后,按照用户的要求,回答要使用中文,并在末尾添加3-5个相关问题,用指定格式。注意不要换行,保持每个问题在一行内。</think>在n8n中,**Summarize节点**用于对文本内容进行自动化摘要处理,通常结合AI模型生成简洁的总结。以下是使用步骤: 1. **添加节点**:在工作流画布中,点击“+”按钮,搜索并选择“Summarize节点(通常位于“AI”或“Transform”分类下)。 2. **连接输入数据**:将前序节点(如HTTP请求、读取文件节点)的输出连接到Summarize节点的输入端口,确保数据包含需要摘要的文本字段(例如`content`)。 3. **配置参数**: - **Text Field**:选择需要摘要的字段名(如`content`)。 - **Summary Length**:设置摘要长度(如`short`、`medium`、`long`或自定义字数)。 - **Language**:指定文本语言(如英语、中文)。 - **AI Model**:选择使用的模型(如OpenAI、本地模型等,具体取决于你的配置)。 4. **运行工作流**:执行流程后,Summarize节点会生成摘要结果,并通过`summary`字段输出。 ```json // 示例输入数据 { "content": "人工智能是计算机科学的一个分支,旨在开发能够执行通常需要人类智能的任务的系统..." } // 输出结果 { "summary": "人工智能通过模拟人类智能行为,实现复杂任务自动化,广泛应用于医疗、金融等领域。" } ```
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

undsky_

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值