Power BI-使用M-Query跨年递增周数

时间:2018-08-09 10:50:48

标签: powerbi

我的表中有一列称为Submitted_Date。

我希望在表中创建一个列,称为“周数”。

这个星期数应该随着年份的增加而增加。应该使用列日期中的最小日期,并采用该年的第一个日期来开始生成周数。

例如,如果它在2016年的第一周说1,则应该在2017年的第一周说55(或54),而不是1。

如何使用MQuery做到这一点?

Submitted_Date
1/22/2016
2/27/2017

因此,在这种情况下,它将以1/22/2016作为最小日期,并且将从2016年的第一个日期开始生成星期数。因此,1/1/2017(星期日)不是1,而是53或54。

enter image description here

更新:-

我现在有类似的东西可以为我工作。但是日期(2015-12-28)是内部硬编码的。该日期必须是动态的,因为这只不过是2016年1月1日第一周的开始

let
    StartDate = List.Min(Submitted_Requests[Submitted_Date]),
    EndDate = List.Max(Submitted_Requests[Submitted_Date]),
    StartYear = Date.Year(StartDate),
    ListDates = List.Dates(StartDate, Number.From(EndDate - StartDate)+1, #duration(1,0,0,0)),
    #"Converted to Table" = Table.FromList(ListDates, Splitter.SplitByNothing(), null, null, ExtraValues.Error),
    #"Renamed Columns" = Table.RenameColumns(#"Converted to Table",{{"Column1", "SubmittedDateReference"}}),
    #"Changed Type" = Table.TransformColumnTypes(#"Renamed Columns",{{"SubmittedDateReference", type date}}),
    #"Added Custom" = Table.AddColumn(#"Changed Type", "Submitted Week Number", each Number.RoundUp((Duration.Days(Duration.From([SubmittedDateReference]- Date.FromText("2015-12-28"))) + 1) / 7)),
    #"Changed Type1" = Table.TransformColumnTypes(#"Added Custom",{{"Submitted Week Number", Int64.Type}})
in
    #"Changed Type1"

1 个答案:

答案 0 :(得分:1)

您只需要用适当的动态日期表达式替换Date.FromText("2015-12-28")。例如,可能是Date.StartOfYear(StartDate)

我不确定为什么特别使用2015-12-28,因此,如果要在特定日期开始一周,则可能需要添加Date.DayOfWeek(Date.StartOfYear(StartDate))之类的偏移量。