Power Queryで時間(日付・時刻・期間)のデータ加工を行う

Power Query

データ加工をしていると、yyyymmdd形式の日付を日付データ型に変換したい。ある2つの日付の期間を計算したい。タイムゾーンごとに日付、時刻を表示したい。

といった事があると思います。Power Queryでは時間(日付・時刻・期間)に関するデータが用意されています。

この記事では、時間(日付・時刻・期間)のデータ加工方法を紹介していきます。

例として下表のデータを使います。

文字列については、「Power Queryで文字列のデータ加工を行う」の記事で紹介しています。

時間に関するデータ型は5つある

日付/時刻(datetime)

日付と時刻をあらわすデータ型です。

2024年9月1日 18時33分25秒
書式#datetime(年, 月, 日, 時, 分, 秒)
サンプル式#datetime(2024, 9, 1, 18, 33, 25)

日付(date)

日付のみをあらわすデータ型です。

2024年9月1日
書式#date(年, 月, 日)
サンプル式#date(2024, 9, 1)

時刻(time)

時刻のみをあらわすデータ型です。

18時33分25秒
書式#time(時, 分, 秒)
サンプル式#time(18, 33, 25)

日付/時刻/タイムゾーン(datetimezone)

日付と時刻+タイムゾーンをあらわすデータ型です。

2024年9月1日 18時33分25秒 +9:00
書式#datetimezone(年, 月, 日, 時, 分, 秒, +時, +分)
サンプル式#datetimezone(2024, 9, 1, 18, 33, 25, 9, 0)

期間

日付や時刻の期間をあらわすデータ型です。

5日と3時11分33秒
書式#duration(日数, 時間, 分, 秒)
サンプル式#duration(5, 3, 11, 33)

データ型「日付/時刻」のデータ加工

現在の日付・時刻を取得する

Power Queryエディターの「列の追加」タブを開き、「カスタム列」をクリックします。

「新しい列名」は必要に応じて列名を変更します。「カスタム列の数式」に「DateTime.LocalNow()」を入力し、OKをクリックします。

現在の日付・時刻が表示できました。

データ型「日付」のデータ加工

yyyymmdd形式の数字を日付に変換する

「変換」タブを開き、yyyymmdd形式の数字になっている日付列をクリックします。「データ型」ー「日付」をクリックします。

日付型に変換できず、エラーとなってしまいます。

日付型に変換するためには、まずテキスト型に変換する必要があります。下図の手順でテキスト型に変換しましょう。

テキスト型に変換した後、下図の手順で日付型に変換します。

「新規手順の追加」をクリックします。「現在のものを置換」をクリックすると、テキスト型に変換した手順が上書きされてしまうのでまたエラーになってしまいます。

日付型に変換できました。

○○後の日付を計算する

「列の追加」タブを開き、「カスタム列」をクリックします。例では現在の日付から10日後の日付を計算する列を追加します。

「新しい列名」は必要に応じて列名を変更します。「カスタム列の数式」に「Date.AddDays(<計算元になる日付列>, <加算する日数>)」を入力し、OKをクリックします。

現在の日付から10日後の列が追加されました。

10日後ではなく、1ヶ月後、1年後などの計算も可能です。

単位基準日数式サンプル結果
1日後2024年9月1日Date.AddDays(#date(2024, 9, 1), 1)2024年9月2日
1週間後2024年9月1日Date.AddWeeks(#date(2024, 9, 1), 1)2024年9月8日
1ヶ月後2024年9月1日Date.AddMonths(#date(2024, 9, 1), 1)2024年10月1日
1四半期後2024年9月1日Date.AddQuarters(#date(2024, 9, 1), 1)2024年12月1日
1年後2024年9月1日Date.AddYears(#date(2024, 9, 1), 1)2025年9月1日

データ型「時刻」のデータ加工

データ型「日付/時刻」から時刻だけを抜き出す

データ型「日付/時刻」の列をクリックします。「列の追加」タブー「時刻」ー「時刻のみ」をクリックします。

時刻のみを抜き出した列が追加されます。

データ型「日付/時刻/タイムゾーン」のデータ加工

現在の日付・時刻・タイムゾーンを取得する

「列の追加」タブを開き、「カスタム列」をクリックします。

「新しい列名」は必要に応じて列名を変更します。「カスタム列の数式」に「DateTimeZone.LocalNow()」を入力し、OKをクリックします。

現在の日付・時刻・タイムゾーンが表示できました。※日本のタイムゾーンはUTC+9になります。

データ型「期間」のデータ加工

2つの日付を比較して日数を計算する

「列の追加」タブを開き、日付列をクリックします。次に「日付」ー「期間」をクリックします。

現在の日付から選択した列の日付の日数を計算されます。例では試験日までの日数を計算したいのですが、この計算式ではマイナスの値になってしまいます。

そこで、数式「Date.From(DateTime.LocalNow()) – [試験日]」を「[試験日] – Date.From(DateTime.LocalNow())」に変更します。

日数を年に換算する

「列の追加」タブを開き、期間列をクリックします。次に「期間」ー「合計年数」をクリックします。

日付を年に換算した列が追加されます。

プロフィール
たがみ

IT業界20年程度のシステムエンジニアです。
構築したシステムのデータ検証をExcelで実施することが多く、検証作業の効率化を模索しているときにPower Queryと出会いました。
Excel業務効率化の手助けになればと当ブログを解説しました。
今ではデータ分析でPower BIを活用しており、Power BI、Excelの両方でPower Queryを活用しています。

たがみをフォローする
Power Query
たがみをフォローする
タイトルとURLをコピーしました