一、引言:让业务人员用“说话”的方式查数据
在企业日常运营中,数据分析往往存在一个尴尬的断层:业务人员最清楚自己想看什么数据,但不会写SQL;IT人员会写SQL,但不了解业务上下文,沟通成本高、响应周期长。对话式数据分析(Conversational Data Analysis)正是为解决这一断层而生。
它的核心能力是:用户用自然语言描述数据需求,系统自动将其转化为数据库查询,执行查询并生成可视化图表。 用户说“上个月华东区销售额最高的五个客户”,系统就能返回一张柱状图;用户问“最近一周哪条产线的良率波动最大”,系统就能返回趋势图和归因分析。
本文将完整拆解对话式数据分析的搭建流程——从数据源接入、术语映射、查询测试到报表生成和定时推送。阅读完成后,你将掌握这一能力的完整配置方法,并能将其应用到实际的业务场景中。
二、整体流程概览
对话式数据分析的配置流程分为五个核心步骤:
#mermaid-svg-gj02AwvGFfHmNnZ4{font-family:\”trebuchet ms\”,verdana,arial,sans-serif;font-size:16px;fill:#333;}@keyframes edge-animation-frame{from{stroke-dashoffset:0;}}@keyframes dash{to{stroke-dashoffset:0;}}#mermaid-svg-gj02AwvGFfHmNnZ4 .edge-animation-slow{stroke-dasharray:9,5!important;stroke-dashoffset:900;animation:dash 50s linear infinite;stroke-linecap:round;}#mermaid-svg-gj02AwvGFfHmNnZ4 .edge-animation-fast{stroke-dasharray:9,5!important;stroke-dashoffset:900;animation:dash 20s linear infinite;stroke-linecap:round;}#mermaid-svg-gj02AwvGFfHmNnZ4 .error-icon{fill:#552222;}#mermaid-svg-gj02AwvGFfHmNnZ4 .error-text{fill:#552222;stroke:#552222;}#mermaid-svg-gj02AwvGFfHmNnZ4 .edge-thickness-normal{stroke-width:1px;}#mermaid-svg-gj02AwvGFfHmNnZ4 .edge-thickness-thick{stroke-width:3.5px;}#mermaid-svg-gj02AwvGFfHmNnZ4 .edge-pattern-solid{stroke-dasharray:0;}#mermaid-svg-gj02AwvGFfHmNnZ4 .edge-thickness-invisible{stroke-width:0;fill:none;}#mermaid-svg-gj02AwvGFfHmNnZ4 .edge-pattern-dashed{stroke-dasharray:3;}#mermaid-svg-gj02AwvGFfHmNnZ4 .edge-pattern-dotted{stroke-dasharray:2;}#mermaid-svg-gj02AwvGFfHmNnZ4 .marker{fill:#333333;stroke:#333333;}#mermaid-svg-gj02AwvGFfHmNnZ4 .marker.cross{stroke:#333333;}#mermaid-svg-gj02AwvGFfHmNnZ4 svg{font-family:\”trebuchet ms\”,verdana,arial,sans-serif;font-size:16px;}#mermaid-svg-gj02AwvGFfHmNnZ4 p{margin:0;}#mermaid-svg-gj02AwvGFfHmNnZ4 .label{font-family:\”trebuchet ms\”,verdana,arial,sans-serif;color:#333;}#mermaid-svg-gj02AwvGFfHmNnZ4 .cluster-label text{fill:#333;}#mermaid-svg-gj02AwvGFfHmNnZ4 .cluster-label span{color:#333;}#mermaid-svg-gj02AwvGFfHmNnZ4 .cluster-label span p{background-color:transparent;}#mermaid-svg-gj02AwvGFfHmNnZ4 .label text,#mermaid-svg-gj02AwvGFfHmNnZ4 span{fill:#333;color:#333;}#mermaid-svg-gj02AwvGFfHmNnZ4 .node rect,#mermaid-svg-gj02AwvGFfHmNnZ4 .node circle,#mermaid-svg-gj02AwvGFfHmNnZ4 .node ellipse,#mermaid-svg-gj02AwvGFfHmNnZ4 .node polygon,#mermaid-svg-gj02AwvGFfHmNnZ4 .node path{fill:#ECECFF;stroke:#9370DB;stroke-width:1px;}#mermaid-svg-gj02AwvGFfHmNnZ4 .rough-node .label text,#mermaid-svg-gj02AwvGFfHmNnZ4 .node .label text,#mermaid-svg-gj02AwvGFfHmNnZ4 .image-shape .label,#mermaid-svg-gj02AwvGFfHmNnZ4 .icon-shape .label{text-anchor:middle;}#mermaid-svg-gj02AwvGFfHmNnZ4 .node .katex path{fill:#000;stroke:#000;stroke-width:1px;}#mermaid-svg-gj02AwvGFfHmNnZ4 .rough-node .label,#mermaid-svg-gj02AwvGFfHmNnZ4 .node .label,#mermaid-svg-gj02AwvGFfHmNnZ4 .image-shape .label,#mermaid-svg-gj02AwvGFfHmNnZ4 .icon-shape .label{text-align:center;}#mermaid-svg-gj02AwvGFfHmNnZ4 .node.clickable{cursor:pointer;}#mermaid-svg-gj02AwvGFfHmNnZ4 .root .anchor path{fill:#333333!important;stroke-width:0;stroke:#333333;}#mermaid-svg-gj02AwvGFfHmNnZ4 .arrowheadPath{fill:#333333;}#mermaid-svg-gj02AwvGFfHmNnZ4 .edgePath .path{stroke:#333333;stroke-width:2.0px;}#mermaid-svg-gj02AwvGFfHmNnZ4 .flowchart-link{stroke:#333333;fill:none;}#mermaid-svg-gj02AwvGFfHmNnZ4 .edgeLabel{background-color:rgba(232,232,232, 0.8);text-align:center;}#mermaid-svg-gj02AwvGFfHmNnZ4 .edgeLabel p{background-color:rgba(232,232,232, 0.8);}#mermaid-svg-gj02AwvGFfHmNnZ4 .edgeLabel rect{opacity:0.5;background-color:rgba(232,232,232, 0.8);fill:rgba(232,232,232, 0.8);}#mermaid-svg-gj02AwvGFfHmNnZ4 .labelBkg{background-color:rgba(232, 232, 232, 0.5);}#mermaid-svg-gj02AwvGFfHmNnZ4 .cluster rect{fill:#ffffde;stroke:#aaaa33;stroke-width:1px;}#mermaid-svg-gj02AwvGFfHmNnZ4 .cluster text{fill:#333;}#mermaid-svg-gj02AwvGFfHmNnZ4 .cluster span{color:#333;}#mermaid-svg-gj02AwvGFfHmNnZ4 div.mermaidTooltip{position:absolute;text-align:center;max-width:200px;padding:2px;font-family:\”trebuchet ms\”,verdana,arial,sans-serif;font-size:12px;background:hsl(80, 100%, 96.2745098039%);border:1px solid #aaaa33;border-radius:2px;pointer-events:none;z-index:100;}#mermaid-svg-gj02AwvGFfHmNnZ4 .flowchartTitleText{text-anchor:middle;font-size:18px;fill:#333;}#mermaid-svg-gj02AwvGFfHmNnZ4 rect.text{fill:none;stroke-width:0;}#mermaid-svg-gj02AwvGFfHmNnZ4 .icon-shape,#mermaid-svg-gj02AwvGFfHmNnZ4 .image-shape{background-color:rgba(232,232,232, 0.8);text-align:center;}#mermaid-svg-gj02AwvGFfHmNnZ4 .icon-shape p,#mermaid-svg-gj02AwvGFfHmNnZ4 .image-shape p{background-color:rgba(232,232,232, 0.8);padding:2px;}#mermaid-svg-gj02AwvGFfHmNnZ4 .icon-shape .label rect,#mermaid-svg-gj02AwvGFfHmNnZ4 .image-shape .label rect{opacity:0.5;background-color:rgba(232,232,232, 0.8);fill:rgba(232,232,232, 0.8);}#mermaid-svg-gj02AwvGFfHmNnZ4 .label-icon{display:inline-block;height:1em;overflow:visible;vertical-align:-0.125em;}#mermaid-svg-gj02AwvGFfHmNnZ4 .node .label-icon path{fill:currentColor;stroke:revert;stroke-width:revert;}#mermaid-svg-gj02AwvGFfHmNnZ4 :root{–mermaid-font-family:\”trebuchet ms\”,verdana,arial,sans-serif;}
数据源接入
术语映射配置
查询测试与调优
报表生成与可视化
定时推送配置
持续优化迭代
- 数据源接入:将企业数据库连接到分析系统,让系统能够读取表和字段。
- 术语映射配置:将业务口语映射到具体的表和字段,让系统“听懂”业务语言。
- 查询测试与调优:用真实业务问题测试查询准确率,调整配置直到满足预期。
- 报表生成与可视化:将查询结果自动生成图表和报表。
- 定时推送配置:让报表按固定时间自动生成并推送给指定人员。
三、第一步:数据源接入
3.1 添加数据库连接
在对话式数据分析系统的管理后台中,找到“数据源管理”或“连接管理”模块,点击“添加数据源”。常见的数据源类型包括:
| MySQL | 3306 | 业务系统常见,如电商订单库 |
| PostgreSQL | 5432 | 企业级应用,如ERP、CRM |
| Oracle | 1521 | 大型企业核心系统 |
| SQL Server | 1433 | Windows生态企业 |
| InfluxDB | 8086 | 时序数据,如设备传感器 |
填写连接信息时需要特别注意账号权限。建议为分析系统单独创建一个只读账号,避免自然语言查询误触写操作。只读账号需要具备目标表的SELECT权限,以及information_schema的读取权限(用于Schema爬取)。
3.2 Schema爬取与元数据同步
连接成功后,系统会自动执行Schema爬取——读取数据库的元数据,包括表名、字段名、字段类型、主外键关系。这一过程通常需要数分钟,取决于数据库规模。
Schema爬取完成后,可以在“数据源概览”中查看识别到的表和字段。此步骤需要DBA或熟悉业务的IT人员确认爬取结果的完整性——确认关键表是否都被识别、字段名是否准确、表间关联关系是否正确。
数据源接入的整体流程如下:
#mermaid-svg-hTU5KvSeRoCxF88t{font-family:\”trebuchet ms\”,verdana,arial,sans-serif;font-size:16px;fill:#333;}@keyframes edge-animation-frame{from{stroke-dashoffset:0;}}@keyframes dash{to{stroke-dashoffset:0;}}#mermaid-svg-hTU5KvSeRoCxF88t .edge-animation-slow{stroke-dasharray:9,5!important;stroke-dashoffset:900;animation:dash 50s linear infinite;stroke-linecap:round;}#mermaid-svg-hTU5KvSeRoCxF88t .edge-animation-fast{stroke-dasharray:9,5!important;stroke-dashoffset:900;animation:dash 20s linear infinite;stroke-linecap:round;}#mermaid-svg-hTU5KvSeRoCxF88t .error-icon{fill:#552222;}#mermaid-svg-hTU5KvSeRoCxF88t .error-text{fill:#552222;stroke:#552222;}#mermaid-svg-hTU5KvSeRoCxF88t .edge-thickness-normal{stroke-width:1px;}#mermaid-svg-hTU5KvSeRoCxF88t .edge-thickness-thick{stroke-width:3.5px;}#mermaid-svg-hTU5KvSeRoCxF88t .edge-pattern-solid{stroke-dasharray:0;}#mermaid-svg-hTU5KvSeRoCxF88t .edge-thickness-invisible{stroke-width:0;fill:none;}#mermaid-svg-hTU5KvSeRoCxF88t .edge-pattern-dashed{stroke-dasharray:3;}#mermaid-svg-hTU5KvSeRoCxF88t .edge-pattern-dotted{stroke-dasharray:2;}#mermaid-svg-hTU5KvSeRoCxF88t .marker{fill:#333333;stroke:#333333;}#mermaid-svg-hTU5KvSeRoCxF88t .marker.cross{stroke:#333333;}#mermaid-svg-hTU5KvSeRoCxF88t svg{font-family:\”trebuchet ms\”,verdana,arial,sans-serif;font-size:16px;}#mermaid-svg-hTU5KvSeRoCxF88t p{margin:0;}#mermaid-svg-hTU5KvSeRoCxF88t .label{font-family:\”trebuchet ms\”,verdana,arial,sans-serif;color:#333;}#mermaid-svg-hTU5KvSeRoCxF88t .cluster-label text{fill:#333;}#mermaid-svg-hTU5KvSeRoCxF88t .cluster-label span{color:#333;}#mermaid-svg-hTU5KvSeRoCxF88t .cluster-label span p{background-color:transparent;}#mermaid-svg-hTU5KvSeRoCxF88t .label text,#mermaid-svg-hTU5KvSeRoCxF88t span{fill:#333;color:#333;}#mermaid-svg-hTU5KvSeRoCxF88t .node rect,#mermaid-svg-hTU5KvSeRoCxF88t .node circle,#mermaid-svg-hTU5KvSeRoCxF88t .node ellipse,#mermaid-svg-hTU5KvSeRoCxF88t .node polygon,#mermaid-svg-hTU5KvSeRoCxF88t .node path{fill:#ECECFF;stroke:#9370DB;stroke-width:1px;}#mermaid-svg-hTU5KvSeRoCxF88t .rough-node .label text,#mermaid-svg-hTU5KvSeRoCxF88t .node .label text,#mermaid-svg-hTU5KvSeRoCxF88t .image-shape .label,#mermaid-svg-hTU5KvSeRoCxF88t .icon-shape .label{text-anchor:middle;}#mermaid-svg-hTU5KvSeRoCxF88t .node .katex path{fill:#000;stroke:#000;stroke-width:1px;}#mermaid-svg-hTU5KvSeRoCxF88t .rough-node .label,#mermaid-svg-hTU5KvSeRoCxF88t .node .label,#mermaid-svg-hTU5KvSeRoCxF88t .image-shape .label,#mermaid-svg-hTU5KvSeRoCxF88t .icon-shape .label{text-align:center;}#mermaid-svg-hTU5KvSeRoCxF88t .node.clickable{cursor:pointer;}#mermaid-svg-hTU5KvSeRoCxF88t .root .anchor path{fill:#333333!important;stroke-width:0;stroke:#333333;}#mermaid-svg-hTU5KvSeRoCxF88t .arrowheadPath{fill:#333333;}#mermaid-svg-hTU5KvSeRoCxF88t .edgePath .path{stroke:#333333;stroke-width:2.0px;}#mermaid-svg-hTU5KvSeRoCxF88t .flowchart-link{stroke:#333333;fill:none;}#mermaid-svg-hTU5KvSeRoCxF88t .edgeLabel{background-color:rgba(232,232,232, 0.8);text-align:center;}#mermaid-svg-hTU5KvSeRoCxF88t .edgeLabel p{background-color:rgba(232,232,232, 0.8);}#mermaid-svg-hTU5KvSeRoCxF88t .edgeLabel rect{opacity:0.5;background-color:rgba(232,232,232, 0.8);fill:rgba(232,232,232, 0.8);}#mermaid-svg-hTU5KvSeRoCxF88t .labelBkg{background-color:rgba(232, 232, 232, 0.5);}#mermaid-svg-hTU5KvSeRoCxF88t .cluster rect{fill:#ffffde;stroke:#aaaa33;stroke-width:1px;}#mermaid-svg-hTU5KvSeRoCxF88t .cluster text{fill:#333;}#mermaid-svg-hTU5KvSeRoCxF88t .cluster span{color:#333;}#mermaid-svg-hTU5KvSeRoCxF88t div.mermaidTooltip{position:absolute;text-align:center;max-width:200px;padding:2px;font-family:\”trebuchet ms\”,verdana,arial,sans-serif;font-size:12px;background:hsl(80, 100%, 96.2745098039%);border:1px solid #aaaa33;border-radius:2px;pointer-events:none;z-index:100;}#mermaid-svg-hTU5KvSeRoCxF88t .flowchartTitleText{text-anchor:middle;font-size:18px;fill:#333;}#mermaid-svg-hTU5KvSeRoCxF88t rect.text{fill:none;stroke-width:0;}#mermaid-svg-hTU5KvSeRoCxF88t .icon-shape,#mermaid-svg-hTU5KvSeRoCxF88t .image-shape{background-color:rgba(232,232,232, 0.8);text-align:center;}#mermaid-svg-hTU5KvSeRoCxF88t .icon-shape p,#mermaid-svg-hTU5KvSeRoCxF88t .image-shape p{background-color:rgba(232,232,232, 0.8);padding:2px;}#mermaid-svg-hTU5KvSeRoCxF88t .icon-shape .label rect,#mermaid-svg-hTU5KvSeRoCxF88t .image-shape .label rect{opacity:0.5;background-color:rgba(232,232,232, 0.8);fill:rgba(232,232,232, 0.8);}#mermaid-svg-hTU5KvSeRoCxF88t .label-icon{display:inline-block;height:1em;overflow:visible;vertical-align:-0.125em;}#mermaid-svg-hTU5KvSeRoCxF88t .node .label-icon path{fill:currentColor;stroke:revert;stroke-width:revert;}#mermaid-svg-hTU5KvSeRoCxF88t :root{–mermaid-font-family:\”trebuchet ms\”,verdana,arial,sans-serif;}
只读账号
高权限账号
确认无误
有遗漏
管理后台添加数据源
填写连接信息
账号权限检查
连接数据库
提示改用只读账号
自动执行Schema爬取
读取表名/字段/主外键
DBA确认爬取完整性
数据源接入完成
手动补充元数据
四、第二步:业务术语映射配置
这是对话式数据分析配置中最关键、最需要花精力的环节。术语映射的质量直接决定了系统能否准确理解业务人员的口语。
4.1 什么是术语映射
业务人员在口语中使用的词汇,往往与数据库字段名存在巨大差异。例如:
| “销售额” | order_amount | sales_orders |
| “客户” | customer_name | customers |
| “华东区” | region = 'EC' | customers |
| “上个月” | order_date BETWEEN … | sales_orders |
术语映射就是将这些业务口语与数据库字段、字段值关联起来。
4.2 配置字段映射
在“术语库管理”中,为每个业务术语配置映射关系:
示例:将“销售额”映射到字段
业务术语:销售额
映射类型:字段映射
目标表:sales_orders
目标字段:order_amount
聚合方式:SUM
同义词:销售金额、营收、收入
示例:将“华东区”映射到字段值
业务术语:华东区
映射类型:字段值映射
目标表:customers
目标字段:region
目标值:EC
同义词:华东、EC、East China
4.3 配置同义词
同一个业务概念,不同人可能有不同叫法。同义词配置让系统能够理解“销售额”“销售金额”“营收”“收入”指的是同一个指标,“产线”“生产线”“制造单元”指的是同一个实体。
4.4 配置聚合规则
部分查询需要聚合计算。例如“销售额”通常不是单条记录的金额,而是订单明细中金额的求和。需要配置:
业务术语:销售额
聚合方式:SUM
分组维度:按客户、按区域、按时间
4.5 术语库维护建议
术语库不是一次配置就一劳永逸的。建议建立维护机制:新业务上线、表结构变更、员工新口语习惯出现时,及时更新映射。术语库质量直接决定查询准确率。
术语映射的配置流程如下:
#mermaid-svg-zD3O9vsMtsYJgcSF{font-family:\”trebuchet ms\”,verdana,arial,sans-serif;font-size:16px;fill:#333;}@keyframes edge-animation-frame{from{stroke-dashoffset:0;}}@keyframes dash{to{stroke-dashoffset:0;}}#mermaid-svg-zD3O9vsMtsYJgcSF .edge-animation-slow{stroke-dasharray:9,5!important;stroke-dashoffset:900;animation:dash 50s linear infinite;stroke-linecap:round;}#mermaid-svg-zD3O9vsMtsYJgcSF .edge-animation-fast{stroke-dasharray:9,5!important;stroke-dashoffset:900;animation:dash 20s linear infinite;stroke-linecap:round;}#mermaid-svg-zD3O9vsMtsYJgcSF .error-icon{fill:#552222;}#mermaid-svg-zD3O9vsMtsYJgcSF .error-text{fill:#552222;stroke:#552222;}#mermaid-svg-zD3O9vsMtsYJgcSF .edge-thickness-normal{stroke-width:1px;}#mermaid-svg-zD3O9vsMtsYJgcSF .edge-thickness-thick{stroke-width:3.5px;}#mermaid-svg-zD3O9vsMtsYJgcSF .edge-pattern-solid{stroke-dasharray:0;}#mermaid-svg-zD3O9vsMtsYJgcSF .edge-thickness-invisible{stroke-width:0;fill:none;}#mermaid-svg-zD3O9vsMtsYJgcSF .edge-pattern-dashed{stroke-dasharray:3;}#mermaid-svg-zD3O9vsMtsYJgcSF .edge-pattern-dotted{stroke-dasharray:2;}#mermaid-svg-zD3O9vsMtsYJgcSF .marker{fill:#333333;stroke:#333333;}#mermaid-svg-zD3O9vsMtsYJgcSF .marker.cross{stroke:#333333;}#mermaid-svg-zD3O9vsMtsYJgcSF svg{font-family:\”trebuchet ms\”,verdana,arial,sans-serif;font-size:16px;}#mermaid-svg-zD3O9vsMtsYJgcSF p{margin:0;}#mermaid-svg-zD3O9vsMtsYJgcSF .label{font-family:\”trebuchet ms\”,verdana,arial,sans-serif;color:#333;}#mermaid-svg-zD3O9vsMtsYJgcSF .cluster-label text{fill:#333;}#mermaid-svg-zD3O9vsMtsYJgcSF .cluster-label span{color:#333;}#mermaid-svg-zD3O9vsMtsYJgcSF .cluster-label span p{background-color:transparent;}#mermaid-svg-zD3O9vsMtsYJgcSF .label text,#mermaid-svg-zD3O9vsMtsYJgcSF span{fill:#333;color:#333;}#mermaid-svg-zD3O9vsMtsYJgcSF .node rect,#mermaid-svg-zD3O9vsMtsYJgcSF .node circle,#mermaid-svg-zD3O9vsMtsYJgcSF .node ellipse,#mermaid-svg-zD3O9vsMtsYJgcSF .node polygon,#mermaid-svg-zD3O9vsMtsYJgcSF .node path{fill:#ECECFF;stroke:#9370DB;stroke-width:1px;}#mermaid-svg-zD3O9vsMtsYJgcSF .rough-node .label text,#mermaid-svg-zD3O9vsMtsYJgcSF .node .label text,#mermaid-svg-zD3O9vsMtsYJgcSF .image-shape .label,#mermaid-svg-zD3O9vsMtsYJgcSF .icon-shape .label{text-anchor:middle;}#mermaid-svg-zD3O9vsMtsYJgcSF .node .katex path{fill:#000;stroke:#000;stroke-width:1px;}#mermaid-svg-zD3O9vsMtsYJgcSF .rough-node .label,#mermaid-svg-zD3O9vsMtsYJgcSF .node .label,#mermaid-svg-zD3O9vsMtsYJgcSF .image-shape .label,#mermaid-svg-zD3O9vsMtsYJgcSF .icon-shape .label{text-align:center;}#mermaid-svg-zD3O9vsMtsYJgcSF .node.clickable{cursor:pointer;}#mermaid-svg-zD3O9vsMtsYJgcSF .root .anchor path{fill:#333333!important;stroke-width:0;stroke:#333333;}#mermaid-svg-zD3O9vsMtsYJgcSF .arrowheadPath{fill:#333333;}#mermaid-svg-zD3O9vsMtsYJgcSF .edgePath .path{stroke:#333333;stroke-width:2.0px;}#mermaid-svg-zD3O9vsMtsYJgcSF .flowchart-link{stroke:#333333;fill:none;}#mermaid-svg-zD3O9vsMtsYJgcSF .edgeLabel{background-color:rgba(232,232,232, 0.8);text-align:center;}#mermaid-svg-zD3O9vsMtsYJgcSF .edgeLabel p{background-color:rgba(232,232,232, 0.8);}#mermaid-svg-zD3O9vsMtsYJgcSF .edgeLabel rect{opacity:0.5;background-color:rgba(232,232,232, 0.8);fill:rgba(232,232,232, 0.8);}#mermaid-svg-zD3O9vsMtsYJgcSF .labelBkg{background-color:rgba(232, 232, 232, 0.5);}#mermaid-svg-zD3O9vsMtsYJgcSF .cluster rect{fill:#ffffde;stroke:#aaaa33;stroke-width:1px;}#mermaid-svg-zD3O9vsMtsYJgcSF .cluster text{fill:#333;}#mermaid-svg-zD3O9vsMtsYJgcSF .cluster span{color:#333;}#mermaid-svg-zD3O9vsMtsYJgcSF div.mermaidTooltip{position:absolute;text-align:center;max-width:200px;padding:2px;font-family:\”trebuchet ms\”,verdana,arial,sans-serif;font-size:12px;background:hsl(80, 100%, 96.2745098039%);border:1px solid #aaaa33;border-radius:2px;pointer-events:none;z-index:100;}#mermaid-svg-zD3O9vsMtsYJgcSF .flowchartTitleText{text-anchor:middle;font-size:18px;fill:#333;}#mermaid-svg-zD3O9vsMtsYJgcSF rect.text{fill:none;stroke-width:0;}#mermaid-svg-zD3O9vsMtsYJgcSF .icon-shape,#mermaid-svg-zD3O9vsMtsYJgcSF .image-shape{background-color:rgba(232,232,232, 0.8);text-align:center;}#mermaid-svg-zD3O9vsMtsYJgcSF .icon-shape p,#mermaid-svg-zD3O9vsMtsYJgcSF .image-shape p{background-color:rgba(232,232,232, 0.8);padding:2px;}#mermaid-svg-zD3O9vsMtsYJgcSF .icon-shape .label rect,#mermaid-svg-zD3O9vsMtsYJgcSF .image-shape .label rect{opacity:0.5;background-color:rgba(232,232,232, 0.8);fill:rgba(232,232,232, 0.8);}#mermaid-svg-zD3O9vsMtsYJgcSF .label-icon{display:inline-block;height:1em;overflow:visible;vertical-align:-0.125em;}#mermaid-svg-zD3O9vsMtsYJgcSF .node .label-icon path{fill:currentColor;stroke:revert;stroke-width:revert;}#mermaid-svg-zD3O9vsMtsYJgcSF :root{–mermaid-font-family:\”trebuchet ms\”,verdana,arial,sans-serif;}
通过
不通过
收集业务口语
识别对应表和字段
配置字段映射
配置字段值映射
配置同义词
配置聚合规则
映射质量检查
术语库上线
补充/修正映射
持续维护更新
五、第三步:查询测试与调优
配置完成后,进入测试环节。这一步的目标是用真实业务问题验证查询准确率,并根据结果调优。
5.1 测试单表查询
先测试简单的单表查询,验证基础链路:
测试输入:“上个月华东区销售额最高的五个客户”
系统应返回:一张柱状图,展示五个客户的名称和销售额。
检查要点:
- 时间范围“上个月”是否正确映射
- 区域“华东区”是否正确过滤
- 排序规则是否正确(降序取前五)
- 图表类型是否合适
5.2 测试跨表查询
再测试需要跨表关联的查询:
测试输入:“最近一周哪条产线的良率波动最大”
系统应返回:趋势图或对比图,展示各产线的良率数据。
检查要点:
- 跨表关联路径是否正确
- 聚合计算是否准确
- 结果是否可解释
5.3 调优常见问题
| 查询返回空 | 术语映射错误、筛选条件过严 | 检查术语映射,放宽条件测试 |
| SQL报错 | 字段不存在、表名错误 | 检查Schema爬取和术语映射 |
| 查询超时 | 数据量过大、缺乏索引 | 增加分页保护、优化SQL |
| 结果不准确 | 同义词冲突、聚合规则错误 | 检查映射冲突、修正聚合配置 |
查询测试与调优的流程如下:
#mermaid-svg-T20VWeF385a0DdfX{font-family:\”trebuchet ms\”,verdana,arial,sans-serif;font-size:16px;fill:#333;}@keyframes edge-animation-frame{from{stroke-dashoffset:0;}}@keyframes dash{to{stroke-dashoffset:0;}}#mermaid-svg-T20VWeF385a0DdfX .edge-animation-slow{stroke-dasharray:9,5!important;stroke-dashoffset:900;animation:dash 50s linear infinite;stroke-linecap:round;}#mermaid-svg-T20VWeF385a0DdfX .edge-animation-fast{stroke-dasharray:9,5!important;stroke-dashoffset:900;animation:dash 20s linear infinite;stroke-linecap:round;}#mermaid-svg-T20VWeF385a0DdfX .error-icon{fill:#552222;}#mermaid-svg-T20VWeF385a0DdfX .error-text{fill:#552222;stroke:#552222;}#mermaid-svg-T20VWeF385a0DdfX .edge-thickness-normal{stroke-width:1px;}#mermaid-svg-T20VWeF385a0DdfX .edge-thickness-thick{stroke-width:3.5px;}#mermaid-svg-T20VWeF385a0DdfX .edge-pattern-solid{stroke-dasharray:0;}#mermaid-svg-T20VWeF385a0DdfX .edge-thickness-invisible{stroke-width:0;fill:none;}#mermaid-svg-T20VWeF385a0DdfX .edge-pattern-dashed{stroke-dasharray:3;}#mermaid-svg-T20VWeF385a0DdfX .edge-pattern-dotted{stroke-dasharray:2;}#mermaid-svg-T20VWeF385a0DdfX .marker{fill:#333333;stroke:#333333;}#mermaid-svg-T20VWeF385a0DdfX .marker.cross{stroke:#333333;}#mermaid-svg-T20VWeF385a0DdfX svg{font-family:\”trebuchet ms\”,verdana,arial,sans-serif;font-size:16px;}#mermaid-svg-T20VWeF385a0DdfX p{margin:0;}#mermaid-svg-T20VWeF385a0DdfX .label{font-family:\”trebuchet ms\”,verdana,arial,sans-serif;color:#333;}#mermaid-svg-T20VWeF385a0DdfX .cluster-label text{fill:#333;}#mermaid-svg-T20VWeF385a0DdfX .cluster-label span{color:#333;}#mermaid-svg-T20VWeF385a0DdfX .cluster-label span p{background-color:transparent;}#mermaid-svg-T20VWeF385a0DdfX .label text,#mermaid-svg-T20VWeF385a0DdfX span{fill:#333;color:#333;}#mermaid-svg-T20VWeF385a0DdfX .node rect,#mermaid-svg-T20VWeF385a0DdfX .node circle,#mermaid-svg-T20VWeF385a0DdfX .node ellipse,#mermaid-svg-T20VWeF385a0DdfX .node polygon,#mermaid-svg-T20VWeF385a0DdfX .node path{fill:#ECECFF;stroke:#9370DB;stroke-width:1px;}#mermaid-svg-T20VWeF385a0DdfX .rough-node .label text,#mermaid-svg-T20VWeF385a0DdfX .node .label text,#mermaid-svg-T20VWeF385a0DdfX .image-shape .label,#mermaid-svg-T20VWeF385a0DdfX .icon-shape .label{text-anchor:middle;}#mermaid-svg-T20VWeF385a0DdfX .node .katex path{fill:#000;stroke:#000;stroke-width:1px;}#mermaid-svg-T20VWeF385a0DdfX .rough-node .label,#mermaid-svg-T20VWeF385a0DdfX .node .label,#mermaid-svg-T20VWeF385a0DdfX .image-shape .label,#mermaid-svg-T20VWeF385a0DdfX .icon-shape .label{text-align:center;}#mermaid-svg-T20VWeF385a0DdfX .node.clickable{cursor:pointer;}#mermaid-svg-T20VWeF385a0DdfX .root .anchor path{fill:#333333!important;stroke-width:0;stroke:#333333;}#mermaid-svg-T20VWeF385a0DdfX .arrowheadPath{fill:#333333;}#mermaid-svg-T20VWeF385a0DdfX .edgePath .path{stroke:#333333;stroke-width:2.0px;}#mermaid-svg-T20VWeF385a0DdfX .flowchart-link{stroke:#333333;fill:none;}#mermaid-svg-T20VWeF385a0DdfX .edgeLabel{background-color:rgba(232,232,232, 0.8);text-align:center;}#mermaid-svg-T20VWeF385a0DdfX .edgeLabel p{background-color:rgba(232,232,232, 0.8);}#mermaid-svg-T20VWeF385a0DdfX .edgeLabel rect{opacity:0.5;background-color:rgba(232,232,232, 0.8);fill:rgba(232,232,232, 0.8);}#mermaid-svg-T20VWeF385a0DdfX .labelBkg{background-color:rgba(232, 232, 232, 0.5);}#mermaid-svg-T20VWeF385a0DdfX .cluster rect{fill:#ffffde;stroke:#aaaa33;stroke-width:1px;}#mermaid-svg-T20VWeF385a0DdfX .cluster text{fill:#333;}#mermaid-svg-T20VWeF385a0DdfX .cluster span{color:#333;}#mermaid-svg-T20VWeF385a0DdfX div.mermaidTooltip{position:absolute;text-align:center;max-width:200px;padding:2px;font-family:\”trebuchet ms\”,verdana,arial,sans-serif;font-size:12px;background:hsl(80, 100%, 96.2745098039%);border:1px solid #aaaa33;border-radius:2px;pointer-events:none;z-index:100;}#mermaid-svg-T20VWeF385a0DdfX .flowchartTitleText{text-anchor:middle;font-size:18px;fill:#333;}#mermaid-svg-T20VWeF385a0DdfX rect.text{fill:none;stroke-width:0;}#mermaid-svg-T20VWeF385a0DdfX .icon-shape,#mermaid-svg-T20VWeF385a0DdfX .image-shape{background-color:rgba(232,232,232, 0.8);text-align:center;}#mermaid-svg-T20VWeF385a0DdfX .icon-shape p,#mermaid-svg-T20VWeF385a0DdfX .image-shape p{background-color:rgba(232,232,232, 0.8);padding:2px;}#mermaid-svg-T20VWeF385a0DdfX .icon-shape .label rect,#mermaid-svg-T20VWeF385a0DdfX .image-shape .label rect{opacity:0.5;background-color:rgba(232,232,232, 0.8);fill:rgba(232,232,232, 0.8);}#mermaid-svg-T20VWeF385a0DdfX .label-icon{display:inline-block;height:1em;overflow:visible;vertical-align:-0.125em;}#mermaid-svg-T20VWeF385a0DdfX .node .label-icon path{fill:currentColor;stroke:revert;stroke-width:revert;}#mermaid-svg-T20VWeF385a0DdfX :root{–mermaid-font-family:\”trebuchet ms\”,verdana,arial,sans-serif;}
是
否
是
否
配置完成
测试单表查询
结果准确?
测试跨表查询
检查术语映射
结果准确?
查询测试通过
检查关联路径/聚合规则
进入报表生成环节
六、第四步:报表生成与可视化
查询准确率验证通过后,进入报表生成环节。对话式数据分析的报表生成有两种模式:即时生成和定时生成。
6.1 即时报表生成
用户在对话界面输入查询指令,系统即时返回可视化图表。适合临时性、探索性的数据查询。
常见的可视化图表类型:
| 柱状图 | 对比不同类别的数据 |
| 折线图 | 展示趋势变化 |
| 饼图 | 展示占比分布 |
| 表格 | 展示明细数据 |
| 地图 | 展示区域分布 |
系统根据数据特征自动选择最合适的图表类型,用户也可以手动指定。
6.2 报表模板配置
对于周期性生成的报表(日报、周报、月报),建议配置报表模板。模板中定义:
- 数据范围(时间、区域、产品线)
- 指标项(销售额、订单量、客单价)
- 图表类型(柱状图、趋势图、表格)
- 输出格式(PDF、图片、Excel、文本推送)
- 接收人(邮件、企业微信、钉钉群)
七、第五步:定时推送配置
定时推送让报表按固定时间自动生成并发送,无需人工提醒。
7.1 创建定时任务
在“任务编排”模块中创建定时任务:
任务示例:每日销售日报
| 触发条件 | 每个工作日上午9:00 |
| 查询内容 | 前一日销售额、订单量、客单价 |
| 报表格式 | 可视化图表 + 关键指标摘要 |
| 推送方式 | 邮件发送至销售主管 + 企业微信群 |
| 异常处理 | 查询失败自动重试3次,仍失败通知管理员 |
7.2 设置条件分支
部分报表需要根据数据情况执行不同操作。例如库存日报:
- 如果所有原材料库存高于安全线 → 生成常规日报
- 如果部分原材料低于安全线 → 在日报中标红,并额外邮件提醒采购主管
- 如果高价值物料低于安全线 → 立即短信通知生产总监
这种条件分支在任务编排中通过判断节点实现。
7.3 定时任务的异常处理
定时任务的异常处理包括:
- 重试机制:网络超时等可恢复性异常自动重试
- 降级方案:无法生成图表时降级为文本摘要
- 通知机制:连续失败后通知管理员
- 断点恢复:任务中断后从上次成功步骤继续
定时推送的完整流程如下:
#mermaid-svg-wHvwqBc5GopRJ2Ye{font-family:\”trebuchet ms\”,verdana,arial,sans-serif;font-size:16px;fill:#333;}@keyframes edge-animation-frame{from{stroke-dashoffset:0;}}@keyframes dash{to{stroke-dashoffset:0;}}#mermaid-svg-wHvwqBc5GopRJ2Ye .edge-animation-slow{stroke-dasharray:9,5!important;stroke-dashoffset:900;animation:dash 50s linear infinite;stroke-linecap:round;}#mermaid-svg-wHvwqBc5GopRJ2Ye .edge-animation-fast{stroke-dasharray:9,5!important;stroke-dashoffset:900;animation:dash 20s linear infinite;stroke-linecap:round;}#mermaid-svg-wHvwqBc5GopRJ2Ye .error-icon{fill:#552222;}#mermaid-svg-wHvwqBc5GopRJ2Ye .error-text{fill:#552222;stroke:#552222;}#mermaid-svg-wHvwqBc5GopRJ2Ye .edge-thickness-normal{stroke-width:1px;}#mermaid-svg-wHvwqBc5GopRJ2Ye .edge-thickness-thick{stroke-width:3.5px;}#mermaid-svg-wHvwqBc5GopRJ2Ye .edge-pattern-solid{stroke-dasharray:0;}#mermaid-svg-wHvwqBc5GopRJ2Ye .edge-thickness-invisible{stroke-width:0;fill:none;}#mermaid-svg-wHvwqBc5GopRJ2Ye .edge-pattern-dashed{stroke-dasharray:3;}#mermaid-svg-wHvwqBc5GopRJ2Ye .edge-pattern-dotted{stroke-dasharray:2;}#mermaid-svg-wHvwqBc5GopRJ2Ye .marker{fill:#333333;stroke:#333333;}#mermaid-svg-wHvwqBc5GopRJ2Ye .marker.cross{stroke:#333333;}#mermaid-svg-wHvwqBc5GopRJ2Ye svg{font-family:\”trebuchet ms\”,verdana,arial,sans-serif;font-size:16px;}#mermaid-svg-wHvwqBc5GopRJ2Ye p{margin:0;}#mermaid-svg-wHvwqBc5GopRJ2Ye .label{font-family:\”trebuchet ms\”,verdana,arial,sans-serif;color:#333;}#mermaid-svg-wHvwqBc5GopRJ2Ye .cluster-label text{fill:#333;}#mermaid-svg-wHvwqBc5GopRJ2Ye .cluster-label span{color:#333;}#mermaid-svg-wHvwqBc5GopRJ2Ye .cluster-label span p{background-color:transparent;}#mermaid-svg-wHvwqBc5GopRJ2Ye .label text,#mermaid-svg-wHvwqBc5GopRJ2Ye span{fill:#333;color:#333;}#mermaid-svg-wHvwqBc5GopRJ2Ye .node rect,#mermaid-svg-wHvwqBc5GopRJ2Ye .node circle,#mermaid-svg-wHvwqBc5GopRJ2Ye .node ellipse,#mermaid-svg-wHvwqBc5GopRJ2Ye .node polygon,#mermaid-svg-wHvwqBc5GopRJ2Ye .node path{fill:#ECECFF;stroke:#9370DB;stroke-width:1px;}#mermaid-svg-wHvwqBc5GopRJ2Ye .rough-node .label text,#mermaid-svg-wHvwqBc5GopRJ2Ye .node .label text,#mermaid-svg-wHvwqBc5GopRJ2Ye .image-shape .label,#mermaid-svg-wHvwqBc5GopRJ2Ye .icon-shape .label{text-anchor:middle;}#mermaid-svg-wHvwqBc5GopRJ2Ye .node .katex path{fill:#000;stroke:#000;stroke-width:1px;}#mermaid-svg-wHvwqBc5GopRJ2Ye .rough-node .label,#mermaid-svg-wHvwqBc5GopRJ2Ye .node .label,#mermaid-svg-wHvwqBc5GopRJ2Ye .image-shape .label,#mermaid-svg-wHvwqBc5GopRJ2Ye .icon-shape .label{text-align:center;}#mermaid-svg-wHvwqBc5GopRJ2Ye .node.clickable{cursor:pointer;}#mermaid-svg-wHvwqBc5GopRJ2Ye .root .anchor path{fill:#333333!important;stroke-width:0;stroke:#333333;}#mermaid-svg-wHvwqBc5GopRJ2Ye .arrowheadPath{fill:#333333;}#mermaid-svg-wHvwqBc5GopRJ2Ye .edgePath .path{stroke:#333333;stroke-width:2.0px;}#mermaid-svg-wHvwqBc5GopRJ2Ye .flowchart-link{stroke:#333333;fill:none;}#mermaid-svg-wHvwqBc5GopRJ2Ye .edgeLabel{background-color:rgba(232,232,232, 0.8);text-align:center;}#mermaid-svg-wHvwqBc5GopRJ2Ye .edgeLabel p{background-color:rgba(232,232,232, 0.8);}#mermaid-svg-wHvwqBc5GopRJ2Ye .edgeLabel rect{opacity:0.5;background-color:rgba(232,232,232, 0.8);fill:rgba(232,232,232, 0.8);}#mermaid-svg-wHvwqBc5GopRJ2Ye .labelBkg{background-color:rgba(232, 232, 232, 0.5);}#mermaid-svg-wHvwqBc5GopRJ2Ye .cluster rect{fill:#ffffde;stroke:#aaaa33;stroke-width:1px;}#mermaid-svg-wHvwqBc5GopRJ2Ye .cluster text{fill:#333;}#mermaid-svg-wHvwqBc5GopRJ2Ye .cluster span{color:#333;}#mermaid-svg-wHvwqBc5GopRJ2Ye div.mermaidTooltip{position:absolute;text-align:center;max-width:200px;padding:2px;font-family:\”trebuchet ms\”,verdana,arial,sans-serif;font-size:12px;background:hsl(80, 100%, 96.2745098039%);border:1px solid #aaaa33;border-radius:2px;pointer-events:none;z-index:100;}#mermaid-svg-wHvwqBc5GopRJ2Ye .flowchartTitleText{text-anchor:middle;font-size:18px;fill:#333;}#mermaid-svg-wHvwqBc5GopRJ2Ye rect.text{fill:none;stroke-width:0;}#mermaid-svg-wHvwqBc5GopRJ2Ye .icon-shape,#mermaid-svg-wHvwqBc5GopRJ2Ye .image-shape{background-color:rgba(232,232,232, 0.8);text-align:center;}#mermaid-svg-wHvwqBc5GopRJ2Ye .icon-shape p,#mermaid-svg-wHvwqBc5GopRJ2Ye .image-shape p{background-color:rgba(232,232,232, 0.8);padding:2px;}#mermaid-svg-wHvwqBc5GopRJ2Ye .icon-shape .label rect,#mermaid-svg-wHvwqBc5GopRJ2Ye .image-shape .label rect{opacity:0.5;background-color:rgba(232,232,232, 0.8);fill:rgba(232,232,232, 0.8);}#mermaid-svg-wHvwqBc5GopRJ2Ye .label-icon{display:inline-block;height:1em;overflow:visible;vertical-align:-0.125em;}#mermaid-svg-wHvwqBc5GopRJ2Ye .node .label-icon path{fill:currentColor;stroke:revert;stroke-width:revert;}#mermaid-svg-wHvwqBc5GopRJ2Ye :root{–mermaid-font-family:\”trebuchet ms\”,verdana,arial,sans-serif;}
数据正常
部分异常
严重异常
是
否
仍失败
创建定时任务
设置触发条件
配置查询内容
配置报表格式
设置推送方式
条件分支判断
生成常规报表
标红+邮件提醒
短信通知负责人
自动推送
执行成功?
任务完成
自动重试3次
通知管理员
八、常见问题排查
问题一:查询结果为空
检查生成的SQL,确认WHERE条件是否正确;在术语库中检查映射关系;直接到数据库中手动执行SQL验证数据是否存在。
问题二:SQL生成报错
检查Schema爬取完整性、术语映射的字段名是否与实际数据库一致、跨表关联是否已配置。
问题三:查询超时
检查SQL是否包含分页限制;确认聚合操作是否下推到数据源本地执行;检查数据库自身性能。
问题四:可视化图表不准确
检查聚合规则是否正确配置;确认分组维度是否合适;核对同义词映射是否存在冲突。
九、总结
对话式数据分析的落地路径可以概括为:接入数据→教AI听懂业务语言→测试调优→报表生成→定时推送。五个步骤中最关键、最需要持续投入的是术语映射配置——它决定了系统能否真正理解业务人员的口语。
对于首次落地的企业,建议从单一业务场景开始,配置好一个场景的完整链路,验证效果后再逐步扩展到更多场景。一个术语映射清晰、查询链路稳定的单场景对话式数据分析,远比十个配置粗糙的多场景查询更有实际价值。
对话式数据分析的完整落地路径如下:
#mermaid-svg-Nr635RQw4Vw4OMkS{font-family:\”trebuchet ms\”,verdana,arial,sans-serif;font-size:16px;fill:#333;}@keyframes edge-animation-frame{from{stroke-dashoffset:0;}}@keyframes dash{to{stroke-dashoffset:0;}}#mermaid-svg-Nr635RQw4Vw4OMkS .edge-animation-slow{stroke-dasharray:9,5!important;stroke-dashoffset:900;animation:dash 50s linear infinite;stroke-linecap:round;}#mermaid-svg-Nr635RQw4Vw4OMkS .edge-animation-fast{stroke-dasharray:9,5!important;stroke-dashoffset:900;animation:dash 20s linear infinite;stroke-linecap:round;}#mermaid-svg-Nr635RQw4Vw4OMkS .error-icon{fill:#552222;}#mermaid-svg-Nr635RQw4Vw4OMkS .error-text{fill:#552222;stroke:#552222;}#mermaid-svg-Nr635RQw4Vw4OMkS .edge-thickness-normal{stroke-width:1px;}#mermaid-svg-Nr635RQw4Vw4OMkS .edge-thickness-thick{stroke-width:3.5px;}#mermaid-svg-Nr635RQw4Vw4OMkS .edge-pattern-solid{stroke-dasharray:0;}#mermaid-svg-Nr635RQw4Vw4OMkS .edge-thickness-invisible{stroke-width:0;fill:none;}#mermaid-svg-Nr635RQw4Vw4OMkS .edge-pattern-dashed{stroke-dasharray:3;}#mermaid-svg-Nr635RQw4Vw4OMkS .edge-pattern-dotted{stroke-dasharray:2;}#mermaid-svg-Nr635RQw4Vw4OMkS .marker{fill:#333333;stroke:#333333;}#mermaid-svg-Nr635RQw4Vw4OMkS .marker.cross{stroke:#333333;}#mermaid-svg-Nr635RQw4Vw4OMkS svg{font-family:\”trebuchet ms\”,verdana,arial,sans-serif;font-size:16px;}#mermaid-svg-Nr635RQw4Vw4OMkS p{margin:0;}#mermaid-svg-Nr635RQw4Vw4OMkS .label{font-family:\”trebuchet ms\”,verdana,arial,sans-serif;color:#333;}#mermaid-svg-Nr635RQw4Vw4OMkS .cluster-label text{fill:#333;}#mermaid-svg-Nr635RQw4Vw4OMkS .cluster-label span{color:#333;}#mermaid-svg-Nr635RQw4Vw4OMkS .cluster-label span p{background-color:transparent;}#mermaid-svg-Nr635RQw4Vw4OMkS .label text,#mermaid-svg-Nr635RQw4Vw4OMkS span{fill:#333;color:#333;}#mermaid-svg-Nr635RQw4Vw4OMkS .node rect,#mermaid-svg-Nr635RQw4Vw4OMkS .node circle,#mermaid-svg-Nr635RQw4Vw4OMkS .node ellipse,#mermaid-svg-Nr635RQw4Vw4OMkS .node polygon,#mermaid-svg-Nr635RQw4Vw4OMkS .node path{fill:#ECECFF;stroke:#9370DB;stroke-width:1px;}#mermaid-svg-Nr635RQw4Vw4OMkS .rough-node .label text,#mermaid-svg-Nr635RQw4Vw4OMkS .node .label text,#mermaid-svg-Nr635RQw4Vw4OMkS .image-shape .label,#mermaid-svg-Nr635RQw4Vw4OMkS .icon-shape .label{text-anchor:middle;}#mermaid-svg-Nr635RQw4Vw4OMkS .node .katex path{fill:#000;stroke:#000;stroke-width:1px;}#mermaid-svg-Nr635RQw4Vw4OMkS .rough-node .label,#mermaid-svg-Nr635RQw4Vw4OMkS .node .label,#mermaid-svg-Nr635RQw4Vw4OMkS .image-shape .label,#mermaid-svg-Nr635RQw4Vw4OMkS .icon-shape .label{text-align:center;}#mermaid-svg-Nr635RQw4Vw4OMkS .node.clickable{cursor:pointer;}#mermaid-svg-Nr635RQw4Vw4OMkS .root .anchor path{fill:#333333!important;stroke-width:0;stroke:#333333;}#mermaid-svg-Nr635RQw4Vw4OMkS .arrowheadPath{fill:#333333;}#mermaid-svg-Nr635RQw4Vw4OMkS .edgePath .path{stroke:#333333;stroke-width:2.0px;}#mermaid-svg-Nr635RQw4Vw4OMkS .flowchart-link{stroke:#333333;fill:none;}#mermaid-svg-Nr635RQw4Vw4OMkS .edgeLabel{background-color:rgba(232,232,232, 0.8);text-align:center;}#mermaid-svg-Nr635RQw4Vw4OMkS .edgeLabel p{background-color:rgba(232,232,232, 0.8);}#mermaid-svg-Nr635RQw4Vw4OMkS .edgeLabel rect{opacity:0.5;background-color:rgba(232,232,232, 0.8);fill:rgba(232,232,232, 0.8);}#mermaid-svg-Nr635RQw4Vw4OMkS .labelBkg{background-color:rgba(232, 232, 232, 0.5);}#mermaid-svg-Nr635RQw4Vw4OMkS .cluster rect{fill:#ffffde;stroke:#aaaa33;stroke-width:1px;}#mermaid-svg-Nr635RQw4Vw4OMkS .cluster text{fill:#333;}#mermaid-svg-Nr635RQw4Vw4OMkS .cluster span{color:#333;}#mermaid-svg-Nr635RQw4Vw4OMkS div.mermaidTooltip{position:absolute;text-align:center;max-width:200px;padding:2px;font-family:\”trebuchet ms\”,verdana,arial,sans-serif;font-size:12px;background:hsl(80, 100%, 96.2745098039%);border:1px solid #aaaa33;border-radius:2px;pointer-events:none;z-index:100;}#mermaid-svg-Nr635RQw4Vw4OMkS .flowchartTitleText{text-anchor:middle;font-size:18px;fill:#333;}#mermaid-svg-Nr635RQw4Vw4OMkS rect.text{fill:none;stroke-width:0;}#mermaid-svg-Nr635RQw4Vw4OMkS .icon-shape,#mermaid-svg-Nr635RQw4Vw4OMkS .image-shape{background-color:rgba(232,232,232, 0.8);text-align:center;}#mermaid-svg-Nr635RQw4Vw4OMkS .icon-shape p,#mermaid-svg-Nr635RQw4Vw4OMkS .image-shape p{background-color:rgba(232,232,232, 0.8);padding:2px;}#mermaid-svg-Nr635RQw4Vw4OMkS .icon-shape .label rect,#mermaid-svg-Nr635RQw4Vw4OMkS .image-shape .label rect{opacity:0.5;background-color:rgba(232,232,232, 0.8);fill:rgba(232,232,232, 0.8);}#mermaid-svg-Nr635RQw4Vw4OMkS .label-icon{display:inline-block;height:1em;overflow:visible;vertical-align:-0.125em;}#mermaid-svg-Nr635RQw4Vw4OMkS .node .label-icon path{fill:currentColor;stroke:revert;stroke-width:revert;}#mermaid-svg-Nr635RQw4Vw4OMkS :root{–mermaid-font-family:\”trebuchet ms\”,verdana,arial,sans-serif;}
数据源接入
术语映射配置
查询测试与调优
报表生成与可视化
定时推送配置
持续优化迭代
FAQ
Q:AI帮你做报表,实际效果怎么样?
A:AI做报表的价值主要体现在三个方面:一是响应速度快——业务人员说一句话,报表即时生成,无需等IT排期;二是跨系统聚合能力强——可以同时从ERP、CRM、MES等多个系统中拉取数据并关联计算;三是自动化程度高——定时报表任务配置一次,之后每天自动生成推送。实际效果取决于术语映射配置的完善程度:配置越精细,报表越准确。建议从一个高频报表场景开始搭建,验证效果后再扩展到更多报表。
Q:对话查销售数据怎么做?
A:对话查销售数据的实现路径分为五步:接入销售相关数据库(CRM、ERP、订单库);配置业务术语映射,将“销售额”“客户”“区域”“时间”等口语映射到对应表和字段;测试自然语言查询,验证“上个月华东区销售额最高的五个客户”等指令能否准确返回结果;配置可视化报表模板,定义图表类型和输出格式;设置定时推送,让销售日报/周报自动生成并发送给销售团队。核心难点在术语映射——销售部门的口语习惯(如“大客户”“重点区域”“回款”)需要准确映射到数据库字段,才能保证查询准确率。
