1.引言
最近ChatGPT的出现,把人工智能又带起了一波浪潮。机器人能否替代人类又成了最近热门的话题。
今天我们推荐的一个玩法和ChatGPT有点不一样。我们的课题是“让用户可以使用自然语言从Excel查询到自己想要的数据”。
要让自然语言可以从Excel中查数据,那我们得做点准备:
需要一个Excel文档
需要一个自然语言查询工具(这里我们推荐Smartbi NLA)
1.1.体验自然语言查询
老规矩,先上效果再说其他。
【使用录屏动画】
2.Excel说明
我们先准备一个Excel,这个数据是模仿一个企业的合同签订表数据造的一份随机数据,有些数字可能不大合理。不合理的地方,请自动忽略 _。
2.1.数据结构说明
2.1.1合同明细表
2.1.2.销售表
2.1.3.地区表
2.1.4.日期维
2.2.表关系图
【表关系图】
2.3.数据示例
【Excel详情】
3.数据导入与建模
数据情况介绍完了,我们要用上述的数据,做一个数据模型,下面主要介绍下建模的过程。
3.1.Excel导入
Smartbi中的Excel数据导入,非常简单,按照向导操作就可以了。
【Excel数据导入】
3.2.建立表关系
3.2.1.第一个表关系
数据导入完成后,我们先建立第一个表关系。鼠标放到《销售表》表上面后,会出现4个小圆圈。选择一个小圆圈,拖动到《合同表》上面,就会自动弹出表关系对话框。我们选择关联字段,然后选择“一对多”关系。
【《销售表》和《合同表》关系建立】
【完整表关系】
3.3.指标、维表和事实表处理
3.3.1.生成指标
【双击“合同金额”转指标】
从事实表中,找到需要转为指标的列,双击,就会自动生成指标。
3.3.2.处理维度
默认情况下,右侧栏的每一个字段,都会默认生成一个维度。但是有些字段(ID、编码等)在正常的查询中我们并不需要,所以建议将不需要的字段隐藏。同时为了让自然语言能够更好的识别到用户语言中的指标和维度,建议在设计模型的时候将指标和维度修改成用户常用的词语。
【隐藏“合同维表”】
【显示“合同名称”】
《合同维表》中,依次显示“合同名称”、“商机类型”、“合同类型”、“行业名称”,这些是需要转成维度的,其他的字段都不需要,所以其他字段都可以隐藏掉。其他表也做同样操作,隐藏掉编码字段。
3.3.3.创建时间维度
【创建时间维度】
在右键“日期”字段,选择“创建时间层次结构”,我们可以创建包含指定层次的时间维结构。
【选择时间层次结构】
根据查询需要,我们选择了“年”、“季”、“月”、“日”,4种层次结构。
【生成的时间层次】
如果觉得默认的名字不好,可以改名。不过为了能更符合常用日期说法,还是建议改下默认名字。如果有特殊需要,也可以修改需要显示的日期格式。
【修改季度名字】
【改名后的时间层次】
3.4.自定义指标
除了合同金额,如果我们还想知道“合同个数”,我们需要对“合同编码”做唯一计数。
【生成“合同个数”指标】
3.5.模型抽取
最后,我们需要对模型进行抽取,将Excel数据加载到高速缓存库中。
【模型抽取】
【点击:抽取并建宽表】
3.6.模型验证
模型做好以后,我们需要验证下模型是否正确。这里可以使用“自助仪表盘”完成模型的验证工作。
【新建-交互式仪表盘】
【查询验证】
把用到的维度和指标都拖上来,看看是否有数据,数据是否正确。
3.7.总结
以上是创建数据模型完整的过程。是不是很简单,手痒的同学可以先试试了。
Smartbi的数据模型建设过程非常简单,全程就是鼠标拖拽就实现了,除了改名,基本不需要使用键盘。更不需要写SQL语句或者其他程序语言。对用户的要求大大降低。就算稍微有点高级的–做计算指标,对用户的要求也只是:了解该指标的计算方法,然后基本也是全程鼠标就可以实现了。总之,使用Smartbi一切都太方便了!
4.自然语言查询
4.1.训练NLA模型
Smartbi自然语言查询,是在“数据模型”之上,再建立了一个知识模型(知识图谱)。这个知识图谱,需要有一个简单的训练过程。不过Smartbi已经把这些工作都包装好了,我们只需要点一个训练按钮就可以实现知识图谱的训练了。
【训练AI图谱】
【选择需要参与训练的维度】
日期维、ID、编码、数字这些一般是不需要参与训练的,也就是只训练有意义的字符串列。
【选择对话式分析-进入自然语言查询】
4.2.查询演示
4.2.1.语义场景自适应
【排名演示场景】
Smartbi的自然语言查询和同类产品有个不一样的地方就是,通常的自然语言查询工具,需要比较完整地说出数据库中的字段名,而Smartbi的自然语言查询是不需要的,用户可以按照常规的说法去说这个词语。系统会根据当前的语言场景匹配最合适的字段。
比如上述例子中的“广州分部合同金额排名前十销售”,系统会根据当前的语句自动识别是想要对“销售姓名”排名还是“销售分部”排名,在这句话中,系统给出的选择是使用“销售姓名”进行排序。
“合同排名”也是同样的意思。这里就不详细展开了。
4.2.2.自动生成计算指标
【动态生成计算指标】
Smartbi自然语言查询,还有一个显著特点是可以自动生成一些常用的时间计算指标(不需要预先在模型中做好)。比如:同比、环比这些。
Smartbi NLA支持的时间计算指标有:
同期比
环比
同期值
前期值
同期增量
前期增量
年累计
年累同比
季累计
季累同比
月累计
月累同比
占比
4.2.3.综合分析案例
【分析案例】
这个演示主要是介绍使用自然语言分析出“广州分部合同金额去年同比下降”的原因。最开始查的是“各分部的合同情况”,然后发现广州分部同比下降了37%。
然后继续问广州分部各行业的情况,只看行业数据看不出问题,我们加上了“同比”和“占比”,发现“占比”比较大的行业(零售、教育、旅游)的合同额都大幅下滑,特别是旅游行业下滑73%。
我们再从月份的角度看,基本看到4月、5月数据都下滑比较严重,到了下半年跌幅也比较巨大。
通过上述示例发现,在做数据分析的时候使用自然语言查询,要比传统的拖拉拽方式快速很多,比手写SQL更是进步了几代。所以使用自然语言做分析,将会给业务分析人员,带来更大的方便性。