Excel玩转自然语言查询

码林珊瑚
• 阅读 163

ChatGPT火出圈,人类被人工智能替代又成为热门话题。有人欢喜,有人忧,也有人不以为意,觉得离自己工作远着呢,比如现在是用Excel做报表,有本事你动动嘴就直接把Excel里面的数据查询出来啊。

你可别说,还真能做到动动嘴或是输入问句,用户就能从Excel查询到自己想要的数据,有视频有真相。

Excel玩转自然语言查询

上面效果是通过自然语言产品——Smartbi 对话式分析来实现的,它通过对话的方式,查询分析Excel的数据,无需在Excel中手动汇总、复杂计算。

1、对话就能分析Excel数据,探寻根因

比如,我们需要分析出“上海分部合同金额去年同比下降”的原因。先输入“去年合同金额排名前五的分部”,直接显示汇总表,发现排名第一的上海同比下降了18%。

然后继续问上海每个月的情况,看到好几个月都同比下降得厉害。接着抽查8月份的数据,从行业角度和销售的角度看销售具体情况。最后,我们使用自然语言就快速分析出了了上海分部8月份合同额下降的原因,给用户带来更大的方便性。

2、图表多种形式展示汇总数据

上述效果其实我们喂给Smartbi对话式分析的是下图明细的Excel数据,对话出来的结果是汇总后的分析数据。

Excel玩转自然语言查询

能用表格,也可以用更直观的图形来展示数据。

Excel玩转自然语言查询

3、语义场景自适应

Smartbi对话式分析有一个和其他同类产品不一样的地方:其他自然语言查询工具,需要比较完整正确的说出业务字段名称,但是Smartbi是不需要的。比如上述例子中的“广州分部合同金额排名前十销售”,系统会根据当前的语句自动识别是想要对“销售姓名”排名还是“销售分部”排名,在这句话中,系统给出的选择是使用“销售姓名”进行排序。

4、支持时间智能计算

Excel通常是写复杂公式函数来实现数据二次计算,Smartbi对话式分析不用做任何设置,根据需要选择就能自动生成计算字段,比如如同环比、同环增长率等时间智能计算,我们对比一下结果也是对的。

Excel玩转自然语言查询

实现步骤看到上面视频演示,你可能心动,但是又觉得想要实现,一定很难吧。要会什么机器学习、AI、知识图谱等各种高新技术才行。但是,实际上你只需要一个Excel文件提供数据和Smartbi 对话式分析工具进行可视化设置就可以实现。

下面我们以一个实例详细教程,一步步手把手教大家。
1、准备Excel文件
2、导入Excel数据
3、进行建模工作
4、训练模型
5、进行对话式查询

1 准备Excel文件

先准备Excel文件,这个示例里面的数据表包括合同明细表、地区表、销售表。这些表的数据结构、E-R关系图和样例数据如下:

Excel玩转自然语言查询

Excel玩转自然语言查询
图:Excel明细数据演示

PS:Excel文件业务的随机数据,请自动忽略数据不合理之处 ^_^。

2 导入Excel数据

接下来我们把Excel文件数据导入到Smartbi系统中去,这里通过Smartbi数据模型来实现。Smartbi数据模型支持多种数据来源,对于Excel的数据,直接选择Excel文件类型,然后根据指引,就可以完成导入。

Excel玩转自然语言查询

3 进行数据建模

导入Excel数据后,下面我们需要把Excel数据转换为业务用户更好理解和使用的数据模型。数据模板建模操作包括设置表关系、生成指标维度等,当然这些都是可视化界面操作,你跟着指引就能自己动手。

3.1建立表关系

这里需要把《合同表》和《销售表》、《地区表》关联起来。它们之间表关系的创建非常简单,以《合同维表》和《合同类型表》为例,如下图拖拽出关联线后,会自动弹出表关系对话框,然后根据需要设置表关系即可。以此类推,最终确认的关联关系如下图:

Excel玩转自然语言查询
图:拖好常规关系

Excel玩转自然语言查询

3.2 生成指标和维度

表关系设置好后,我们需要生成指标和维度。

1 生成指标。

通过双击就可以把事实表中的数值字段转成指标,比如双击“合同金额”。

Excel玩转自然语言查询

2 处理普通维度。

我们把需要的字段根据需要进行组合、修改别名等操作,生成普通维度,对于有些不需要的字段(ID、编码等)直接隐藏掉就可以。

Excel玩转自然语言查询
图:隐藏“合同维表”

Excel玩转自然语言查询
图:显示“合同名称”

3 创建时间维度。

通过日期字段可以一键生成时间维度。如果觉得默认的名字和格式不好,可以进行修改。

Excel玩转自然语言查询
图:创建时间层次结构

Excel玩转自然语言查询
图:选择时间层次结构

Excel玩转自然语言查询
图:生成的时间层次

Excel玩转自然语言查询
图:改名后的时间层次

3.3 自定义指标(可选)

除了合同金额,如果我们还想知道“合同个数”,我们需要对“合同编码”做唯一计数。

Excel玩转自然语言查询
图:生成“合同个数”指标

此外,对于原有指标衍生的计算指标,,在Smartbi中不用写复杂的公式,通过简单的拖拽操作即可生成。

3.4 模型抽取和验证

完成数据建模后,我们需要抽取Excel的数据。

Excel玩转自然语言查询

如果需要的话,可以验证下模型数据是否正确。使用【交互仪表盘】把用到的维度和指标都拖上来,看看是否有数据,数据是否正确。

Excel玩转自然语言查询

以上是创建数据模型完整的过程,你会发现Smartbi的数据模型建设过程非常简单,全程就是鼠标拖拽就实现了,基本不需要使用键盘,更不需要写SQL语句或者其他程序语言。

4 一键训练模型

Smartbi 对话式分析是在“数据模型”之上,再建立了一个知识模型(知识图谱)。这个知识图谱,需要有一个训练过程。不过Smartbi已经把这些工作都包装好了,我们只需要点一个训练按钮就可以实现知识图谱的训练了。

Excel玩转自然语言查询

5 进行对话式分析

完成数据准备和建模工作,我们就可以进行对话了。你可以直接在PC端打开对话窗口,根据需要输入想问的问题,系统会在对话框中把你想看的数据以图表的方式展现出来,你也可以在移动设备上安装一个APP,通过语音来进行数据分析。

如果你想免费体验一下,可以到Smartbi的demo体验中心:
登录 – 思迈特软件统一登录平台 (smartbi.com.cn)
点赞
收藏
评论区
推荐文章
Python进阶者 Python进阶者
3年前
多张excel表做连接,就比如1表有A,B,C列,2表有A,B,D列,我想把A,B,C,D合到一张表
大家好,我是皮皮。一、前言前几天在Python铂金群有个叫【水方人子】的粉丝问了一个关于excel处理的问题,这里拿出来给大家分享下,一起学习。能不能把多张excel表做连接,就比如1表有A,B,C列,2表有A,B,D列,我想把A,B,C,D合到一张表上面,可以吗,就跟数据库左连接一样?二、解决过程一开始想到的方法是Excel中的vlookup函数,确实
Wesley13 Wesley13
4年前
java简单的导出Excel文件
特点列出List中要导入到Excel的列名中文名,然后就完事了。具体的看看main()你就知道有多简单了。利用POI,本工具类可以实现Excel导出和下载,话不多说,放码过来。 packagecom.fantong.ois.wms.utils;importorg.apache.poi.hssf.usermodel.
Stella981 Stella981
4年前
PHP+excel通用成绩查询免费源码 手机网页SAE版
使用的是PHPexcel查询Excel,测试可用,可能速度偏慢(千条数据无影响)直接查询Excel数据的第一个表,修改表格后FTP上传,快速搞定,非常方便。当然LINUX可能xls文件可以倍下载,如果保密数据,请做防下载处理哦。sae直接上传代码包即可和演示一样的效果,让你可以免费实现查询系统(免费代码免费二级域名免费sae
Stella981 Stella981
4年前
Python 操作 excel
一、概述操作excel是程序员经常要遇到的场景。因为产品、运营的数据都是以这种格式存储。所以,当程序员拿到这些数据肯定要解析,甚至需要把结果输出成excel文件。下面就介绍如果用Python方面的读、写excel文件。二、openpyxlAPythonlibrarytoread/wr
Stella981 Stella981
4年前
Excel依然是一款强大的数据可视化利器~
早期的数据小魔方用户大概都知道,我最初也是从学习Excel起步的,只是学习的深入了之后,才开开慢慢的迁移到R语言。我往R语言转型并不代表自己开始放弃Excel或者觉得Excel不适合做可视化,只是想体验一下Excel外围的可视化世界是什么样子的,毕竟在这个大行业内,还活跃着太多可视化领域的佼佼者,譬如PowerBI、Tableau等。
Wesley13 Wesley13
4年前
Java如何准确判断是Excel文件
这两天逛guthub,看到一个Java操作Excel文件的项目,突然想到我们公司的WEB应用,也经常会涉及到Excel的操作,比如说很常用的Excel文件导入。那么我们是如何判断出,上传的文件确实是Excel文件呢?我翻阅了一下我们系统里面的代码,常见的写法如下:!(https://oscimg.oschina.net/osc
Stella981 Stella981
4年前
Excel数据转化为sql脚本
在实际项目开发中,有时会遇到客户让我们把大量Excel数据导入数据库的情况。这时我们就可以通过将Excel数据转化为sql脚本来批量导入数据库。1在数据前插入一列单元格,用来拼写sql语句。 具体写法:"insertintot\_student(id,name,age,class)value("&B2&",'"&C2&"',"&D2&"
Stella981 Stella981
4年前
EasyExcel写入百万级数据到多sheet
EasyExcel是什么?快速、简单避免OOM的java处理Excel工具一、项目需求    从mongo库中查询数据,导出到excel文件中。但是动态导出的excel有多少列、列名是什么、有多少sheet页都需要动态获取。所以生成的excel也必须是动态生成,不能通过注解配置对象映射。而且写入的数据量,有可能达到100W级,使用传统的PO
Stella981 Stella981
4年前
Echarts 数据视图 生成Excel的方法
一、生成Excel,两大方向:1后台生成Excel  查询数据库,使用NOPI生成Excel。2前台js生成Excel三种方式1)jquery.table2excel.js\采用,优势:兼容IE和Chrome。2)handsontable0.32.0问题:不兼容IE。3)手写js有兼容性问题。问题:浏览器兼容
Stella981 Stella981
4年前
Excel工作表保护的密码破解与清除...假装自己破解密码系列?
有一次我女朋友让我帮忙解一个excel表格的保护密码,然后~用了宏网上下载来的Excel经常会有工作表保护,也就是无法修改,妄图做任何修改的时候你就会看见这句话:您试图更改的单元格或图表位于受保护的工作表中。若要进行更改,请取消工作表保护。您可能需要输入密码。那么这篇文章可以简单的帮你解决这个问题...因为Excel中内置了VisualBasi
LeeFJ LeeFJ
3年前
Foxnic-SQL (15) —— 使用记录集导入或导出Excel
很多时候,我们需要将外部Excel表中的数据导入到数据库,或是需要将某个查询结果导出到Excel文件中,对于这种简单的操作,FoxnicSQL已经内置了ExcelReader和ExcelWriter用于处理Excel数据。本文中的示例代码均可在https://gitee.com/LeeFJ/foxnicsamples项目中找到。读取Excel到RcdSetFoxnicSQL使用ExcelReader类读取Excel中某个sheet的数据,这些数据将被读取到RcdSet,通过RcdSet可以完成数据库保存等操作。在读取Excel前需要定义Excel结构,将Excel列映射到数据库字段,如下代码所示。一旦Excel数据转换成RcdSet,开发人员就可以去做其它更多额外的数据处理。