白杨商业智能工作室
#Power BI#最佳实践

告别低效问答,DAX UDF成Copilot新宠

· 白杨BI工作室

你是不是也遇到过这样的情况:业务部门用 Copilot 问数据,结果每个人问出来的数字都不一样?或者 Copilot 虽然跑出了结果,但查询慢得让人抓狂,消耗的 CU 成本还高得离谱? 最近 Power BI Copilot 迎来了一次重大更新——现在它和 M365 Copilot 深度集成,

告别低效问答,DAX UDF成Copilot新宠

你是不是也遇到过这样的情况:业务部门用 Copilot 问数据,结果每个人问出来的数字都不一样?或者 Copilot 虽然跑出了结果,但查询慢得让人抓狂,消耗的 CU 成本还高得离谱?

最近 Power BI Copilot 迎来了一次重大更新——现在它和 M365 Copilot 深度集成,不再需要 Fabric 容量,Pro 工作区也能用。这听起来是好事,但实际用起来,两个痛点立刻浮现出来:

  1. 结果对,但性能差——M365 Copilot 生成的 DAX 查询在语法上几乎不会出错,但它不一定会选择最优的查询方式,要么跑得慢,要么消耗大量 CU 成本。
  2. 同一问题,不同答案——多个用户想做同一种分析,但每个人描述方式不同,给出的指令模糊又随意,最后得到的结果可能大相径庭。

这两个问题,作为语义模型开发者,我发现最有效的解决办法就是:在模型里添加 DAX 用户定义函数(UDF)。

为什么 DAX UDF 能解决这两大痛点?

去年我写过一篇关于 DAX UDF 的文章,但当时还没意识到它在 Copilot 时代会变得如此关键。现在,如果你打算把所有的业务逻辑都集中在语义模型里,那么复杂的分析操作也应该定义在模型内——而 DAX UDF(尤其返回表的 UDF)比在 AI Instructions 里写一段文本描述,或者嵌入一段 DAX 片段要可靠得多。

就拿我常用的一个例子来说:我用英国土地注册局的房价数据建了一个语义模型,并在模型里定义了一个叫 ABC 的 DAX UDF,用来做 ABC 分析。这个函数接受三个参数:AUpperBoundary(A 组交易上限)、BUpperBoundary(B 组交易上限)、AnalysisDate(分析日期),返回一个可直接使用的表。

在 AI Instructions 中声明 UDF,效果立竿见影

我只在语义模型的 AI Instructions 里加了两段话,告诉 Copilot 这个 UDF 的存在和用法。然后,我在 M365 Copilot 里测试了一下。结果非常理想:

  • 一致性:无论用户怎么提问,Copilot 都会优先调用这个 UDF,而不是自己临时生成 DAX,结果自然一致。
  • 性能:因为 UDF 是预先优化过的,查询效率远高于 Copilot 临时生成的 DAX,CU 成本也降了下来。

如何操作?三步走

  1. 在模型中创建 DAX UDF:用 DEFINE 关键字定义一个返回表的函数,确保它封装了你想要的分析逻辑。
  2. 在 AI Instructions 中清晰描述:在语义模型的 AI Instructions 里,用自然语言说明这个 UDF 的名称、参数和用途。比如:“本模型包含一个名为 ABC 的 DAX 用户定义函数,用于对 Transactions 表进行 ABC 分析,参数包括……”
  3. 测试验证:在 M365 Copilot 中用不同方式提问,确保它总是调用 UDF,而不是自行生成。

国内用户怎么看?

其实这个思路对国内企业特别有借鉴意义——很多公司用 Copilot 做自助分析时,最怕的就是“数据口径不一致”。业务部门各说各话,IT 部门天天解释“为什么数字对不上”。DAX UDF 相当于把口径固化在模型里,Copilot 只是个执行工具,这样无论谁来问,结果都是唯一的。

当然,DAX UDF 目前还有学习门槛,但相比在 AI Instructions 里写一堆规则,它更直接、更可控。如果你正在为 Copilot 的查询质量发愁,不妨试试在模型里加几个 UDF。

相关文章

Power BI 和 Microsoft Fabric 的 Databricks ADBC 连接器正式发布

Power BI 和 Microsoft Fabric 的 Databricks ADBC 连接器正式发布

微软正在把 Power Query 连接器的底层驱动从 ODBC 迁到 ADBC,这次轮到 Databricks。适用于 Power BI 和 Microsoft Fabric 的 Databricks ADBC 连接器已正式 GA(Generally Available,正式发布)。

#技术分享#Power BI#Fabric#语义模型
Power BI 2026 年 10 月功能摘要

Power BI 2026 年 10 月功能摘要

距离上一次九月更新才过去没多久,而且当时还赶上了欧洲 Microsoft Fabric + SQL 社区大会,更新量已经不小。

#技术分享#Power BI#Fabric#Copilot
Microsoft Data Factory 的 Amazon Redshift V2 连接器

Microsoft Data Factory 的 Amazon Redshift V2 连接器

微软正在对 Amazon Redshift 连接器进行重要升级,底层驱动将从旧版切换至全新的 Amazon Redshift ODBC 2.x。

#技术分享#Power BI#Fabric
F2容量跑通完整报表方案

F2容量跑通完整报表方案

很多团队一提到 Microsoft Fabric,第一反应就是:F2 这种小容量能干嘛? 跑个 Demo 都嫌卡,更别说承载一套完整的报表解决方案了。

#技术分享#Power BI#最佳实践
近似去重反而更慢?

近似去重反而更慢?

做 DAX 性能优化的人,看到 `APPROXIMATEDISTINCTCOUNT` 这个新函数,第一反应多半是:终于有办法治 `DISTINCTCOUNT` 这个性能杀手了。 但最近一轮实测下来,结论有点打脸——在某些场景下,近似去重反而比精确去重更慢。

#Power BI#最佳实践
近似去重计数:快但准吗?

近似去重计数:快但准吗?

9 月 Power BI 更新后,Import 模式和 Direct Lake 模式的语义模型开始支持 `ApproximateDistinctCount()` 这个 DAX 函数。 我在一个 14 亿行的 Direct Lake 语义模型上做了测试,数据来自纽约出租车样本。

#Power BI#最佳实践
有问题?加企业微信 1 对 1 交流 👇
➕ 添加企业微信
备注「白杨」优先通过 · 数据洞察与智能决策
企业微信
企业微信
备注「白杨」优先通过