PowerBI 引入时间智能

PowerBI 引入时间智能

 

简介

Power BI Desktop -是一款由微软发布的自助式商业智能工具,功能强大、易于使用。其中还可以通过微软云连多个数据源并且使用数据源来创建可视化表盘。

但是几乎所有的BI都需要展示如何随时间改变KPI。因此我将会介绍一个帮助我们使用事件元素来分析数据的关键功能。在PowerBI Desktop 中叫做“time intelligence”。应用这种时域分析法能是商业智能中基本的数据表现形式。毕竟公司想要知道的无非就是今年的业绩相比去年如何以及取得了何种进步。

“Time intelligence”将需要一个日期表,花费一定的时间去创建一个成功数据模型的核心就是这个表。然后日期表必须与主数据中随时间变化的日期字段进行关联。需要作如下几种事情:

  • YearToDate, QuarterToDate, 和MonthToDate 的计算
  • 比较之前的年、季、月
  • 回滚一段时间的聚合,比如最近三个月的累加。
  • 比较平行时间段,比如与之前一年相同的月份。

当使用随时间进行的数据分析的时候,很可能要使用DAX函数。为了更好地理解,我们将介绍如何创建日期表,然后看一下几种不同的分析时间的计算,最后加入这些类型道数据模型中。为了测试我会使用一个excel作为PowerBI Desktop 的文件数据源。

创建并且应用日期表

对于智能时间,至少需要一个包含不间断时间范围的日期表,并且开始时间的最小值是源数据中的最小日期,结束日期至少等于源数据中的最大值。实践中,需要创建一个表,开始日期是最早日期的1月1日而最大日期应该是数据源日期的上一年的12月31日。一旦你创建了这个表,就能连接数据模型中的含有时间字段的表,然后拓展时间相关的分析函数。

1.创建日期表

应用时间的前提就是创建日期表。下面步骤说明使用DAX创建表的过程:

1 – 打开PowerBI Desktop文件C:\PowerBiDesktopSamples\PowerBIDataModel.Pbix.

2 – 切换左侧的tab,选择第二个Data如下图所示。

3 – 点击左上方的Modeling按钮,然后点击新建表按钮。表达式“表=”将出现在公式栏里面,

4 – 把Table替换成DateDimension

5 – 输入DAX函数CALENDAR(“1/1/2012″,”31/12/2016”),然后回车或者对勾。前一个时间是dates表的开始时间,后一个时间是结束时间,公式栏内容:DateDimension = CALENDAR( “1/1/2012”, “31/12/2016” ).

6 – 回车后,创建了一个单列表,表中的内容就是2012-01-01到2016-12-31,所有日期。

7 – 编辑表头,改列名称为DateKey,结果如下所示:

<span>PowerBI 引入时间智能</span>

8 – 点击添加新列按钮或者右键添加新列,新列将会出现在现存列右侧。

9 – 在公示栏输入“FullYear = YEAR([DateKey])”。

10 –  再添加如下19个列公式。如下:

列标题 公式 注释
ShortYear VALUE(Right(Year([DateKey]),2)) 取后两位数字年
MonthNumberFull FORMAT([DateKey], “MM”) 月份取两位数,不足的前面补0
MonthFull FORMAT([DateKey], “MMMM”) 月份展示名称
WeekNumber WEEKNUM([DateKey]) 以下自行测试
MonthAbbr FORMAT([DateKey], “MMM”)  
WeekNumberFull FORMAT(Weeknum([DateKey]), “00”)  

DayOfMonth

DAY([DateKey])

 

DayOfMonthFull

FORMAT(Day([DateKey]),”00″)

 

DayOfWeek

WEEKDAY([DateKey])

 

DayOfWeekFull

FORMAT([DateKey],”dddd”)

 

DayOfWeekAbbr

FORMAT([DateKey],”ddd”)

 

ISODate

[FullYear] & [MonthNumberFull] & [DayOfMonthFull]

 

FullDate

[DayOfMonth] & ” ” & [MonthFull] & ” ” & [FullYear]

 

QuarterFull

“Quarter ” & ROUNDDOWN(MONTH([DateKey])/4,0)+1

 

QuarterAbbr

“Qtr ” &ROUNDDOWN(MONTH([DateKey])/4,0)+1

 

Quarter

“Q” &ROUNDDOWN(MONTH([DateKey])/4,0)+1

 

QuarterNumber

ROUNDDOWN(MONTH([DateKey])/4,0)+1

 

QuarterAndYear

DateDimension[Quarter and Year]

 

MonthAndYearAbbr

DateDimension[MonthAbbr] & ” ” & [FullYear]

 

QuarterAndYearNumber

[FullYear] & [QuarterNumber]

 

YearAndWeek

VALUE([FullYear] &[WeekNumberFull])

 

YearAndMonthNumber

Value(DateDimension[FullYear] & DateDimension[MonthNumberFull])

 

 

展示如下:

<span>PowerBI 引入时间智能</span>

 

创建所有这些表现时间的的目的就是早晚有一天会用到这些日期来展示报表、聚合指标、展示数据。任何有时间元素的表都可以按照这个新增表中的时间转换聚合来可视化数据。这里你不需要担心是否需要额外的列,因为还可以动态添加你需要的时间元素。

在日期表中引入列排序

现在需要看一下如何排序。典型的例子就是月份排序。如果你打算展示MonthFull 或者MonthAbbr 列,那么将看到月份(month)出现在轴标签里面或者按字母排序的列里面。

为了避免最后再去调整日期表,可以通过应用特定的日期元素来排列其他列,如下:

1 – 点击打算使用其他的列来排序的列(比如Monthfull) ;

2 – 点击Modeling下方的排序按钮,其他列的名称将会出现,如下图所示:

<span>PowerBI 引入时间智能</span>

3 – 选择打算按照排序的列(MonthNumber);

这里并不能立即显示出任何不同,但是当在仪表盘中使用任何你已经调整过的日期列时,它们将会根据排序列进行数据排序。

下表提供给你需要的信息来扩展你创建的数据表以便于所有的日期元素都能被正确排序。

Column Sort By Column

MonthAbbr

MonthNumber

DayOfWeekFull

DayOfWeek

DayOfWeekAbbr DayOfWeek
Quarter And Year QuarterAndYearNumber
FullDate DateKey
MonthAndYearAbbr YearAndMonthNumber
MonthAndYear YearAndMonthNumber

 

日期表技巧

当引入时间智能后,一定要遵守两个基础原则。

  • 日期范围必须是连续的。
  • 在数据模型中数据范围一定是包含所有使用的其他表中的日期。

一旦你知道你数据中的最大值和最小值日期就可以使用CALENDAR来生成日期,即使两个值在不同的表里面如下:

DateDimension = CALENDAR(MIN('Stock'[PurchaseDate]),  MAX('Invoices'[InvoiceDate]))

或者,你可能更喜欢日期维度通过全年的数据,在这种情况下,公式可以这样创建表:

DateDimension = CALENDAR(STARTOFYEAR(MIN('Stock'[PurchaseDate])), ENDOFYEAR(MAX('Invoices'[InvoiceDate])))

这个公式扩展了DAX的计算,两个计算年的公式也是极其有帮助的:

  • StartOfYear() – 这个公式得出最小的年份。
  • EndOfYear() – 这个公式得出最大的年份

注意

这种日期范围的主要优点在于随着数据源的变化自动更新。因此如果Stock 或 Invoices表数据源扩展了新的数据并且在原有日期外的,那么这个时间维度表也会自动变化来包含这部分新增数据的部分。

这里的可以给大家一个小技巧,不需要每次都去创建这个日期表,可先创建一个空的模型,里面只有日期表,结束和开始日期是手填写的,然后加入所有其他列,接下来复制这个模板文件,以后每次使用都以这个模板文件为基础创建。只需要替换手动填写的日期即可。

向数据模型中加入日期表

现在你有了一个日期表,可以与你的数据模型进行整合以便于开始应用这些智能时间。

1 – 点击关系视图的图表来展示数据模型中的表

2 – 点击管理关系按钮,对话框会出现。

3 – 点击新建按钮,创建关系。

4 – 在对话框顶部选择时间维度表。

5 – 点击DateKey列选择。

6 – 在时间维度表下面的下拉框中选择Invoice表。

7 – 再点击InvoiceDate列选择,对话库如下:

<span>PowerBI 引入时间智能</span>

8 – 点击Ok,新的表关系就建立了

9 – 点击关闭,时间维度表就与Invoice表建立了关系。

注意 为了时间智能在PowerBI中能够正确使用一定要保证日期表和数据表中的数据类型是date或者datetime。

应用时间智能

所有的准备工作都已经完成了,接下来就看如何使用DAX实现随着时间变化来计算指标。

YearToDate, QuarterToDate, 和MonthToDate 运算

首先,让我们解决一个简单但是频繁的需求:计算月累计、季度累计、和年累计的销售数字。

这个例子中三个函数是很相似的。因此我只解释第一个月累计,然后创建下面两个用复制黏贴的方式。

1 –  在数据视图中选择Invoices表,然后点击新建测量;

2 –  在公式栏用MonthSales替换Measure ;

3 – 输入这个公式MonthSales = TOTALMTD(SUM(InvoiceLines[SalePrice]),DateDimension[DateKey])。

MonthSales = TOTALMTD(SUM(InvoiceLines[SalePrice]),DateDimension[DateKey])

4 – 回车或者点击对勾完成公式

现在可以复制这个公式,生成两个新的公式用来表示季度销售和年度销售日期公式如下:

QuarterSales = TOTALQTD(SUM(InvoiceLines[SalePrice]),DateDimension[DateKey])

YearSales = TOTALYTD(SUM(InvoiceLines[SalePrice]),DateDimension[DateKey])

三个公式分别使用了Totalmtd()、Totalqtd和Totalytd来聚合时间其他参数是一样的。

结果如下:

<span>PowerBI 引入时间智能</span>

 

正缩减,每个月的销售数字随着累加到季度销售数字中,最后还要加到年度销售数字中。还要注意整个排序是按照monthfull来排序的,其实是按照MonthNumber 进行排序。

总结

在这个例子中,我使用了Invoices表来测试仅仅因为这里存储了很多指标数据,当然你也可以选择其他表来尝试这个智能时间的应用。它不仅方便了对于数据的分类和比较,更提供了一种潜在的排序和聚合。

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/119717.html原文链接:https://javaforall.net

(0)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • 工厂供电复习笔记

    工厂供电复习笔记概述什么是电网,电网怎么区分。基本概念熟练掌握。1.2电力系统接线方式和电压等级电压等级每年都考,一些基本的概念。有一张图,给一些相关参数算其他没给的参数。长线短线中性点运行方式相当重要中性点不解地,某一相不解地,为什么还能继续工作。中性点为什么经过消弧线圈接地,进位对地电流超过多少就需要。中性点为什么经小电阻接地。中性点直接接地。TN-C系统外壳带电怎么办TN-S系统TN-C-S系统市电就是这三种系统TN系统,中性线接地,有什么作用:ppt三条TT系统IT系统第二章工

    2022年9月4日
    3
  • Tasker使用企业微信api推送消息到普通微信「建议收藏」

    Tasker使用企业微信api推送消息到普通微信「建议收藏」注册https://work.weixin.qq.com/wework_admin/register_wx注册成功进入管理后台—>我的企业—>微工作台—>邀请关注*使用普通微信关注后才能接收消息应用与小程序—>创建应用*可见范围可以选整个企业企业ID我的企业—>…

    2022年5月23日
    60
  • 索引优缺点

    索引优缺点一、为什么要创建索引呢(优点)?创建索引可以大大提高系统的性能。第一,   通过创建唯一性索引,可以保证数据库表中每一行数据的唯一性。第二,   可以大大加快数据的检索速度,这也是创建索引的最主要的原因。第三,   可以加速表和表之间的连接,特别是在实现数据的参考完整性方面特别有意义。第四,   在使用分组和排序子句进行数据检索时,同样可以显著减少查询中分组和排序的时间。第五,   通过使用索引,…

    2022年5月26日
    39
  • win10企业版永久激活方法「建议收藏」

    win10企业版永久激活方法「建议收藏」win10企业版永久激活方法?win10企业版是针对企业用户推出的版本,随着win10系统的不断完善,现在越来越多的人选择升级win10,升级完系统就需要激活它。那么今天就为大家分享一下怎么永久激活w

    2022年8月3日
    4
  • Spring Boot整合RabbitMQ详细教程

    Spring Boot整合RabbitMQ详细教程1.首先我们简单了解一下消息中间件的应用场景异步处理场景说明:用户注册后,需要发注册邮件和注册短信,传统的做法有两种1.串行的方式;2.并行的方式(1)串行方式:将注册信息写入数据库后,发送注册邮件,再发送注册短信,以上三个任务全部完成后才返回给客户端。这有一个问题是,邮件,短信并不是必须的,它只是一个通知,而这种做法让客户端等待没有必要等待的东西.(2)并行方式:将注册信…

    2022年5月14日
    37
  • HDU 4920 Matrix multiplication(矩阵相乘)

    HDU 4920 Matrix multiplication(矩阵相乘)

    2022年2月7日
    35

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号