DAX 创建带有附加字段的日历 Table

DAX Creating Calendar Table With Additional Field

我正在 DAX 中创建日历 table:

Dates =
CALENDAR (
    MIN ( 'Work Weeks'[Start Date].[Date] ),
    MAX ( 'Work Weeks'[Start Date].[Date] )
)

工作周 table 包含周数和每周的开始日期。

对于我的新日期 table 中的每个日期,我想使用工作周的开始日期分配一个工作周编号。请注意,工作周从一周中的不同日子开始(尽管它们在我的工作周中被正确分配 table)。

所以我正在尝试的是:

Dates =
ADDCOLUMNS (
    CALENDAR (
        MIN ( 'Work Weeks'[Start Date].[Date] ),
        MAX ( 'Work Weeks'[Start Date].[Date] )
    ),
    "Work Week",
        CALCULATE (
            MAX ( 'Work Weeks'[Start Date].[Date] ),
            'Work Weeks'[Start Date] <= Date
        )
)

我不确定如何在最后的条件中引用当前 row/date。然后我还需要 return 工作周数,而不仅仅是开始日期。

假设您的工作周 table 看起来像这样:

您可以使用此日期 table 代码添加周数:

Date Table = 
VAR ListOfDate = 
    VAR MinDate = MIN ( Sales[Order Date] ) -- Replace the reference with the column of your model
    VAR MaxDate = MAX ( Sales[Order Date] ) -- Replace the reference with the column of your model
    VAR StartDate = DATE ( 2021, 1, 1 ) -- DATE ( YEAR ( MinDate ), 1, 1 )
    VAR EndDate = DATE ( 2021, 12, 31 ) -- DATE ( YEAR ( MaxDate ), 12, 31 )
    VAR Result = CALENDAR ( StartDate, EndDate )
    RETURN
        Result
VAR WorkWeekTable = ALL ( WorkWeek )
VAR CalendarTable = 
    GENERATE ( 
        ListOfDate,
        VAR CurrentDate = [Date]
        RETURN
            ROW ( 
                "Calendar Year Number", YEAR ( CurrentDate ),
                "Calendar Month Number", MONTH ( CurrentDate ),
                "Work week", 
                    CALCULATE ( 
                        MIN ( WorkWeek[Work Week Number] ),
                        CurrentDate >= WorkWeek[Work Week Start Date],
                        CurrentDate <= WorkWeek[Work Week End Date],
                        REMOVEFILTERS ( )
                    ) 
            )
    )
RETURN
    CalendarTable

结果将如下所示: