DAX中的表函数和值函数

学习 DAX 的过程中,会遇到各种坑,刚开始甚至无法写出一个正确的度量值,总是提示错误。其实很多原因都是不理解 DAX 函数及其参数规范造成的,在该用表的时候没有用表,该用列的时候没有用列。

常见的 DAX 函数返回一个值,比如 SUM、MAX 等,称为值函数,这些和 Excel 公式有很多相似之处,很容易理解;难以理解的是和Excel公式不同的地方:DAX 中还有很多表函数。

表函数就是返回的是一张表,如果我们用这种函数建立度量值或者新建列时,很可能会报错,比如很常见的函数 FILTER,可以作为值函数的参数存在,它无法独立建立度量值,因为FILTER函数返回的就是一张表,可以在 PowerBI 中测试一下,点击新表,输入,

= FILTER('订单','订单'[产品名称]="U盘")

返回的是所有U盘的销售订单表。

用这个表达式无法建立度量值,只有再把这个表进行聚合才可以,比如在刚才的表达式外面再套一个 COUNTROWS,计算该表的行数,就可用于度量值,这个度量值的含义是统计U盘的订单数量。

在 PowerBI 中使用 DAX 的是这三个地方,新建度量值、新建列和新表,

其中前两个都是需要返回的是一个值,如果用返回表的表达式来创建,将会出现错误提示,而新表是利用DAX创建一个表,它使用的就是返回表的表达式。

哪些函数返回值,哪些函数返回表

常见的值函数就是聚合函数,比如常用到的 SUM、COUNTROWS、AVERAGE,以及CALCULATE、SUMX等;

表函数也经常用到,除了上面看到的 FILTER,ALL 也是个表函数,前面的文章中使用过的还有 VALUES、DISTINCT、UNION、ADDCOLUMNS、SELECTCOLUMNS 等;

哪些函数的参数是列,哪些函数的参数是表

值函数返回的虽然是一个值,但其参数可能需要一张表,比如 SUMX,它的第一个参数就是一张表。

表函数返回的是表,但是参数也有可能需要的是列,比如 VALUES,它的参数是一列,返回的该列的不重复值,只有一列的表。

有些表函数的参数,既可以是值、也可以是表,比如 ALL 函数,正如前面看到的,既可以写 ALL('产品表'),也可以写成 ALL('产品表'[产品名称]),只是代表的意义是不同的。

如果某函数的参数是列,我们只能把某个表的列作为参数,而不能是整个表。如果参数是表,而我们要处理的列,怎么办?其中一种方式就是用VALUES 把列转化为表,然后作为参数。

另外 VALUES 函数虽然返回的是表,不过它返回的是只有一列的表,如果这个表仅有一行,那么它同时也是值,在 DAX 中,只有一行一列的表,就是个值,所以 VALUES 在某些情况下也可以用于度量值的创建,在使用DAX时会经常用到这个特性。

通过上面的介绍,基本就知道了很多 DAX 函数报错的原因,使用DAX函数时,一定要做到心中有数,该用表的时候用表,该用值的时候用值,那么如何掌握这些呢,这里推荐学习DAX的最佳网站:https://dax.guide

DAX GUIDE

这是 DAX 世界级大神9月份刚推出的一个简洁实用的学习网站,收录了所有的DAX函数,如果有新的 DAX 发布,它也会同步更新。

左侧是 DAX 函数的列表,点击就可以看到该函数的含义及各种使用特性,比如ALL函数,

上图中只是标记了参数的类型和返回的类型,实际上该网站的其他标记也非常重要,有的甚至还列出了使用方式和示例,特别有助于理解使用。

当然你也看到了,这是个全英文的网站,如果英文水平不是太好,推荐用Chrome 浏览器,可以直接翻译网页。

/前文回顾/

01  理解CALCULATE  | PowerBI星球

02  利用ALL和ALLSELECTED灵活计算占比

03  学会VAR,你就离掌握DAX更近了一步

04  文本处理技巧:移除和提取

(0)

相关推荐

  • Excel常用函数之IFERROR函数

    感觉前面我们在查找函数上花了好久,谁让它们被使用的频率太高呢,希望大家抽时间把前面三种查找函数的用法认真地做个对比,然后记住用法,这样绝对会胸有成竹! 今天我们继续起航,相信在学过这么多的函数之后,有 ...

  • 这个Excel查找不同的技巧,过于硬核!

    经常看到一类问题,就是关键词一样,如何找到后面对应信息不同的数据! 比如我们今天的案例,商品名称一样,但是对应的单价有的却不同,我们就是要把这些找出来了 比如下面的数据,其中有部分商品有多个单价,我们 ...

  • DAX Patterns | 关于时间的标准计算

    关于这个模式 在这个模式中,我们将向你展示如何使用标准日历计算与时间相关的计算,如年初至今.去年同期和百分比增长.使用标准日历的最大优点是:你可以依赖多个内置的时间智能函数.内置函数的设计方式是为最常 ...

  • Power BI Desktop 中的 DAX 基本概念

    在 Power BI Desktop 中应用 DAX 的基础知识 2019/10/21 M o 本文适用于刚开始使用 Power BI Desktop 的用户. 为你提供有关如何使用数据分析表达式 ( ...

  • PQ-M及函数:实现Excel中的lookup分段取值(如读取不同级别的提成比例)

    小勤:我现在有个按营业额不同等级的提成比例表,怎么用Power Query读到营业额数据表里?如下图所示: 大海:这个问题如果是在Excel里的话,用Lookup函数非常简单. 小勤:这我知道啊,但我 ...

  • Excel中一键快速创建工作表目录,不用函数,简单到没朋友!

    Excel中一键快速创建工作表目录,不用函数,简单到没朋友!

  • 高考中的函数最值问题

    来源:杨志明数学角 高三复习大全

  • Excel工作表中的求和,除了Sum函数外,还有哪些技巧?

    Excel工作表中的求和,可以说是每位Excel爱好者接触最早的内容之一了,不就是用Sum或命令求和吗--但在实际的应用中却发现,用Sum函数或命令只能完成一些简单的求和操作,对于稍微复杂的求和需求, ...

  • Excel工作表中最常用的10个函数,中文解读,动图演示

    Excel工作表中的函数是非常的繁多的,如果要全部掌握,几乎是不可能的,也没有这个必要,不用行业,不同部门对函数需求都不同,所以,只需要掌握自己常用的部分函数即可,但是,下文中的10个函数是部分行业和 ...

  • 双中值函数

    [正文在后面] 公众号"数学风景"创建于2016年4月,致力于和大家分享好文章,内容涉及到高中数学的知识体系,趣味史话,解题技巧,规律总结,高考研究等等,相信会给高中学生以及高中数 ...

  • 函数问题中的【最】值

    有时候我们会遇到这样的问题:要寻找数据区域中的最值.这时候就需要用到下面这组函数了: MIN/ MAX 语法结构:MIN(number1,number2,...) Number1:数值,或者单元格区域 ...

  • Excel工作表中,巧用If Countif函数判断内容是否重复!

    在数据的处理和分析中,经常要判断数据中是否有重复值,除了Excel工作表中的[条件格式]外,还可以使用If+Countif组合函数来判定. 一.Excel工作表中:用[条件格式]判定重复 方法: 1. ...

  • EXCEL表中随机生成手机号码(纯函数,任意号段)

    由于各种各样的原因,总有需要随机生成数据的时候,今天就介绍一个随机生成手机号码的案例,废话少说直接看图 公式如下 直接在需要随机号码的单元格中输入以下公式即可 INDEX({134,135,136,1 ...