Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/powerbi/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Powerbi 使用ISO日历的当前会计周_Powerbi_Dax - Fatal编程技术网

Powerbi 使用ISO日历的当前会计周

Powerbi 使用ISO日历的当前会计周,powerbi,dax,Powerbi,Dax,我已经在我的Power BI数据模型中实现了一个财政日历一段时间了。 该会计日历每个月都有一个特定的开始和结束日期,主要基于ISO 8601日历(公历)。 然而,我目前的方法在今年不再有效,因为过滤器“当前财政周”不起作用。如果我根据当前财政周进行筛选,则得到的是一月的第二周,而不是第一周。 但是为什么呢? 我的代码具有以下结构: Calendar = VAR BaseCalendar = CALENDAR ( DATE ( 2020, 1, 1 ), D

我已经在我的Power BI数据模型中实现了一个财政日历一段时间了。 该会计日历每个月都有一个特定的开始和结束日期,主要基于ISO 8601日历(公历)。 然而,我目前的方法在今年不再有效,因为过滤器“当前财政周”不起作用。如果我根据当前财政周进行筛选,则得到的是一月的第二周,而不是第一周。 但是为什么呢? 我的代码具有以下结构:

Calendar =
VAR BaseCalendar =
    CALENDAR (
        DATE ( 2020, 1, 1 ),
        DATE ( 2022, 01, 03 )
    )
RETURN
    GENERATE (
        BaseCalendar,
        VAR BaseDate = [Date]
        VAR WeekNumber =
            WEEKNUM ( BaseDate )
        VAR Year =
            YEAR ( BaseDate )
        VAR FiscalWeek =
            WEEKNUM (
                BaseDate,
                21
            )
        VAR FiscalYear =
            IF (
                FiscalWeek < 5
                    && WeekNumber > 50,
                Year + 1,
                IF (
                    FiscalWeek > 50
                        && WeekNumber < 5,
                    Year - 1,
                    Year
                )
            )
        RETURN
            ROW (
                "Fiscal Week", FiscalWeek,
                "Current Fiscal Week",
                    IF (
                        AND (
                            FiscalWeek
                                = WEEKNUM (
                                    TODAY (),
                                    2
                                ),
                            FiscalYear
                                = YEAR (
                                    TODAY ()
                                )
                        ),
                        TRUE (),
                        FALSE ()
                    )
            )
    )
日历=
基准日历=
历法(
日期(2020年1月1日),
日期(2022年1月3日)
)
返回
产生(
基准日历,
VAR BaseDate=[日期]
变量周数=
周数(基准日期)
风险年=
年份(基准日期)
财政周刊=
周数(
基准日期,
21
)
财政变种=
如果(
财政周<5
&&周数>50,
年+1,
如果(
财政周>50
&&周数<5,
第一年,
年
)
)
返回
划船(
“财政周”,财政周,
“当前财政周”,
如果(
及(
财政周
=周数(
今日(,
2.
),
财政部
=年(
今天()
)
),
TRUE(),
假()
)
)
)

我认为当前财政周应使用与计算
财政周
财政周
相同的公式。我将新变量的变量定义放在
GENERATE
之外,因为它们只依赖于
今天()

VAR TodayBaseDate=
今日()
VAR TodayWeekNumber=
周数(今日基准日)
今日价值=
年份(今日基准日)
今日财政周=
周数(今日基准日,21)
今日财政年度=
如果(
今天的财政周<5
&&今天周末的人数>50,
今天+1,
如果(今天的财政周>50&&TodayWeekNumber<5,今天的年份-1,今天的年份)
)
基准日历=
日历(日期(2020年1月1日),日期(2022年1月3日))
返回
产生(
基准日历,
VAR BaseDate=[日期]
变量周数=
周数(基准日期)
风险年=
年份(基准日期)
财政周刊=
周数(基准日,21)
财政变种=
如果(
财政周<5
&&周数>50,
年+1,
如果(财政周>50和周数<5,年份-1,年份)
)
返回
划船(
“周日”,格式([日期],“ddd”),
“今天”,今天(),
“财政周”,财政周,
“当前财政周”,
和(FiscalWeek=今日FiscalWeek,FiscalYear=今日FiscalYear)
)
)

太好了,它工作得非常好!为什么要为GENERATE设置变量?这会影响DAX性能吗?或者这对于概述来说更容易吗?这两个原因,主要是代码可读性:)
VAR TodayBaseDate =
    TODAY()
VAR TodayWeekNumber =
    WEEKNUM( TodayBaseDate )
VAR TodayYear =
    YEAR( TodayBaseDate )
VAR TodayFiscalWeek =
    WEEKNUM( TodayBaseDate, 21 )
VAR TodayFiscalYear =
    IF(
        TodayFiscalWeek < 5
            && TodayWeekNumber > 50,
        TodayYear + 1,
        IF( TodayFiscalWeek > 50 && TodayWeekNumber < 5, TodayYear - 1, TodayYear )
    )
VAR BaseCalendar =
    CALENDAR( DATE( 2020, 1, 1 ), DATE( 2022, 01, 03 ) )
RETURN
    GENERATE(
        BaseCalendar,
        VAR BaseDate = [Date]
        VAR WeekNumber =
            WEEKNUM( BaseDate )
        VAR Year =
            YEAR( BaseDate )
        VAR FiscalWeek =
            WEEKNUM( BaseDate, 21 )
        VAR FiscalYear =
            IF(
                FiscalWeek < 5
                    && WeekNumber > 50,
                Year + 1,
                IF( FiscalWeek > 50 && WeekNumber < 5, Year - 1, Year )
            )
        RETURN
            ROW(
                "Week day", FORMAT( [Date], "ddd" ),
                "Today", TODAY(),
                "Fiscal Week", FiscalWeek,
                "Current Fiscal Week",
                    AND( FiscalWeek = TodayFiscalWeek, FiscalYear = TodayFiscalYear )
            )
    )