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更是进步了几代。所以使用自然语言做分析,将会给业务分析人员,带来更大的方便性。

👉感兴趣的朋友可点击链接,立即体验Smartbi智能问答

https://demo.smartbi.com.cn/smartbi/vision/test.html

Logo

助力广东及东莞地区开发者,代码托管、在线学习与竞赛、技术交流与分享、资源共享、职业发展,成为松山湖开发者首选的工作与学习平台

更多推荐