【问题标题】:Custom Calendar in Power BI (DAX) - Calculated column for Fiscal QuarterPower BI (DAX) 中的自定义日历 - 会计季度的计算列
【发布时间】:2017-05-05 23:49:12
【问题描述】:

我正在 Power Bi 中构建自定义日历。

我主要使用美国财年值,这意味着 2017 财年从 10 月 1 日 (2016-10-01) 开始,到 9 月 30 日 (2017-09-30) 结束。因此,与当前日历年相比到财政年度将如下所示:

===============================================
Calendar YearMonth     ||   Fiscal YearMonth
===============================================
201601                 ||   201604
201602                 ||   201605
201603                 ||   201606
201604                 ||   201607
201605                 ||   201608
201606                 ||   201609
201607                 ||   201610
201608                 ||   201611
201609                 ||   201612
201610                 ||   201701
201611                 ||   201702
201612                 ||   201703

为了计算月初至今、季度至今和年初至今的值,我需要一个工作日历。我尝试解决此问题的方式是创建了计算列。

我已设法使会计年度和会计月份编号公式起作用:

Fiscal Year = IF(MONTH([DATE]) > 9, YEAR([DATE])+1, YEAR([DATE]))

Fiscal YearMonth No = 
SWITCH( 
    TRUE(),
    MONTH('Calendar'[Date]) = 10, 1,
    MONTH('Calendar'[Date]) = 11, 2,
    MONTH('Calendar'[Date]) = 12, 3,
    MONTH('Calendar'[Date]) = 1, 4,
    MONTH('Calendar'[Date]) = 2, 5,
    MONTH('Calendar'[Date]) = 3, 6,
    MONTH('Calendar'[Date]) = 4, 7,
    MONTH('Calendar'[Date]) = 5, 8,
    MONTH('Calendar'[Date]) = 6, 9,
    MONTH('Calendar'[Date]) = 7, 10,
    MONTH('Calendar'[Date]) = 8, 11,
    MONTH('Calendar'[Date]) = 9, 12
    )

但不幸的是,我似乎无法找出获得财政年度季度编号的公式。我最近的尝试是将 SWITCH 函数与 DATESBETWEEN 一起使用,如下所示:

Fiscal YearQuarter No = 
SWITCH( 
    TRUE(),
    (DATESBETWEEN('Calendar',MONTH('Calendar'[Date]) >= 9, MONTH('Calendar'[Date])) <= 12)), 1,
    (DATESBETWEEN ('Calendar'[Date],MONTH('Calendar'[Date]) >= 1, MONTH('Calendar'[Date]) <= 3)), 2,
    (DATESBETWEEN ('Calendar'[Date],MONTH('Calendar'[Date]) >= 4, MONTH('Calendar'[Date]) <= 6)), 3,
    (DATESBETWEEN ('Calendar'[Date],MONTH('Calendar'[Date]) >= 7, MONTH('Calendar'[Date]) <= 9)), 4
)

很遗憾,我遇到了语法错误。

【问题讨论】:

    标签: powerbi dax


    【解决方案1】:

    您可以像这样简单地将日历年更改为财政年

    Fiscal Month = Orders[Order Date].[Month]
    
    Fiscal Year = CONCATENATE("FY ",IF(Orders[Order Date].[MonthNo]>=4 && Orders[Order Date].[MonthNo]<=12,Orders[Order Date].[Year],Orders[Order Date].
    
    [Year]-1))
    

    本财政年度根据印度财政年度。

    【讨论】:

      【解决方案2】:

      由于 MONTH() 函数返回一个整数值,我认为这就是为什么使用 DATESBETWEEN() 函数包装它会出现语法错误的原因。

      相反,只需使用简单的整数运算符。我用这个计算测试了你的数据并且它有效:

      Fiscal YearQuarter No = 
      SWITCH(
          TRUE(),
          MONTH('Calendar'[Date])>=10 && MONTH('Calendar'[Date]) <= 12,1,
          MONTH('Calendar'[Date])>=1 && MONTH('Calendar'[Date]) <= 3,2,
          MONTH('Calendar'[Date])>=4 && MONTH('Calendar'[Date]) <= 6,3,
          MONTH('Calendar'[Date])>=7 && MONTH('Calendar'[Date]) <= 9,4
      )
      

      此外,您可能不需要这么长的表达式来计算您的会计月份数字,因为您的会计日历只是与标准日历相差 3 个月。尝试一个算术公式来代替它。这应该有效:

      Fiscal YearMonth No= = 
      =IF((MONTH('Calendar'[Date])+3)>12,ABS(12-(MONTH('Calendar'[Date])+3)),(MONTH('Calendar'[Date])+3))
      

      【讨论】:

      • @RedVII 这正是我在财政季度所需要的!非常感谢你。你的财政月公式也很有魅力!
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-07-04
      • 1970-01-01
      • 2016-05-28
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多