### 如何在 Power BI 中创建日期表
#### 使用 Power Query 创建日期表
为了构建一个高效且易于维护的日期表,可以利用 Power Query 或 M 语言来实现这一目的。通过这种方法能够确保所生成的数据模型既简洁又强大[^1]。
```m
let
StartDate = #date(2023, 1, 1),
EndDate = DateTime.Date(DateTime.LocalNow()),
Source = List.Dates(StartDate, Duration.Days(Duration.From(EndDate - StartDate)) + 1, #duration(1, 0, 0, 0)),
TableFromList = Table.FromList(Source, Splitter.SplitByNothing(), null, null, ExtraValues.Error),
ChangedType = Table.TransformColumnTypes(TableFromList,{{"Column1", type date}}),
RenamedColumns = Table.RenameColumns(ChangedType,{{"Column1", "Date"}}),
InsertYear = Table.AddColumn(RenamedColumns, "Year", each Date.Year([Date]), Int64.Type),
InsertQuarterOfYear = Table.AddColumn(InsertYear, "Quarter of Year", each "Q" & Text.From(Date.QuarterOfYear([Date])), type text),
InsertMonthNumber = Table.AddColumn(InsertQuarterOfYear, "Month Number", each Date.Month([Date]), Int64.Type),
InsertDayOfWeek = Table.AddColumn(InsertMonthNumber, "Day Of Week", each Date.DayOfWeek([Date], Day.Monday), Int64.Type),
InsertDayOfMonth = Table.AddColumn(InsertDayOfWeek, "Day Of Month", each Date.Day([Date]), Int64.Type),
InsertWeekNumberOfYear = Table.AddColumn(InsertDayOfMonth, "Week Number Of Year", each Date.WeekOfYear([Date], Day.Monday), Int64.Type),
InsertYearMonthNumber = Table.AddColumn(InsertWeekNumberOfYear,"Year Month Number",each Date.Year([Date]) * 12 + Date.Month([Date]),Int64.Type)[^3],
RemovedOtherColumns = Table.SelectColumns(InsertYearMonthNumber,{"Date", "Year", "Quarter of Year", "Month Number", "Day Of Week", "Day Of Month","Week Number Of Year","Year Month Number"})
in
RemovedOtherColumns
```
这段代码定义了一个从指定起始日到当前日期范围内的所有天数列表,并将其转换成表格形式。接着依次添加了年份、季度名称、月份编号、星期几以及该月中的具体日子等列。最后还计算出了每年每月对应的唯一编码(即 `Year Month Number`),这有助于后续分析时更方便地处理时间维度上的聚合操作。
#### 将日期表加载至 Power BI 数据模型中
完成上述步骤之后,在 Power BI Desktop 的左侧导航栏里会看到新建好的查询项;此时只需点击右上角的“关闭并应用”,即可把这张精心设计过的日期表正式加入到项目当中去。
---