日期层次结构(年、季度、月、周、日)是数据分析的常用维度。Power BI数据模型中需要包括“日期表”,在这里它有着多种作用:
→日期表中至少包括一列不重复的日期格式数值,范围涵盖了数据模型中全部事实表的日期所在年度的第一天到最后一天,即XXXX年1月1日——XXXX年12月31日。→作为日期基础维度表,包括年、季度、月、天不同级别“颗粒度”的维度信息。→作为中间媒介表,链接多个与包含日期字段的事实表,以便按统一的日期维度,进行数据对比分析。→基于指定的日期表中的日期序列字段,使用DAX中的“时间智能”函数,自动完成同比、环比、迭代累计等数据计算。Power BI默认情况下在后台工作,自动识别表示日期的列,然后代表用户为模型创建日期层次结构数据。然后,用户可以在创建报表功能(如视觉对象、表、切片器等)时使用这些内置层次结构。Power
BI 通过代表用户创建隐藏表来实现此操作,然后用户可以将数据用于报表和 DAX 表达式。许多数据分析师更倾向于创建其自己的日期表,这样做也可以。在Power BI中,可以指定希望模型将其用作日期表的表,接着使用该表的日期数据创建与日期相关的视觉对象、表、度量值等。指定自己的日期表时,可以控制在模型中创建的日期层次结构,并日期表的其他操作中使用它们。最简单创建日期表的方法是,将一张包含连续日期的Excel日期表加载到数据模型中。本节案例文件中已经设计好了日期表,第一列的日期包括从2018-1-1到2020-12-31三年完整的日期。这些日期涵盖了“销售记录”表中所有订单日期。表中第二列是每个日期所对应的年份,见图 3‑19。在3.5.5,我们还会介绍使用DAX函数创建表的方法获得日期表。在将数据加载到模型的过程中,Power Query会自动完成格式的转换,但是会造成日期层次结构数据的格式错误识别,因此我们要在Power
Query编辑器中进行手动调整。步骤1:删除查询步骤——更改的类型,见图 3‑20。步骤1:标记日期表。若要设置日期表,请在“字段”窗格中选择要用作日期表的表,然后右键单击该表,在出现的菜单中选择【标记为日期表】,如图 3‑22所示。步骤2:指定日期列。指定日期表后,可以选择将该表中的某一列作为日期列。在选择【标记为日期表】后,会自动出现以下窗口,可以从窗口的下拉框中选择要用作日期表的列,见图 3‑23。后期如果要进行修改,可以通过【标记为日期表】-【日期标设置】进行调整。指定自己的日期表时,Power BI Desktop 会对该列及其数据执行以下验证,以确保数据具备以下特点:我们可以使用DAX中的时间智能函数解决这个问题。这类函数使你能够使用日历结构(包括日、月、季度和年)对数据进行操作,然后生成并比较对这些时间段的计算,从而支持商业智能分析的需求。时间智能函数主要针对企业中常见的日期维度分析指标,下面几个常见名词我们先来了解一下,见表 3‑3。时间智能函数目前包括35个,本节重点掌握TOTALYTD(年累计)、DATEADD(同比、环比计算使用)。年累计YTD = TOTALYTD([销售金额],'日期表'[日期])时间智能函数中,要使用到我们前面标记的日期表和其中的日期主键字段。步骤2:将度量值应用可视化“表”对象。可以看到图 3‑59表格中“年累计YTD”列,以年为周期滚动累计,在新的年度又开始重新累计。上月销售额=CALCULATE([销售金额],DATEADD('日期表'[日期],-1,MONTH))上面的表达式中使用了DATEADD函数,它的作用是从当前上下文中的日期开始,按指定的间隔数向未来时间或者过去时间推移,见图 3‑60。步骤2:创建“环比MOM”度量值,设置度量值数字格式为“%”。环比MOM = DIVIDE(([销售金额]-[上月销售额]),[上月销售额])这两个表达式要重点理解“当前上下文中的日期”,如果脱离上下文日期维度理解起来会有难度。下面将度量值放到可视化表对象中呈现对比的结果。以上两个案例是日常数据分析中常见需求,通过使用时间智能函数,可以非常轻松地完成分析计算。本文节选自《Power BI商务智能数据分析》。
图书推荐
▼▼▼
当当网
Office实战培训师/企业管理咨询师
北京科技大学MBA校外导师
北大纵横管理咨询公司 合伙人
微软(中国)员工技能提升项目特聘讲师
微信公众号Office职场训练营 创始人
机械工业出版社计算机分社20周年优秀作者
22年企业Office培训经验
17年企业管理咨询经验