打开APP
userphoto
未登录

开通VIP,畅享免费电子书等14项超值服

开通VIP
这个函数让开发Power BI的过程变得简单了:DAX和数据模型
userphoto

2023.09.07 北京

关注


去年,微软在DAX中更新了一批函数,其中有一个函数特别让人兴奋:

EVALUATEANDLOG

对于正常使用来说,看不到这个函数的效果。它的作用是通过一种特别的方式返回计算结果。

本文中使用的还是之前我们多次使用的Power BI Desktop数据模型案例。

比如,如果你有一个度量值,

Profit = SUM(Sales[SalesAmount]) - SUM('Sales'[TotalCost])

使用EVALUATEANDLOG函数改写这个度量值,

Profit1 = EVALUATEANDLOG(SUM(Sales[SalesAmount]) - SUM('Sales'[TotalCost]))

很简单,只要将原来的计算公式包括在这个函数中,作为其第一个参数就可以了。

添加一个视觉对象,

这两个度量值并没有什么区别,结果是一样的。

EVALUATEANDLOG的作用

这个函数的真正作用是调试DAX代码。

相信很多人在写DAX公式时都有类似的经历:写了一个复杂的度量值,但是在视觉对象中呈现时,结果错了。然后就要花费很多时间排错。逐步检查计算逻辑,甚至将全过程拆解成一个一个小的结果,逐步看中间结果。

整个过程漫长而痛苦。

这个函数就是为了开发过程中进行调试排错的。它将计算过程中返回的中间结果输出,这样,就可以逐步检查是哪一步出的问题了。

作用机制和查看方式


这个函数返回输出结果是以“事件日志记录”的形式返回的。

所以我们需要一个能够查看事件日志的工具。

微软官方推荐两种:

  • SQL Server Profiler

  • DAX Debug Output

前者是微软官方的工具,后者是一个开源的第三方工具。我个人觉得后者更简单一些。

下载地址在这里:

https://github.com/pbidax/DAXDebugOutput/releases/

打开后的界面是这样的,

点击“Connect”,

列出了所有已经打开的Power BI Desktop数据模型文件。

选择你希望调试的那个模型,点击“OK”。

在Power BI Desktop中执行一个查询,比如常见一个视觉对象,

切换到DAX Debug Output窗口中,

左侧上边的窗口中列出了各种事件,其中第3,4条类型是DAXEvaluationLog,选中第3条,

右侧窗口就列出了函数EVALUATEANDLOG的返回结果,这是一个JSON串,其中的数据部分展示了这次计算中每个输入值对应的度量值计算结果。

而且这个结果以表格的形式显示在下面的面板中,更容易查看。

这跟视觉对象中展示的不是一样吗?

你可能会有疑问:这个视觉对象中的结果不是一样吗?直接看视觉对象的结果就可以了啊。

确实是这样的。

但是使用这个函数可以只展示其中一部分的内容。

将上面的度量值修改一下:

Profit2 = EVALUATEANDLOG(SUM(Sales[SalesAmount])) - SUM('Sales'[TotalCost])

这次,只有其中的第一个销售额的合计是被记录的。

可以看到,这里只是返回了整个公式中我们关心的那一部分的计算结果。

其他

这个函数的使用并不复杂。但是对于那些需要写复杂的DAX公式的场景来说,可以说是非常重要:你可以将那些你怀疑逻辑不太正确的计算都放在这个函数中,然后查看其输出结果,从而更加容易发现问题所在。

不过,使用这个函数会对性能造成一定影响。所以,在排除错误后,记得在最终的公式中去掉这个函数。

最后,这个函数只能用于Power BI Desktop中。

本站仅提供存储服务,所有内容均由用户发布,如发现有害或侵权内容,请点击举报
打开APP,阅读全文并永久保存 查看更多类似文章
猜你喜欢
类似文章
【热】打开小程序,算一算2024你的财运
这应该是DAX中最重要的函数了:Calculate - Power Excel
如何设置Power BI图表的默认值?
DAX查询进阶:驾驶DAX Studio
【Power BI】在 Power BI 中设计数据模型创建日期表
硬件配置和环境要求
PP-DAX入门:无动态,不智能——谈谈DAX函数的计算环境(筛选上下文)问题
更多类似文章 >>
生活服务
热点新闻
分享 收藏 导长图 关注 下载文章
绑定账号成功
后续可登录账号畅享VIP特权!
如果VIP功能使用有故障,
可点击这里联系客服!

联系客服