专栏首页PowerBI战友联盟【DAX 系列】分析师必备,日期表模板

【DAX 系列】分析师必备,日期表模板

很多小伙伴问日期表模板,那这次分享一个截止 2020.1 为止,可以看到的相对好用的日期表模板,这也是罗叔一直使用的模板。

日期表模板

DAX 如下:

Model.DatesTemplate =
// 模板函数
// 构造日期表的方法
// 本方法基于数据模型中最大的表

VAR BeginDate   = MINX( { MIN( 'Model_Order'[订单日期] ) , MIN( 'Model_Order'[发货日期] ) } , [Value] )  // 根据实际修改
VAR EndDate     = MAXX( { MAX( 'Model_Order'[订单日期] ) , MAX( 'Model_Order'[发货日期] ) } , [Value] )  // 根据实际修改

// 生成日期表,以下内容无需修改

RETURN
ADDCOLUMNS(
    CALENDAR(
        DATE( YEAR( BeginDate ) ,   1  ,    1  ) , // 开始日期
        DATE( YEAR( EndDate ) ,     12 ,    31 )   // 结束日期
    ),
    "Year" , YEAR( [Date] ) ,
    "Quarter" , QUARTER( [Date] ) ,
    "YearQuarter" , YEAR( [Date] ) * 10 + QUARTER( [Date] ) ,
    "Month" , MONTH( [Date] ) ,
    "YearMonth" , YEAR( [Date] ) * 100 + MONTH( [Date] ) ,
    "Week" , WEEKNUM( [Date] , 2 ) ,
    "YearWeek" , YEAR( [Date] ) * 100 + WEEKNUM( [Date] , 2 ) ,
    "Weekday" , WEEKDAY( [Date] , 2 ) ,
    "Day" , DAY( [Date] ) ,
    "DayInWeek" , WEEKDAY( [Date] , 2 ) // 周1 = 1 , ... ,周日 = 7
)

创建日期表模板,复制上述所有内容,进入 PowerBI,点击【新建表】,粘贴后回车即可。

使用方法

接着 罗叔 给你一个独门使用方法,请记住刚刚的【日期表】是【日期表模板】,而不是日期表,区别在于哪里呢?

考虑到未来,有可能你会有多处日期表的需求,因此我们需要一个模板原型。

我们正式建立日期表,在 PowerBI 中点击【新建表】,如下:

Model_Calender = 'Model.DatesTemplate'

请看,这里的 Model_Calendar 才是真正的日期表。如果你要问为什么要间接的来一步,不太重要,有点偏技术,不特意去解释了,你这么用就对了。

更重要的是,请注意这两行语句:

VAR BeginDate   = MINX( { MIN( 'Model_Order'[订单日期] ) , MIN( 'Model_Order'[发货日期] ) } , [Value] )  // 根据实际修改
VAR EndDate     = MAXX( { MAX( 'Model_Order'[订单日期] ) , MAX( 'Model_Order'[发货日期] ) } , [Value] )  // 根据实际修改

在你的一堆表里,可能日期表的日期范围需要覆盖很多表,那么请照葫芦画瓢地使用上面的套路来修改刚刚的模板即可。

日期表最佳实践

在 PowerBI 中,如果您正涉及和日期有关的任何计算,请严格遵守以下规则:

  • 如果开始写第一个 DAX 公式,就遵守此约定。
  • 禁用系统日期表。 (【文件】【选项】【加载】取消勾选【自动时间智能】)
  • 分析随日期的变化,永远拖拽日期表中的字段。
  • 如果有多个日期,也优先使用一个全局日期表,建立虚线关系。
  • 日期表的日期列必须用日期格式(2020/01/01),而不是数字类型(20200101)。
  • 没有任何其他要求了。

请注意,在使用以上的日期表模板后,并遵守这里的规则,你在使用日期智能函数或其他和日期有关的计算就可以最大限度地躲过坑坑洼洼的地方。

附加

面试题:

在 PowerBI 中使用日期表时,什么时候必须设置日期表为日期表,如下:

虽然这句话读起来很怪,但请注意,在本文的日期表中,根本没有设置日期表,而您正在使用日期表。请注意:此处不需要设置为日期表

对于非 IT 人员,你只需要按规则用即可。

总结

生成日期表,还有 Power Query 的方法,但我们仍然推荐这种方法。原因有一些,列举一条的话就是,你无法在 PQ 中知道最大的日期是哪天(如果你说你可以用List.Max( Orders[Date] ),那你再想一想是不是合适)。

总之,作为分析师,直接使用上述模板即可。步骤:

  • 第一步,新建表,复制粘贴,形成日期表模板。
  • 第二步,新建表,= 上一步,形成日期表。
  • 第三步,永远使用该表。

这将确保您不进入任何与日期智能计算有关的坑。(那些坑真的很多,而要彻底弄明白那些坑,会陷入与分析无关的细节)

本文分享自微信公众号 - PowerBI战友联盟(powerbichina),作者:BI佐罗

原文出处及转载信息见文内详细说明,如有侵权,请联系 yunjia_community@tencent.com 删除。

原始发表时间:2020-01-10

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

我来说两句

0 条评论
登录 后参与评论

相关文章

  • PowerBI 时间智能终极奥义,用 WTD 练手

    单纯讲解时间智能函数犹如盲人摸象,不见全貌,更不见本质。 我们之前写过很多关于时间智能函数的文章,但文本将是最为本质以及最重要的。本文属于 BI佐罗 Powe...

    BI佐罗
  • PowerBI 保持数据刷新后仍显示最后一天

    PowerBI 提供了自动化的报表,每天都会更新。问题是如何保持报告每天都被默认选择为当天?

    BI佐罗
  • PowerBI 零基础支持上百指标多日期切换分析模板

    本案例有着强大而非常实用的业务背景,几乎适用于任何规模和发展阶段的企业,而使用者却根本不需要理解什么是PowerBI或商业智能,使用者只需要自己的业务指标是什么...

    BI佐罗
  • 东哥陪你学PowerBI——日期表

    常在群里看到很多关于对日期表的疑问和困惑,尤其是刚进群的初学者。那今天我们就来聊一下,日期表是怎么回事,在业务分析里究竟起了什么作用?

    公众号PowerBI大师
  • 如何在Power Pivot中通过添加列计算不连续日期移动平均?

    之前我们讲了连续日期的移动平均的求法,那我们这次来看下如果不连续日期如何计算移动平均。

    逍遥之
  • PowerBI 时间智能终极奥义,用 WTD 练手

    单纯讲解时间智能函数犹如盲人摸象,不见全貌,更不见本质。 我们之前写过很多关于时间智能函数的文章,但文本将是最为本质以及最重要的。本文属于 BI佐罗 Powe...

    BI佐罗
  • SAP PP计划订单和生产订单的日期计算

    SAP PP 中关于计划订单和生产订单的日期计算 ,计划单的基本完成日期=上级物料需求日期-物料主数据MRP2视图的收货处理时间天数(全部以工厂日历的工作日计算...

    用户5495712
  • 这样的Power BI周分析你见过吗?

    零售、电商、教育等领域的诸多业务场景中需要按周进行分析,然而Power BI并未提供周粒度的时间智能函数,这让很多人想分析时感觉力不从心、无从下手。

    陈学谦
  • Java8新日期处理API

    Java8引入了一套全新的时间日期API,本篇随笔将说明学习java8的这套API。 java.time包中的是类是不可变且线程安全的。新的时间及日期API位...

    用户1212940
  • PowerBI 保持数据刷新后仍显示最后一天

    PowerBI 提供了自动化的报表,每天都会更新。问题是如何保持报告每天都被默认选择为当天?

    BI佐罗

扫码关注云+社区

领取腾讯云代金券