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

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

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

【正版授权,激活自己账号】: Jetbrains全家桶Ide使用,1年售后保障,每天仅需1毛

【官方授权 正版激活】: 官方授权 正版激活 支持Jetbrains家族下所有IDE 使用个人JB账号...

(0)


相关推荐

  • currentstyle 织梦_织梦arclist标签支持高亮currentstyle属性方法

    currentstyle 织梦_织梦arclist标签支持高亮currentstyle属性方法找到include/taglib/arclist.lib.php第一步:查找:$channelid=$ctag->GetAtt(‘channelid’);替换:$channelid=$ctag->GetAtt(‘channelid’);$currentstyle=$ctag->GetAtt(‘currentstyle’);第二步:查找:$ct…

  • MOS管电平转换电路学习

    MOS管电平转换电路学习一个MOSFET电平转换电路引发的问题

    2022年10月19日
  • PID控制算法总结

    PID控制算法总结当今的闭环自动控制技术都是基于反馈的概念以减少不确定性。反馈理论的要素包括三个部分:测量、比较和执行。测量关键的是被控变量的实际值,与期望值相比较,用这个偏差来纠正系统的响应,执行调节控制。在工程实际中,应用最为广泛的调节器控制规律为比例、积分、微分控制,简称PID控制,又称PID调节。一、PID含义PID是英文单词比例(Proportion),积分(Integral),微分(Di…

  • 一周时间背完四六级单词

    一周时间背完四六级单词

  • AD域安装

    AD域安装https://www.cnblogs.com/BugBrother/p/6760504.html

  • win10怎么卸载oracle_win10卸载oracle11g

    win10怎么卸载oracle_win10卸载oracle11g1.停止”服务”中所有关于Oracle数据库服务。切记:删除Oracle数据库,此文只是借鉴,因为每个人的删除数据库的时候,不可避免的出现与本文不一样的突发情况,新手删除数据库的需要勇气,大不了重装电脑系统。进入服务的方法很多,如:(1)在运行中输入services.msc,然后找到所有跟Oracle有关的服务。2.运行deinstall.bat找到你安装Oracle数据库所在的

发表回复

您的电子邮箱地址不会被公开。

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