LoginSignup
2
2

More than 1 year has passed since last update.

Power Query で日付テーブルを作成しよう : Mから始めよう #16

Last updated at Posted at 2022-02-25

 以前、DAXで日付テーブルを作成してみましたが、今回はPower Queryを使って日付テーブルを作成していきます。(「Power BIで日付テーブルを作成する」)

image.png

パラメータの設定

 日付テーブルに設定するFrom-Toの日付をパラメータで設定します。その他、言語を日本語と英語の選択可能にし、週の始まりを日曜日にするか、月曜日にするかを選べるようにします。

image.png

image.png

image.png

image.png

Power Query

 以下のようなクエリを作成しました。

let
    DateFromDate = Date.FromText(FromDate, "ja-JP"),
    DateToDate = Date.FromText(ToDate, "ja-JP"),
    Source = List.Dates(
        DateFromDate, 
        Duration.Days(DateToDate - DateFromDate) + 1, 
        #duration(1,0,0,0)
    ),
    ListToTable = Table.FromList(
        Source, 
        Splitter.SplitByNothing(), 
        type table [Date = Date.Type], 
        null, 
        ExtraValues.Error
    ),
    // 年
    YearAdded = Table.AddColumn(
        ListToTable,
        "Year",
        each Date.Year([Date]),
        Int32.Type
    ),
    // 月
    MonthAdd = Table.AddColumn(
        YearAdded,
        "Month",
        each Date.Month([Date]),
        Int32.Type
    ),
    // 日
    DayAdd = Table.AddColumn(
        MonthAdd,
        "Day",
        each Date.Day([Date]),
        Int32.Type
    ),
    // 年月
    YearMonthAdd = Table.AddColumn(
        DayAdd,
        "YearMonth",
        each Date.ToText([Date], "yyyyMM", Language),
        Text.Type
    ),
    // 年月日
    YearMonthDayAdd = Table.AddColumn(
        YearMonthAdd,
        "YearMonthDay",
        each Date.ToText([Date], "yyyyMMdd", Language),
        Text.Type
    ),
    // 曜日
    WeekAdd = Table.AddColumn(
        YearMonthDayAdd,
        "Week",
        each Date.ToText([Date], "ddd", Language),
        Text.Type
    ),
    WeekNumberAdd = Table.AddColumn(
        WeekAdd,
        "WeekNumber",
        each Date.DayOfWeek([Date], StartWeekDay),
        Int32.Type
    ),
    // 週開始日
    StartOfWeekAdd = Table.AddColumn(
        WeekNumberAdd,
        "WeekStartDate",
        each Date.AddDays([Date], - [WeekNumber]),
        Date.Type
    ),
    // 月末日
    EndOfMonthAdd = Table.AddColumn(
        StartOfWeekAdd,
        "EndOfMonth",
        each Date.EndOfMonth([Date]),
        Date.Type
    ),
    // 月日数
    DaysInMonthAdd = Table.AddColumn(
        EndOfMonthAdd,
        "DaysInMonth",
        each Date.DaysInMonth([Date]),
        Int32.Type
    )
in
    DaysInMonthAdd

テンプレートファイルで保存

 テンプレートファイルで保存すると、次回使用するときに、パラメータ設定画面が最初に表示されるようになります。

image.png

image.png

 ここで入力した値に基づいて日付テーブルが作成されますが、後からパラメータの値を変えて変更することもできます。

2
2
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
2
2