Loading [MathJax]/jax/output/CommonHTML/config.js
前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >专栏 >PowerBI 引入时间智能

PowerBI 引入时间智能

作者头像
用户1217611
发布于 2018-01-30 08:24:33
发布于 2018-01-30 08:24:33
3.9K00
代码可运行
举报
文章被收录于专栏:文渊之博文渊之博
运行总次数:0
代码可运行

简介

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,结果如下所示:

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])

展示如下:

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

在日期表中引入列排序

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

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

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

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

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

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

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

Column

Sort By Column

MonthAbbr

MonthNumber

DayOfWeekFull

DayOfWeek

DayOfWeekAbbr

DayOfWeek

Quarter And Year

QuarterAndYearNumber

FullDate

DateKey

MonthAndYearAbbr

YearAndMonthNumber

MonthAndYear

YearAndMonthNumber

日期表技巧

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

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

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

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
DateDimension = CALENDAR(MIN('Stock'[PurchaseDate]),  MAX('Invoices'[InvoiceDate]))

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

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
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列选择,对话库如下:

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

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

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

应用时间智能

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

YearToDate, QuarterToDate, 和MonthToDate 运算

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

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

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

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

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

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
MonthSales = TOTALMTD(SUM(InvoiceLines[SalePrice]),DateDimension[DateKey])

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

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

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
QuarterSales = TOTALQTD(SUM(InvoiceLines[SalePrice]),DateDimension[DateKey])

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

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

结果如下:

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

总结

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

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2016-07-21 ,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

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

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

评论
登录后参与评论
暂无评论
推荐阅读
编辑精选文章
换一批
一步一步教你制作销售业绩分析报告
  在入门案例动态销售报告中已经带领大家入门制作PowerBI可视化报告。本文主题销售业绩分析将继续针对入门案例进行进一步优化,让大家更改的了解和掌握使用PowerBI的功能。优化内容主要有两个:   1、数据分析层面:在可视化报告中单独的一个销售业绩指标是没有意义的,只有通过对比指标才能知道销售业绩指标的好坏。对比方法主要通过同指标不同时间的对比,通过PowerBI智能时间函数,可以更加方便的计算累计销售额(YTD),同比(与去年同期对比),环比(与上月对比)等指标。   2、图表层面:使用KPI图表可以更加直观的显示业绩完成状况。通过对同比,环比格式设置可以进行分阶段显示数据。
黄昏前黎明后
2020/02/13
5.6K0
PowerBI 2019年5月更新 引入做计划预测大杀器
本月除了常规的更新以外,引入了一个非常牛的大杀器,叫做VALQ,专门用来做计划,预测,调整等,在很多领域都有广泛的运用。
BI佐罗
2019/09/23
1.3K0
PowerBI 2019年5月更新 引入做计划预测大杀器
PowerBI 通用万能日历模板,想干嘛就干嘛
我们知道在 PowerBI 中,默认的日历是非常丑陋以及有很多限制的,而自定义可视化图表中的控件也并不完美。
BI佐罗
2020/10/19
3.3K0
1.1 PowerBI数据准备-复制粘贴PowerQuery代码,生成多功能日期表
加入 PowerBI自己学 知识星球:下载源文件,边学边练;遇到问题,还可以提问交流。
PowerBI自己学_轻松
2025/02/20
1110
1.1 PowerBI数据准备-复制粘贴PowerQuery代码,生成多功能日期表
PowerBI 零基础支持上百指标多日期切换分析模板
本案例有着强大而非常实用的业务背景,几乎适用于任何规模和发展阶段的企业,而使用者却根本不需要理解什么是PowerBI或商业智能,使用者只需要自己的业务指标是什么,什么时候该被考察,以及基于常识性的点击鼠标就可以看到所需要的洞察力。
BI佐罗
2019/09/23
3.4K1
PowerBI 零基础支持上百指标多日期切换分析模板
BI技巧丨同环比计算
我们在做BI报表分析的时候,大部分指标的运算逻辑都不是特别的复杂,很多用户对于指标最基本的需求,就是可以展示当月数据,看个同环比,能看个YTD就够了。
PowerBI丨白茶
2022/07/16
9300
BI技巧丨同环比计算
大数据分析工具Power BI(六):DAX表达式简单运用
数据分析表达式 (DAX) 语言是一种公式语言,Data Analysis Expressions 数据分析表达式,简称DAX表达式,其允许用户定义自定义计算。DAX 包含一些在 Excel 公式中使用的函数,此外还包含其他设计用于处理关系数据和执行动态聚合的函数。
Lansonli
2023/03/25
4.4K0
大数据分析工具Power BI(六):DAX表达式简单运用
大数据分析工具Power BI(七):DAX使用场景及常用函数
Power BI中DAX函数非常多,功能非常强大,下面结合一些实际场景来讲解DAX一些常用的函数,这些场景包含求和、计数、相除、排序、累计、环比、同比,为了更方便后续的可视化展示数据,我们新创建可视化展示的页面,创建一个新表存储后续展示的度量值,具体操作如下:
Lansonli
2023/03/27
11K0
大数据分析工具Power BI(七):DAX使用场景及常用函数
Power BI创建日期表的几种方式概览
几乎所有的报表模型都涉及到日期和时间,因此要创建Power BI报表,日期表就必须得有。虽然最新的Power BI版本已经可以自动为每一个时间列创建日期表。
陈学谦
2020/04/14
6.8K0
Power BI创建日期表的几种方式概览
1.14 PowerBI数据准备-添加条件列,给维度添加排序列
加入 PowerBI自己学 知识星球 可以:下载源文件,边学边练;遇到问题,提问交流,有问必答。
PowerBI自己学_轻松
2025/02/21
2220
1.14 PowerBI数据准备-添加条件列,给维度添加排序列
PowerBI: 使用计算组功能计算不同度量值的同比、环比
文章背景: 在进行商业数据分析时,经常需要给不同的度量值(如销售额、销量等)计算同比、环比、YTD(年初至今)等指标,如果给每个指标都写一个以上的时间智能函数,那么会写很多重复的度量值,这些度量值的唯一不同就在于引用的基础度量值。比如:上月业绩 = CALCULATE([销售业绩],DATEADD('日期表'[日期],-1,MONTH))。
Exploring
2022/12/18
4.2K0
PowerBI: 使用计算组功能计算不同度量值的同比、环比
【DAX 系列】分析师必备,日期表模板
很多小伙伴问日期表模板,那这次分享一个截止 2020.1 为止,可以看到的相对好用的日期表模板,这也是罗叔一直使用的模板。
BI佐罗
2020/02/17
1.4K0
【DAX 系列】分析师必备,日期表模板
函数周期表丨时间智能丨值丨TOTAL函数系列
TOTAL函数系列共包含三个函数:TOTALMTD函数,TOTALQTD函数,TOTALYTD函数。
PowerBI丨白茶
2021/08/29
7780
函数周期表丨时间智能丨值丨TOTAL函数系列
销售需求丨周分析
咋说呢,白茶之前分享过关于月度环比、年同比、日环比的问题,有的小伙伴就问我说,咋不弄个周环比呢?白茶一寻思,也对!不差这一个!本期呢,白茶决定分享一下做周环比的思路。
PowerBI丨白茶
2021/09/03
8160
销售需求丨周分析
PowerBI 2019.12更新完美收官2019
终于 PowerBI 完成了在 2019 年的进化。对于 12 月来说,最大的更新就是提供了主题设置,这使得我们彻底摆脱编写一个从来都不应该编写的JSON来设置主题文件。
BI佐罗
2019/12/20
1K0
PowerBI 2019.12更新完美收官2019
PowerBI 2018年9月更新 深度解读分级聚合
PowerBI于2日前更新,为何迟迟没有介绍更新的内容呢,这次涉及到两个很重大的更新:分级聚合(微软官方并未给出这个名字)以及PowerBI的查询编辑器(PowerQuery)开始支持 智能感知(千呼万唤始出来的功能)。
BI佐罗
2019/09/23
3K0
PowerBI 2018年9月更新 深度解读分级聚合
Power BI: 日期表的创建
文章背景: 最近在学习Power BI进行报表的制作,其中有一项内容是日期表。日期表是使用时间智能函数的基础,Power BI可以为具有日期或日期/时间类型的字段自动创建一个隐藏的日期表(见下图),但不能很好地满足要求,一般需要手动创建日期表。
Exploring
2022/12/18
8.1K0
Power BI: 日期表的创建
PowerBI中的函数日期表
在PowerBI中,日期表的问题是始终都无法绕过的一个问题,首先是微软默认的日期表月份显示如下:
PowerBI丨白茶
2021/09/02
2.2K0
PowerBI中的函数日期表
PowerBI & Excel CEO 终极驾驶舱 - 第二弹 - 综合近期与历史分析
长期关注PowerBI战友联盟的战友会发现,我们现在的很多文章出现了连载的迹象。我们在此前的文章以及系统化的视频教程中已经讲解了PowerBI及DAX基础部分,我们的文章将不断基于这些基础给出非常现实的设计。每篇文章可能会以及此前的文章,并重点解决某类痛点,最后给出一个综合的标准实现。
BI佐罗
2019/09/23
1.7K0
PowerBI & Excel CEO 终极驾驶舱 - 第二弹 - 综合近期与历史分析
PowerBI DAX 计算组 基础篇
随着 PowerBI 在2020.7月的发布,迎来一个重要的功能:计算组(Caculation Group)。
BI佐罗
2020/07/21
4K0
PowerBI DAX 计算组 基础篇
相关推荐
一步一步教你制作销售业绩分析报告
更多 >
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
本文部分代码块支持一键运行,欢迎体验
本文部分代码块支持一键运行,欢迎体验