title | author | date updated | keyword | |||
---|---|---|---|---|---|---|
Basic Data |
Johnney Cao |
2023-03-31 |
|
- StartDate: Required, Type as
Date
- StartDate, set value
1/1/1990
- Start from parameter StartDate;
- Convert parameter to table and add EndDate;
- Create a list of date between StartDate and EndDate , and then delete StartDate and EndDate columns;
- Add Columns for Year, Quarter, Month, Week and Day Columns;
- Set the table as Date Table (Table tools -> Mark as
date table
).
let
Source = if (StartDate = null) then #date(1990,1,1) else StartDate,
#"Converted Parameter to Table" = #table(1, {{Source}}),
#"Renamed StartDate" = Table.RenameColumns(#"Converted Parameter to Table",{{"Column1", "StartDate"}}),
#"Added EndDate" = Table.AddColumn(#"Renamed StartDate", "EndDate", each Date.From(Date.EndOfYear(DateTime.LocalNow()))),
#"Changed fields to Date Type" = Table.TransformColumnTypes(#"Added EndDate",{{"StartDate", type date}, {"EndDate", type date}}),
#"Added Date List" = Table.AddColumn(#"Changed fields to Date Type", "Date", each {Number.From([StartDate])..Number.From([EndDate])}),
#"Expanded Dates" = Table.ExpandListColumn(#"Added Date List", "Date"),
#"Changed Date to Date Type" = Table.TransformColumnTypes(#"Expanded Dates",{{"Date", type date}}),
#"Removed Start End Date" = Table.RemoveColumns(#"Changed Date to Date Type",{"StartDate", "EndDate"}),
#"Added Year" = Table.AddColumn(#"Removed Start End Date", "Year", each Date.Year([Date]), Int64.Type),
#"Added MonthNum" = Table.AddColumn(#"Added Year", "MonthNum", each Date.Month([Date]), Int64.Type),
#"Added MonthFullName" = Table.AddColumn(#"Added MonthNum", "MonthFullName", each Date.MonthName([Date])),
#"Added MonthShortName" = Table.AddColumn(#"Added MonthFullName", "MonthShortName", each Text.Start([MonthFullName],3)),
#"Added Month" = Table.AddColumn(#"Added MonthShortName", "Mon", each Text.Combine({Text.From([Year], "en-US"), "-", Text.PadStart(Text.From([MonthNum], "en-US"), 2, "0")}), type text),
#"Added QuarterNum" = Table.AddColumn(#"Added Month", "QuarterNum", each Date.QuarterOfYear([Date]), Int64.Type),
#"Added Quarter" = Table.AddColumn(#"Added QuarterNum", "Qty", each Text.Combine({Text.From([Year], "en-US"), "-Q", Text.From([QuarterNum], "en-US")}), type text),
#"Added WeekNum" = Table.AddColumn(#"Added Quarter", "WeekNum", each Date.WeekOfYear([Date])),
#"Added WeekName" = Table.AddColumn(#"Added WeekNum", "WeekName", each Text.Combine({"W", Text.PadStart(Text.From([WeekNum], "en-US"), 2, "0")}), type text),
#"Added Week" = Table.AddColumn(#"Added WeekName", "Week", each Text.Combine({Text.From([Year], "en-US"), "-", [WeekName]}), type text),
#"Added Day" = Table.AddColumn(#"Added Week", "Day", each Date.Day([Date]), Int64.Type)
in
#"Added Day"
- Use CALENDAR or CALENDARAUTO DAX functions to Create date tables in Power BI Desktop;
- Add Columns for Year, Quarter, Month, Week and Day Columns;
- Set the table as Date Table (Table tools -> Mark as
date table
).
- Date Table
- Reference from Date Table above;
- Keep Year column only, and remove duplicate records.
let
Source = DateTable,
#"Removed Other Columns" = Table.SelectColumns(Source,{"Year"}),
#"Removed Duplicates" = Table.Distinct(#"Removed Other Columns")
in
#"Removed Duplicates"
- Create a table using
LocalNow()
let
Source = #table(type table[LastRefresh=datetime], {{DateTime.LocalNow()}})
in
Source
Tables | Relationship |
---|---|
DateTable / YearTable | Many to 1 |
LastRefresh / DateTable | 1 to 1 |