Dify+DeepSeek | Excel数据一键可视化(创建步骤案例)(echarts助手.yml)(文档表格转图表、根据表格绘制图表、Excel绘制图表)

Dify部署参考:Dify Rag部署并集成在线Deepseek教程(Windows、部署Rag、安装Ragan安装、安装Dify安装、安装ollama安装)

Dify+DeepSeek - Excel数据一键可视化(创建步骤案例)-DSL工程文件(可直接导入)

功能:输入文档或表格————>绘制图表

示例文件(喂给Dify解析):

Dify+DeepSeek - Excel数据一键可视化(创建步骤案例)-Markdown示例文件

创建步骤

点击创建Chatflow

在这里插入图片描述

echart助手

在这里插入图片描述

删除已有节点

选中按Del:
在这里插入图片描述
在这里插入图片描述

创建上传文件节点

点击“开始”,创建输入字段text(文件路径或url)

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

创建文档提取器

在这里插入图片描述
添加text字段输入:

在这里插入图片描述
在这里插入图片描述

为文档提取器输出创建Excel转csv节点

新建节点

在这里插入图片描述

模型我选择deepseek-reasoner

在这里插入图片描述

按照以下格式填入prompt(输入数据选择文档提取器/(x)text

#角色
你是一个数据整理专家,删除数据格式的整理和格式的转换。
#数据
囚 文档提取器/(x)text
#任务
将数据转换成csv格式

在这里插入图片描述
在这里插入图片描述

修改节点名称为Excel转csv

在这里插入图片描述

Excel转csv节点创建参数提取器节点

新建节点

在这里插入图片描述

设置指令

#任务
-提取csv格式的字符串

在这里插入图片描述

设置模型

在这里插入图片描述
在这里插入图片描述

设置输入变量

在这里插入图片描述

在这里插入图片描述

添加提取参数csv_data

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

为参数提取器节点创建代码执行节点

新建节点

在这里插入图片描述
在这里插入图片描述

代码填入

import csv
import json

def main(csv_data):
    # 解析CSV
    reader = csv.DictReader(csv_data.strip().splitlines())
    rows = list(reader)
    
    # 自动识别列结构
    headers = reader.fieldnames
    if not headers or len(headers) < 2:
        return {'output': 'Error: 需要至少两列数据(1个分类列+1个数值列)'}
    
    # 默认第一列为分类轴,其余为数值列
    category_col = headers[0]
    value_columns = headers[1:]
    
    # 提取数据
    categories = [row[category_col] for row in rows]
    series_data = [
        {
            "name": col,
            "type": "bar",
            "data": [float(row[col]) for row in rows]  # 处理浮点数
        } for col in value_columns
    ]
    
    # 构建ECharts配置
    echarts_config = {
        "xAxis": {"type": "category", "data": categories},
        "yAxis": {"type": "value"},
        "series": series_data
    }
    
    # 返回结果
    return {'output': f'```echarts\n{json.dumps(echarts_config, ensure_ascii=False)}\n```'}

代码解释

以下是对该代码的详细技术解析:

1. 流程架构
  • 输入:接收CSV格式的原始字符串数据
  • 处理:通过三层转换 pipeline:
    CSV文本 → Python字典结构 → ECharts JSON配置 → Markdown代码块封装
    
  • 输出:符合Markdown扩展语法规范的ECharts图表代码块
2. 核心算法
  • 列智能识别算法:采用启发式规则
    if len(headers) >=2:
        第一列 = 分类轴
        后续列 = 数值系列
    else:
        触发错误处理
    
  • 类型强制转换:float(row[col])实现字符串到数值的类型安全转换
3. ECharts配置生成
  • 生成符合Apache ECharts v5+规范的配置结构
  • 动态构建坐标系:
    • X轴:自动映射分类维度
    • Y轴:自动推断为数值轴
  • 系列数据采用bar(柱状图)可视化编码
4. 异常处理边界
  • 列数校验:强制要求至少包含2列数据
  • 浮点转换:假设所有数值列均可转换为float类型(需注意潜在TypeError风险)
5. 运维增强特性
  • 输入数据规范化:通过strip().splitlines()处理不同平台的换行符差异
  • Unicode安全:ensure_ascii=False确保中文等字符正确显示
  • 结构化错误消息:返回标准字典格式,方便日志采集和监控

该代码特别适用于运维监控场景下的自动化报表生成,可将Zabbix、Prometheus等监控系统导出的CSV指标数据快速转换为可交互的可视化图表。

为执行代码节点添加直接回复节点

创建节点

在这里插入图片描述

输入直接回复内容(注意我修改了部分变量名,可能跟前面不兼容)

在这里插入图片描述

filePath:
{{#1741057279322.filePath#}}
</br>

文档提取器text:
{{#1741058246976.text#}}
</br>

Excel转csv, csv text:
{{#1741058730753.text#}}
</br>

参数提取器csv_data:
{{#1741065751183.csv_data#}}
</br>

代码执行output:
{{#1741082638678.output#}}

节点测试 (无效)

测试文档提取器(Excel转csv失败了,改成Markdown转csv)

运行

在这里插入图片描述
在这里插入图片描述

在这里插入图片描述

我的dify见鬼了,提取excel都是空的

在这里插入图片描述

只能修改方案了,将后面的Excel转csv改成Markdown转csv

在这里插入图片描述

不过提示词貌似都不用改。

测试提取markdown(没有问题)

在这里插入图片描述

测试运行

点击预览,然后上传文件

在这里插入图片描述

在聊天框随便输入内容然后发送

在这里插入图片描述

然后工作流就会逐个运行,最后输出结果

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

点开右边工作流节点,能看到各个节点输入输出,方便调试

在这里插入图片描述

### 如何将数据表格集成到Dify知识库 要实现数据表格Dify知识库的集成,可以遵循以下方法和技术要点: #### 数据准备阶段 在开始之前,需确认数据表格的内容结构化良好,并能够被解析为适合的知识表示形式。通常情况下,CSV 或 Excel 文件是最常见的数据格式[^1]。 #### 集成过程详解 Dify 支持多种数据源接入功能,其中包括但不限于数据库类型的页面属性导入能力。这意味着可以直接上传 CSV 或 Excel 表格文件至 Dify 平台,或者通过 API 接口自动同步外部数据表中的内容[^2]。 具体操作如下: - **手动上传**:登录 Dify 后端管理界面,在指定模块中选择“新增数据源”,随后按照提示上传目标数据表格文件。 - **API 连接**:如果希望更高效地完成这一任务,则可以通过配置 RESTful API 来定期抓取更新的数据记录并注入到现有知识体系里。这种方法特别适用于频繁变动的大规模业务场景下使用[^3]。 此外,为了优化检索效率以及提升问答质量,建议预先定义好字段映射关系(即告诉系统哪些列代表什么含义),这样有助于后续自然语言理解模型更好地解读原始素材背后的语义信息。 ```python import requests url = 'https://your-dify-instance.com/api/v1/data' headers = {'Authorization': 'Bearer YOUR_ACCESS_TOKEN'} files = { 'file': ('data.csv', open('path/to/your/file.csv', 'rb')), } response = requests.post(url, headers=headers, files=files) if response.status_code == 200: print("Data uploaded successfully.") else: print(f"Error uploading data: {response.text}") ``` 上述脚本展示了如何借助 Python 脚本来调用 Dify 提供的标准接口来传输本地存储好的电子表格资源给云端服务实例进行进一步加工处理。 #### 注意事项 在整个过程中需要注意保护敏感信息安全不泄露;另外也要考虑到不同编码标准可能带来的兼容性问题,确保所选工具链均能正确识别 UTF-8 编码字符集。 ---
评论 5
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

Dontla

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

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

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

打赏作者

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

抵扣说明:

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

余额充值