前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >PowerBI 不同日期区间的活动逐日对比分析

PowerBI 不同日期区间的活动逐日对比分析

作者头像
BI佐罗
发布2020-08-17 15:36:07
1.8K0
发布2020-08-17 15:36:07
举报
文章被收录于专栏:PowerBI战友联盟PowerBI战友联盟

小伙伴说在运营中有很多促销活动,甚至包括双十一之类的。但每次活动的区间和长短都可能不同,希望可以对比不同日期区间的逐日对比活动细节。但在 PowerBI 中很难实现,是否可以实现呢。

今天我们就来看这个问题。

实现效果

对于这种有意义的问题,我们会提供尽量优质的解决方案的。如下:

用户选择两个活动各自的活动区间,可能是完全不同的,然后按照逐日对比每日的效果。

实现方法

这个问题其实并不复杂,首先我们先看一个更加简洁的表示,如下:

这个效果更加简洁而不改变问题的实质。这里就要考虑两个重要问题:

  • 两个日期区间的选择如何提供?
  • 如何和原始数据模型进行联立?

设计实现

我们知道一个数据模型里都会有一个日期表,而在这里场景中,必须至少需要两个日期表来提供两个日期区间的选择。问题是:

  • 一个默认数据模型日期表可以做到吗?
  • 那用两个日期表可以吗?
  • 还是用三个日期表呢?

一个默认的日期表是无法在一个页面分别扮演两个角色的。

这里为了让这个设计更加独立,所以选择根本不去实现默认日期表,而是分别为此案例场景分别创建两个日期表,如下:

代码语言:javascript
复制
Calendar.Left =
SELECTCOLUMNS( 'Calendar' , "Date" , [Date] )

Calendar.Right =
SELECTCOLUMNS( 'Calendar' , "Date" , [Date] )

接着,我们用通用的 X 轴滑杆作为序号即可,如下:

代码语言:javascript
复制
Option.X = GENERATESERIES(0, 100, 1)

这在我们的万能初学者模板里已经内置。

接着我们将需要展示的所有内容,用 DAX 计算的方式给出即可。

先给出日期的计算,如下:

代码语言:javascript
复制
Activity.Left.Date =
VAR DateBeginOfPeriod = MIN( 'Calendar.Left'[Date] )
VAR DateEndOfPeriod   = MAX( 'Calendar.Left'[Date] )
VAR Offset            = SELECTEDVALUE( 'Option.X'[Option.X] )
VAR Result            = DateBeginOfPeriod + Offset
RETURN IF( Result <= DateEndOfPeriod , Result )

非常简单。

再给出对应日期的值的计算,如下:

代码语言:javascript
复制
Activity.Left.Value =
CALCULATE( [Start:KPI] , TREATAS( { [Activity.Left.Date] } , 'Calendar'[Date] ) )

更简单。

用已经计算的日期,动态挂载回数据模型计算即可。

由于左右是完全对称的结果,类似给出右边的计算即可。

完毕。

总结

很多有意义的业务场景,通过数据模型的合理布局,以及计算逻辑的精巧设计,很快就可以得到不错的方法。

值得一提的是,这里默认将非侵入式设计作为了原则,两个日期表都是为了作图存在,所以独立创建。

本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2020-08-12,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 PowerBI战友联盟 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 实现效果
  • 实现方法
  • 设计实现
  • 总结
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档