如何使用 Microsoft Power BI Copilot 进行数据科学工作

data-science入门8 分钟阅读2026/7/14

上个月,我正盯着一堆乱糟糟的数据集发愁,里面装着三年的区域销售数据,而我需要做一份报告,不仅要突出季度趋势,还得找出业绩不佳的区域,并计算同比增长。按往常的套路,这就意味着我得花好几个小时写 DAX 度量值,调图表格式调到眼花,还得手动在数据里扒拉出背后的故事。纯粹是出于崩溃——外加想晚上 8 点前下班的强烈渴望——我决定认真试试用 Microsoft Power BI Copilot 来跑数据科学的工作流。

如果你习惯了从零开始手写每行代码、拖拽搭建每个图表,把控制权交给一个聊天窗口确实会感觉有点怪。但用了几周下来,我发现它与其说是个“魔法一键搞定”按钮,倒不如说是个出人意料能干的初级分析师。下面我就来聊聊我的真实用法,它哪里好用,哪里又容易掉链子。

扎心的许可证现实

在聊干货之前,咱们得先直面那个避不开的大麻烦:许可证。我第一次试水的时候,硬是在个人 Power BI 账号上浪费了一个小时,试图开启 Copilot。

Power BI 里的 Copilot 对免费许可证是不开放的。你需要 Microsoft Fabric 容量(F64 或更高版本,或者 Premium 的 P1 及以上)。如果你是个想提升技能的独立学习者,手头又没有企业许可证,那目前确实没法实操。我是因为公司的企业 Fabric 工作区才用上了它。如果你没有这种访问权限,我强烈建议你先走一遍微软免费的 PL-300 认证学习路径,把 Power BI 的基本功打扎实。等以后你用上 Copilot 时,懂底层逻辑绝对能让你在指挥它时得心应手得多。

第一步:准备语义模型

我犯的第一个错,就是以为直接把原始且乱糟糟的 CSV 扔进 Power BI,打开 Copilot 窗口说句“帮我把数据整理好并建个报告”就行了。结果 Copilot 秒变脸卡壳了。

Copilot 极其依赖干净、结构良好的语义模型。如果你的列名叫“Column1”、“Column2”,或者日期存成了文本格式,那你得到的建议基本全是废的。

我只好老老实实退回 Power Query 里去处理数据:

  • 重命名了有歧义的列(比如把“Reg”改成“RegionName”,把“Rev”改成“Revenue_USD”)。
  • 确保日期列真的是日期格式。
  • 专门建了一个用于时间智能的日期表。

等语义模型干净了,Copilot 瞬间变得巨好用。在报告视图里,我点击了功能区里的 Copilot 图标,打开侧边栏,输入:“创建一个报告页,展示 Revenue_USD 随 RegionName 和 OrderDate 变化的情况,并突出表现最好和最差的区域。”

大概 15 秒后,Copilot 就生成了一整个功能完备的页面,里面有地图可视化、簇状条形图,还有展示总收入的数据卡片。它自动应用了正确的聚合方式(收入求和),还用日期表做了时间线切片器。虽然排版没完全对齐我司的品牌标准,但几秒钟就能出一个能用的基础版,而我平时纯手工拖拽起码得花 30 分钟?这波绝对血赚。

第二步:生成 DAX 度量值

在数据科学和高级分析这块,Copilot 真正证明自己价值的地方是生成 DAX。DAX 这玩意儿看着简单,实则坑深似海;语法倒是直白,但上下文计算(CALCULATE、FILTER、ALL)绝对能让你头疼欲裂。

当时我需要一个同比收入增长的度量值。在“建模”选项卡里,我打开 Copilot 窗口输入提示词:
“写一个 DAX 度量值,计算 Revenue_USD 的同比增长百分比,忽略 RegionName 列上的任何筛选器。”

Copilot 返回了下面这段代码:

YoY Revenue Growth % = 
VAR CurrentYearRevenue = CALCULATE(SUM(Sales[Revenue_USD]), REMOVEFILTERS(Sales[RegionName]))
VAR PreviousYearRevenue = CALCULATE(
    SUM(Sales[Revenue_USD]), 
    DATEADD(Sales[OrderDate], -1, YEAR),
    REMOVEFILTERS(Sales[RegionName])
)
RETURN 
DIVIDE(CurrentYearRevenue - PreviousYearRevenue, PreviousYearRevenue, 0)

这代码完美吗?差一点点。语法完全没问题,而且它用了 REMOVEFILTERS(这可是比 ALL 更现代的最佳实践)。不过,我注意到它把 REMOVEFILTERS 用到了整个计算里。但我其实只想忽略区域筛选,保留产品类别的筛选。所以我只能手动调整 REMOVEFILTERS 的参数,让它只针对 RegionName 表,而不是无脑全局套用。

经验总结:在复杂的 DAX 上,Copilot 能帮你搞定 85% 的工作,但你必须自己懂足够多的 DAX,才能看懂、审查并微调它的输出。它是个代码生成器,绝不是数据上下文理解的替代品。

第三步:在 Fabric 笔记本中进行探索性数据分析

如果你的数据科学工作是用 Python 做的,那你可以看看 Microsoft Fabric 里的 Copilot for Data Science and Data Engineering(目前还在预览阶段)。它是直接内置在 Fabric 笔记本里的。

我把销售数据加载到了一个名为 df_sales 的 Spark DataFrame 里,并挂载到了我的 Lakehouse 上。在笔记本里,我打开了 Copilot 聊天窗。因为 Copilot 有上下文感知能力,它已经知道 df_sales 和它的表结构了。

我输入提示词:“对 df_sales 里的数据做画像分析。检查 Revenue_USD 列有没有缺失值,并找出异常值。”

Copilot 在多个单元格里生成了 Python 代码:

  1. 一个用 df_sales.summary() 获取统计分布的单元格。
  2. 一个计算收入列空值确切数量的单元格。
  3. 一个计算四分位距(IQR)并筛选异常值的单元格。

它甚至还加了注释解释 IQR 方法。我运行了这些单元格,发现有 2,314 条空收入记录,还有几个拉高平均数的巨大异常值。接着我让 Copilot:“写段代码,用中位数替换 Revenue_USD 的空值,并过滤掉 Revenue_USD 大于均值 3 个标准差的行。” 它精准生成了对应的 PySpark 代码,省得我再去 Spark 文档里翻 fillnastddev 的语法了。

大实话:局限性与实用建议

深度体验了 Copilot 之后,以下是我总结的扎心真相:

  1. “垃圾进,垃圾出”同样适用于提示词: 模糊的提示词只会换来模糊或残缺的图表。“画个销售的图”绝对会让你失望。换成“创建一个折线图,展示 SalesAmount 按 OrderDate 的总和,并按 ProductCategory 拆分”,你就能得到想要的结果。表名、列名和图表类型,一定要说得清清楚楚。
  2. 它会“幻觉”出列名: 偶尔,Copilot 给你建议的 DAX 度量值或图表里,会用到数据集里压根就不存在的列。一定要仔细检查它引用的字段名。
  3. “解释”功能被严重低估了: 如果你接手了一个别人的语义模型,里面有 50 个复杂的 DAX 度量值,你可以选中代码然后让 Copilot“解释这段 DAX”。它会一步步拆解逻辑,这绝对是逆向工程老报告的救星。
  4. 它替代不了业务知识: Copilot 确实能帮你写流失预测模型或同比计算的代码,但它根本不知道你们公司定义的“流失”是 60 天不活跃,而不是 30 天。你依然得做整个团队的大脑,提供业务逻辑,并验证统计方法。

Power BI Copilot 并不是一个全自动的数据科学家,你扔个 CSV 给它就能撒手不管。它是一个强大的加速器。通过包揽样板代码生成、初始图表脚手架搭建,以及枯燥的数据画像工作,它把你解放出来,让你专注在真正的科学上:提出正确的问题,并验证答案。

相关 Agent

H

拥抱未来

一个用于共享、训练和部署机器学习模型和数据集的平台。

了解更多 →