【问题标题】:Count Remaining Days per Fiscal Month计算每个会计月的剩余天数
【发布时间】:2020-04-29 22:18:10
【问题描述】:

根据这篇文章,我正在建立一个财政日历:

以下 Dax 生成 DAX 日历:

Calendar = 
VAR BaseCalendar =
    CALENDAR ( DATE ( 2016; 1; 1 ); DATE ( 2025; 12; 31 ) )
RETURN
    GENERATE (
        BaseCalendar;
        VAR BaseDate = [Date]
        VAR Year =
            YEAR ( BaseDate )
        VAR MonthNumber =
            MONTH ( BaseDate )
        VAR WeekNumber =
            WEEKNUM ( BaseDate )
        VAR FWeek =
            WEEKNUM ( BaseDate; 21 )
        RETURN
            ROW (
                "Day"; BaseDate;
                "Year"; Year;
                "Month Number"; MonthNumber;
                "Month"; FORMAT ( BaseDate; "mmmm" );
                "Year Month"; FORMAT ( BaseDate; "yyyy-mm" );
                "Day of Week"; FORMAT ( BaseDate; "dddd" );
                "Day of Week Short"; FORMAT ( BaseDate; "ddd" );
                "Week"; WeekNumber;
                "Year-Week"; Year & "-" & WeekNumber;
                "Fiscal Week"; FWeek;
                "Fiscal Month Short"; SWITCH (
                    TRUE ();
                    FWeek IN { 1; 2; 3; 4 }; "Jan";
                    FWeek IN { 5; 6; 7; 8 }; "Feb";
                    FWeek IN { 9; 10; 11; 12; 13 }; "Mar";
                    FWeek IN { 14; 15; 16; 17 }; "Apr";
                    FWeek IN { 18; 19; 20; 21 }; "May";
                    FWeek IN { 22; 23; 24; 25; 26 }; "Jun";
                    FWeek IN { 27; 28; 29; 30 }; "Jul";
                    FWeek IN { 31; 32; 33; 34 }; "Aug";
                    FWeek IN { 35; 36; 37; 38; 39 }; "Sep";
                    FWeek IN { 40; 41; 42; 43 }; "Oct";
                    FWeek IN { 44; 45; 46; 47 }; "Nov";
                    FWeek IN { 48; 49; 50; 51; 52; 53 }; "Dec"
            )
    )

现在我需要一个列来显示每个日期相应会计月的剩余天数。 我建议我需要一个第一列,它累积每月的工作日。 然后我需要第二列从相应月份的总和中减去这个值。

您将如何以上面提供的相同方法将构建添加到日历中?

【问题讨论】:

    标签: excel powerbi dax powerpivot


    【解决方案1】:

    取决于您对工作日的定义。我猜是周一到周五 您需要在上述 DAX 中添加一个新列以返回 1 或 0

    IsWeekDay = SWITCH(TRUE(), WEEKDAY(Calendar[Date], 2) <= 5, 1, 0)
    

    所以它将返回 1 表示周一至周五,0 表示其他任何时间。 接下来为您的月份开始日期添加一列,我在此示例中使用日历月份:

    MonthStart = STARTOFMONTH(Calendar[Date])
    

    对于 04/04/2020 的日期,它将返回 01/04/2020 的日期

    下一个新列应该使用 EARILER 总结工作日

    Working Days = 
    CALCULATE ( SUM('Calendar'[IsWeekDay]),
        FILTER (
            ALL ( 'Calendar' ),
            'Calendar'[Date] >= EARLIER ( 'Calendar'[Date] )
                &&  EARLIER('Calendar'[MonthStart]) = STARTOFMONTH('Calendar'[Date])
        )
    )
    

    您必须根据您的会计月份开始日期对其进行调整

    【讨论】:

    • 嘿乔尼!非常感谢您的方法!我对日历表的方法是基于 GENERATE/RETURN/ROW。在这里,我无法像您显示的那样添加列。因为我有一个财政日历,所以像“MonthStart = STARTOFMONTH(Calendar[Date])”这样的函数将不起作用。我们的开始日期和结束日期与使用公历的日期不同。
    猜你喜欢
    • 1970-01-01
    • 2014-06-11
    • 2021-02-18
    • 2013-06-26
    • 2010-11-13
    • 2021-06-11
    • 2021-08-12
    • 1970-01-01
    相关资源
    最近更新 更多