PBI | 如何获取最新报价日期和价格

聊一下如何通过DAX度量值来获取最新单价!~
▼ 数据源
问题:如何利用透视表来获取对应商品的最新报价日期和最新价格?
直接使用透视表,我们可以获取到最新的日期,但是最近价格却无法处理!使用我们需要借助Power Pivot的度量值来直接写一个最新价格!
步骤01 |  将数据加载到Power Pivot中
▼ 动画演示

操作说明

1、鼠标点击数据区域任意位置,点击Power Pivot,加载到数据模型,会自动创建表,点击确定,即可加载到PP模型
2、我们需要通过透视表来关键各产品的最新报价日期和最新价格,所以我们再PP中选择透视表加载即可!
步骤02 | 建立最新报价对应的日期度量值
▼ 动画演示

操作说明

1、新建度量值,点击 【Power Pivot】-【度量值】-【新建度量值】
▼度量值
最近日期:
=MAX('表2'[日期])
如果你是第一次使用PP,看到以上公式,可能有点懵,不过没有关系,其实这个跟透视表中的最大值效果也一样的!
如何理解呢?如果一句话来讲的,就是返回当前筛选上下文下的最大(最近)日期,但是这样讲,新手基本是听不懂的!
其实最白话的方式来说,比如A产品对应的日期,就是数据源中筛选A,然后返回A对应的全部日期中的最大日期!其他同理,所以说DAX属于动态公式!
以后我们会谈到DAX中最重要的知识点:行上下文和筛选上下文!
步骤03 |  最新价格度量值
▼ 动画演示

操作说明

1、最新单价度量值:
▼最新价格度量值
=SUMX(
TOPN(1,'表2','表2'[日期]),
'表2'[单价]
)
2、如何去理解?首先是内容的TOPN,我们按照日期默认降序排列,找到第一条数据,结果是一个表!值得说的是这里的SUMX实际作用并不是求和,只是获取只有一行这个表中的单价!我们使用MAXX或者MINX都是一样,因为只有一行!
使用下面度量值可以得到同样的结果,这里的TOP相当于表筛选器!
=CALCULATE(MAX('表2'[单价]),TOPN(1,'表2','表2'[日期]))
如何我们一天更新多次价格,怎么办?直接把最近一天更新的全部价格都显示出来!
模拟数据,我们在最后新增一条C产品最新日期的价格,也就是C最近一天,更新了两次价格,我们不知道那个是最新的,所以都返回!
一天更新多次价格,全部获取
▼最近一天更新多次,全部价格记录
=CALCULATE(
CONCATENATEX(VALUES('表2'[单价]),'表2'[单价],","),
TOPN(1,'表2','表2'[日期])
)

度量值说明

1、CONCATENATEX 这里主要的使用是对最近一天的更新的单价去重后,使用逗号合并到一起显示出来,这点普通的透视表是不可能完成的,这也是我们学习DAX的原因之一,对透视表进一步扩展!
2、TOPN如何排名后,对应的日期有两个相同,那么会全部返回,所以我们才可以使用CONCATENATEX迭代合并!
一天更新多次价格,获取最后一次
如果一天更新多次,你想获取最后一次的单价,怎么办呢?因为数据中没有顺序标识,我们先新增一列序号,这样便于我们找出最大序号对应的即可!
▼最近一天更新多次,获取最后一次
=CALCULATE(
MAX('表2'[单价]),
TOPN(1,'表2','表2'[日期],DESC,'表2'[序号],DESC)
)

度量值说明

1、TOPN可以按照多列排序,也可以指定排序方式,这里的DESC也就是按照日期和序号降序,然后取得第一条数据,这样满足条件的数据,只可能有一条!
2、这里的MAX和前面的SUMX等一样,并不是获取最大值,而是获取唯一一行中的单价!
DAX系列函数,大大增强了我们透视表的功能,也是我们未来学习PBI建模的基础,有兴趣的同学一定要打好基础!
DAX不同于Excel函数学习,可以从任意函数开始学习,DAX的理论学习要大于实践,如果你没有搞懂那些上下文和CALCULATE计算流等核心知识是根本无法学习DAX的!
本文由“壹伴编辑器”提供技术支持
感谢(收藏、点赞、在看、转发)
(0)

相关推荐