Explore and share Fabric Notebooks to boost Power BI insights in the new community notebooks gallery.
Check it out now!Microsoft is giving away 50,000 FREE Microsoft Certification exam vouchers. Get Fabric certified for FREE! Learn more
数据由空间和时间两大维度组成。而与时间分析相关的内容,至少将占到我们60%以上的分析场景,可以说掌握住了与时间相关的分析,也就掌握住了大部分分析。而与时间相关的日期表,是我们在时间维度分析的重要支撑。
一个模型,可以忽略掉一些不必要的表,而日期表却是必不可少的,甚至于你在创建一个Power BI数据模型时,应该首先创建一张日期表,然后再加入其他数据。
在数据模型当中的事实表,大多都会有与日期相关的列,可能有一列,也可能有多列,按照我们以往的习惯,可能会使用这些列来完成与日期相关的分析,在Excel中使用数据透视表,通常我们也是这样做的。然而,在Power BI当中,并不推荐这样使用,甚至反对这样使用。
从事实表当中使用日期列进行分析和计算,无法正确的使用时间智能函数,时间智能函数的应用,在Power BI的分析中,有着举足轻重的作用,尤其是涉及到多张事实表之间的复杂计算,如果没有一张共同的日期维度表,则很难完成相关的分析。
回到我们使用的Power BI数据模型当中,你会发现Power BI自动给日期列创建了一个日期层次结构,包含了年、季度、月份、日。
这似乎看起来是可以被使用的日期表,然而我劝你千万不要这样做,Power BI为了方便新用户更方便的进行日期分析,增加了这样一个日期层次结构,其极具迷惑性。该日期来源于事实表,日期可能并不连续,且几乎不可能唯一,如果使用订单表中的下单日期作为时间智能函数的参数,将无法正确显示。
销售总额 =
SUMX(
'F_订单表',
'F_订单表'[数量] * 'F_订单表'[折扣] * RELATED( 'D_产品表'[销售单价] )
)
销售总额_去年_使用下单日期 =
CALCULATE(
[销售总额],
DATEADD( 'F_订单表'[下单日期], -1, YEAR )
)
虽然DAX并不会在语法上报错,然而当你把该度量值和年份放到画布中,视觉对象将无法正常显示结果或者直接弹窗提示。
当我使用[年]作为维度,那么该视觉对象将不报错,但是却没有任何正确的结果返回在表中。
如果我们使用产品表的[一级分类]列作为维度,该视觉对象将报错。可以在附件中查看。
点击:请参阅详细信息,将得到如下提示。错误的原因是因为日期列的日期不唯一。
在实际的使用中,事实表当中的日期列,几乎不可能唯一,如果需要正确返回结果,我们需要使用单独创建的日期列唯一的日期表来进行DAX的编写。
如果想要得到正确的结果,我们只需要将时间智能函数的参数改为日期表的日期列即可。
CALCULATE(
[销售总额],
DATEADD( 'D_日期表'[日期], -1, YEAR )
)
使用日期表并且保持日期列唯一且连续,并以此作为所有与日期相关的分析,是Power BI数据模型构建中最为规范的做法。在极特殊情况下,可能会使用多张日期表,在你真正熟悉这些操作之前,不太建议进行尝试。
如果你希望在日期表的管理上更加规范,则可以关闭“自动日期/时间”选项,依次点击“文件”-“选项和设置”-“选项”-“数据加载”,取消勾选“自动日期/时间”并点击“确定”按钮,即可关闭“自动日期/时间”。
当某个事实表当中,需要有两个甚至多个日期列与日期表做关联,可以针对分析使用频次最高的事实表日期列和日期表做实线关系,然后再创建一条或者多条虚线关系,同时配合函数“USERELATIONSHIP”进行实现。
计算公式如下:
销售总额 = SUMX( 'F_订单表', 'F_订单表'[数量] * 'F_订单表'[折扣] * RELATED( 'D_产品表'[销售单价] ) )
销售总额_按发货日期 = CALCULATE( [销售总额], USERELATIONSHIP( 'D_日期表'[日期], 'F_订单表'[发货日期] ) )
如果我们要分析与日期时间相关的内容,也可以使用时间表与事实表建立关系,对时间进行分析,可以从“0:00:00”开始到“23:59:59”结束,共计86400行。请不要在事实表当中保留“日期时间”格式的列,需要将日期列和时间列拆分为两列,并分别与日期表和时间表创建关联关系。
关于日期表,我们真正需要知道的是,日期表对于数据模型的重要性,这之后在Power BI数据模型当中使用日期表,并基于日期表去编写度量值进行分析,这就够了。在使用日期表的过程中,肯定还会遇到各种问题,只要使用日期表这个大方向不偏,遇到问题解决问题就可以让你对日期表有更深的认识和理解。
You must be a registered user to add a comment. If you've already registered, sign in. Otherwise, register and sign in.