夜雨聆风学习资料网

ARTICLE · 1019150

AI BI简单做!Power BI联用Copilot简单实现带AI功能的BI

AI BI简单做!Power BI联用Copilot简单实现带AI功能的BI

过去很长一段时间,我都没有开始过AI for BI的探索,直到某一天接到一个需求,我迈出了这迟来的一步,同时也打开了新世界的大门。本文记述了我探索AI for BI的过程,全文不长,仅2000字,希望你可以看完,同时希望能对你自己的工作有所帮助。

这个需求是用Power BI做一个Dashboard,同时还要有AI功能。需求点名用Power BI。既然用Power BI,我很快就联想到同样属于微软的工具,Power BI是不是和Excel一样可以唤起Copilot呢?我很快证实了这一点,非开发用户,阅读用户在阅读非自己开发的Dashboard时也可以打开Copilot对Dashboard的数据进行提问。Power BI让AI for BI的开发变简单了,只要和平时一样做个Dashboard就可以了,我当时还不知道,还有一系列的难题在后面。

阅读用户在阅读Dashboard时可以打开Copilot对Dashboard的数据进行提问
大家肯定跃跃欲试了,想看看我在Copilot上问的问题:
“基于原始数据计算,哪个公司推动了2025年Value的增长,单位是Value,生成一个柱状图。”
为什么要这么问?或者说为什么要问的这么复杂,这是我通过几十次尝试之后,得到的结果。只有这么问问题,Copilot才能在 “谁推动了增长” 这个问题上给出正确答案。
“基于原始数据计算,哪个公司推动了2025年Value的增长,单位是Value,生成一个柱状图。”

我最早问Copilot的是一个最简单的问题:

“哪个公司推动了2025年Value的增长?”

Copilot给我的答案是Insud,单说哪家公司推动增长,Insud是正确答案,但是Copilot参考的指标并不对,它参考的是增长率,因为增长率是报告里本来就有的数字。

“哪个公司推动了2025年Value的增长?”

所以我在第二次提问时,加上了“基于原始数据计算”,这一次Copilot给的答案还是Insud,但是他这一次参考的指标是增长贡献,这就正确了吗?

“基于原始数据计算,哪个公司推动了2025年Value的增长?”

我为了验证是否正确,又让Copilot生成了一张柱状图。

“生成一个柱状图。”

看了这个柱状图之后我又发现,Copilot没有筛选单位里的Value,所以我又让它加上一个单位的筛选,筛选Value。最后才得出了正确答案。

“加上单位的筛选,筛选Value”

Power BI有一个优点,就是和Excel一样,你是可以通过 “浏览答案” 看到Copilot计算的过程,你也可以检查Copilot哪一步计算错了自己手动修改。比如刚才我就是通过“浏览答案” 发现Copilot没有筛选Value,我自己可以把单位这个字段拉到筛选器上,筛选Value,这样这张图也是正确的。

可以通过 “浏览答案” 看到Copilot计算的过程

通过Power BI联用Copilot,引出我接下来想讲的问题,AI做数据分析为什么会失败?这是今年3月Anthropic发的一篇文章,Anthropic 如何利用 Claude 实现自助式数据分析。

原文链接:https://claude.com/blog/how-anthropic-enables-self-service-data-analytics-with-claude

Anthropic很诚实地说了一件事:对于Agent做商业分析而言,复杂性主要在于数据本身的歧义性。就像刚才我问Copilot的问题,哪个公司推动了2025年Value的增长?业务问题通常很短,但正确答案背后的上下文,或者筛选条件非常多。Anthropic首现提出的观点,数据不是软件,软件开发里,问题通常是开放的,你让AI写一段代码,只要结果能跑、测试能过,很多时候就算成功。但是数据分析不一样,很多业务问题只有一个正确答案,而且这个正确答案通常只能来自唯一的正确数据和正确计算方法。最糟糕的是,错误的数据或错误的计算方法也能跑出一个看起来合理的数字,而且现在没有明确有效的方法来验证Agent计算的结果。这就是 Anthropic 文章里的一个观点:核心问题归根结底在于:Agent是否有能力将用户的问题映射到数据模型中具体且最新的实体上。

Anthropic 总结了三个最主要的错误来源:

  • 第一类问题是概念和实体对不上。用户问的是一个自然语言概念,比如就是金额增长,但是数据字段里可能有很多个看起来都相关的字段,模型的问题不是不会搜,而是搜到一堆都像答案的东西。比如我的问题是推动增长,我的表里有两个字段,一列是增长率,一列是增长贡献,Copilot会直接使用增长率这个字段。如果我在问题里没有明确的说明,Agent 就会自己猜,而且这个在一个不了解底层数据源的人看来是没有问题的。

  • 第二类问题是数据过期。数据源、业务定义和表结构始终在不断变化,Agent所掌握的知识会逐渐过时,从而开始出现看似合理、实则细微错误的答案。

  • 第三类错误是正确信息存在,但是Agent 找不到。我们都认为只要把知识文档都丢给Agent,它就可以自己找到答案,但是因为信息太散,搜索空间太大,Agent压根没找到。

而Anthropic针对这三类错误也给出了自己的解决方案,因为这篇文章后面的内容还很长,大家有兴趣可以自己去读,我现在说说我是怎么解决这些问题的。Anthropic给了一个解决方法是使用更少但是更规范的数据,当Agent搜索一个问题时,它找到的是一个唯一的标准答案。所以我在底层数据表里删掉了很多会混淆AI的列,并新建了几列计算字段,比如增长率、增长贡献,增长贡献的标题里我还写上了Growth Driver,就是让AI可以找到。

还有就是利用Power BI自带的添加AI说明的功能,我把前面问题里的计算逻辑都写在添加说明里,现在你直接问Copilot:

“哪个公司推动了2025年Value的增长?”

这个最简单的问题,Copilot就可以给出正确的答案。

Power BI自带的添加AI说明

正因为Power BI可以调用Copilot,所以在Power BI上可以简单地实现AI for BI,但还有很多问题是需要探索的。这就是关于AI for BI的一次探索,希望也可给大家一点不一样的思路。

相关学习资料