在DAX中利用MAX或MAXX函数获取最新数据

MAX函数和MAXX函数是一对具有相同运算意义的聚合函数和迭代函数。

MAX函数的定义如下:

  • 函数语法 1:
MAX(<column>)
  • 函数语法 2:
MAX(<expression1>, <expression2>)
  • 参数:
    • column(列): 需要进行求和运算的数字列或者日期列,该列可以是原始列,也可是计算列。
    • expression(表达式):任何可以返回唯一数字或者日期的表达式。
    • 返回值:数字或日期。
    • 说明:如果参数列中没有数字或者日期,MAX函数的返回值是空。包含非数字类型数据,则返回指是空。当对两个表达式的返回值进行比较时,如果某一个表达式的返回值为空,则当做数字0进行比较。如果两个表达式的计算结果都为空,则MAX返回空。

MAX函数的运算过程以及特点与SUM函数一样,都不受行上下文影响。如果想让MAX函数依据行上下文内容进行计算,就需要再其外围添加CALCULATE函数将行上下转换成筛选上下文,或者在度量值中使用MAX函数。

MAXX函数定义:

  • 函数语法:
MAXX(<table>, <expression>)
  • 参数:
    • table(表):第二部分表达式需要计算的表单。该表单可以是一个原始数据表单,也可以是一个通过函数计算过后生成的表单。
    • expression(表达式):对第一部分表单中每一行进行计算的表达式。
    • 返回值:数字或者日期。
    • 说明:MAXX函数会忽略对空值,逻辑值或者文本值的比较。

MAXX函数的运算过程和特点与SUMX一样,绝大多数情况下都在度量值当中进行使用。如果想让MAXX的计算结果受到行上下文印象,可以通过对参数表单添加过滤条件来实现。

MAX函数或MAXX函数除了运用在对数字进行比较的场景中外,其最常见的应用实例是按照某一特定要求获取最新数据。例如下图是一张客户购买产品的记录信息。由于购买时间不同,客户购买某种商品所花的价格也不尽相同。如果想知道客户最近一次购买某种产品是该产品的单价就可以利用MAX来实现。
这里写图片描述
创建一个Measure利用MAX函数获取客户最近一次消费日期:

Latest_Date = MAX(Customer[Date])

创建另外一个Measure利用最后一次消费时间获取与之对应的产品单价

LatestPrice = LOOKUPVALUE(Customer[Unit Price],Customer[Date],MAX(Customer[Date]))

这里写图片描述

能否不创建上一个LatestPrice Measure直接获得与最新销售日期对应的产品单价呢?可以试一下,去掉LatestPrice列,直接添加Unit Price。
这里写图片描述
从PowerBI的返回结果看,Unit Price做了一个汇总计算,将Customer和Product值相同的数据的Unit Price进行了求和运算。之所以有这样的结果是因为当前的Unit Price是原始计算列,添加到表中只能做简单的汇总运算,无法根据当前筛选上下文设定进行动态计算。因此,直接添加Unit Price是无法满足要求的。

  • 4
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值