DAX分享24: Power BI中得到最新的数据

浏览: 45

相对于事实表这种随着时间变化的表,还有一些维度表也会随着时间缓慢变化。数据仓库一般称这种随着时间缓慢变化的维度表为缓慢变化维slow change dimesion。实际生活中,比如你户口从老家迁到你所在的城市,比如你原来单身,现在结婚了,对于你的这条数据信息来说,就是随着时间流逝,有了一个缓慢的变化。对于缓慢变化维的设计处理,这个具体问题具体分析。但是对于最新时间下的数据,一般正常大家是一定关心的。本文主要是举例使用DAX或者在Power Query Editor中得到最新数据的方法。

假设在Power BI中合并了多个Customer的数据源。得到一个包含50,000条数据的Query。因为Customer ID在不同的CustomerXXX.csv里面都有出现,所以这个Query里会有多个相同的Customer ID。

如何获取到不同的Customer ID的最新数据呢?

思考:

想要在Power BI Desktop中展示不同Cusotmer ID的最新信息,有很多种方法。可以用DAX也可以在Power Query Editor中处理。

  • .如果选择用DAX,创建一个度量值Measure。获得Customer Current的信息如下:

Customer Current := CALCULATE(MIN(Customer[Customer]),FILTER(Customer,Customer[Modified Date] = MAX(Customer[Modified Date])))

Power BI中结果:

以此类推,写出不同的Customer的其他最新数据字段。

简单是简单,但是对于要显示的Customer的所有的最新数据信息字段,每一个都要写一个DAX的表达式。需要显示的最新信息字段少还好,如果多的话,真的有点不想干活了吖~~

  • 如果选择在Power Query Editor里面处理的话。主要是以下三个步骤。

    1. 在Power Query Editor这个界面,选中Customer这个Query,右键点击Duplicate。复制出一个名字为Customer(2)的Query。将Query Customer(2)修改名称为CustomerGroup。

      2. 选中CustomerGroup的Customer ID字段,右键点击Group by。

得到下面的Group By页面。默认选中Basic,设置如下:

结果如下图所示:

Customer ID已经没有重复数据了。得到的是Customer ID和Customer ID的最后修改时间。

3. 为了得到最新修改时间下的其他Customer的信息,需要通过Customer ID和MaxModifiedDate这两个关键字段来和原来的Cusotmer表进行内连接inner join. (内连接就是要求关联的两个表,你有我有大家有的才能留下,其他的都不要。)

在Home Tab,Merge Queries选项中,选择Merge Quesies as New.(也可以选择直接Merge Queries,个人良好习惯。吃过亏,复杂数据建议新建!)

在Merge页面,创建inner join。用两个字段创建关系,一个关系创建好,按住键盘的Ctrl键,创建第二个关联关系,如下图所示:

展开Customer表里面想要的内容,改Merge1的名字为Customer Current。

展开部分内容,不想保留原来数据表的名字(不勾的话,Category的名字会变成Customer.Category)。

这里修改了字段Customer的名字为Customer Current,其他的以此类推。

到这里,在Power Query Editor里的操作就结束了。在报表展示页面,直接拖拉Customer Current表里的字段就是Customer的最新信息了。

和之前创建DAX的结果是一样的。

三步操作一劳永逸。多少个关于Customer ID的最新信息都可以一步到位。当然如果需要显示的不同Customer ID的最新信息不多,写一个DAX就解决了,也可以。不过也要考虑可扩展性,后面会不会需要显示多个呢?还是要具体问题具体分析。都不难。

好了,最后出一道Power BI的题目玩一下吧。

上面的例子,下面有六个操作内容,选择正确的三个步骤。

答案显而易见:4,5,6

谢谢关注。

推荐 0
本文由 懒胖子 创作,采用 知识共享署名-相同方式共享 3.0 中国大陆许可协议 进行许可。
转载、引用前需联系作者,并署名作者且注明文章出处。
本站文章版权归原作者及原出处所有 。内容为作者个人观点, 并不代表本站赞同其观点和对其真实性负责。本站是一个个人学习交流的平台,并不用于任何商业目的,如果有任何问题,请及时联系我们,我们将根据著作权人的要求,立即更正或者删除有关内容。本站拥有对此声明的最终解释权。

0 个评论

要回复文章请先登录注册