PowerQuery 日付データの計算方法 |引き算と足し算

PowerQuery(パワークエリ)で日付・時間の計算方法を紹介します。日時データの差の計算方法(減算)と日時データに期間を足す方法(加算)を解説しています。
テストデータを用いて経過日数や年齢などの計算方法も解説していますので参考にしてみてください。

目次

日付/時刻を表すデータ型

日付や時刻を表すデータ型は、よく使われる「日付」や「日付/時刻」を含めて5種類あります。

これらの加算、減算方法について後述で解説します。

データ型データ例データ例の関数表記
日付2023/04/01#date(2023,4,1)
日付/時刻2023/04/01 11:12:13#datetime(2023,4,1,11,12,13)
時刻11:12:13#time(11,12,13)
日付/時刻/タイムゾーン2023/01/02 10:11:40 +02:20#datetimezone(2023,1,2,10,11,40,2,20)
期間14.10:11:40#duration(14,10,11,40)
ドノ

「期間」は日時データの計算に使用するデータ型であり
それぞれの数値は #duration(日数,時間,分,秒) を表しています。

Sponsored link

日付/時刻の差を計算する(減算)

2つの日付データの差を計算するには列の追加タブにある「日付と時刻から」を利用します。

ドノ

計算したい単位によって利用するボタンは異なります。
・日数の差: 「日付」の「日数の減算」
・時間の差: 「時刻」の「減算」

日数の差の計算(経過日数)

日数の差を計算するには日付データ(または日付/時刻データ)の列と「日数の減算」ボタンを利用します。

【計算手順】

  1. 引き算で引かれる側(遅い日付)の日付データを選択する。
  2. Ctrlキーを押しながら引き算で引く側(早い日付)の日付データを選択する。
  3. 列の追加タブ内にある「日付」の「日数の減算」を選択する。

選択する順番で計算の結果が変わるためデータ選択の順番に気を付けてください。
上記の順番でデータを選択することにより [終了日] – [開始日] の計算ができるようになります。

時間の差の計算

時間の差を計算するには日付/時刻データの列と「時刻」にある「減算」ボタンを利用します。

【計算手順】

  1. 2つの日付/時刻データ列をCtrlキーを押しながら複数選択する。※引かれる側を最初に選択
  2. 列の追加タブ内にある「時刻」の「減算」ボタンで差を計算する。
  3. 変換タブにある「期間」ボタンを利用して期間データを利用する単位(時間・分・秒)に変換する。

列を選択する順番で計算の結果が変わるためデータ選択の順番に気を付けてください。
また、計算結果は期間データとなるので利用したい単位に変換する必要があります。

上記の計算手順の解説例として、下図のように2つの列の時間の差を計算します。

STEP
日付/時刻データの選択

時間差を計算する2つの列データを選択します。

  1. 引き算の引かれる側の[終了日]を選択する。
  2. 引き算の引く側の[開始日]を選択する。
STEP
日付/時刻データの減算

列の追加タブにある「時刻」の「減算」を選択する。

STEP
期間データの変換

減算の結果のデータ型は「期間」となりますので、時間に単位を変換します。

  1. 計算結果のデータ列「減算」を選択する。
  2. 変換タブの期間にある「合計時間数」をクリックする。
STEP
時間差の計算完了

以上で計算完了です。減算の列に合計の経過時間が算出されています。

Sponsored link

日付に一定期間を足す(加算)

日付データに一定期間を足して、日付を前後にずらす(翌日、前日、1ヶ月後など)にはDate関数を利用します。

まずは使用する関数について紹介します。

Date.AddDays関数とは?

日付データに一定期間を足し引きして日付を変更したい場合は下記の関数を利用します。
日付をずらしたい単位(日、週、月など)によって関数を使い分けます。

加算期間関数
Date.AddDays ( 日時データ, 追加日数)
Date.AddWeeks ( 日時データ, 追加週数)
Date.AddMonths ( 日時データ, 追加月数)
四半期Date.AddQuarters ( 日時データ, 追加四半期数)
Date.AddYears ( 日時データ, 追加年数)
日時加算の関数
ドノ

〇日後を算出したい場合は日付データにプラスの値を足して、〇日前ならばマイナスの値を足します。

時間の足し算をしたい場合、後述のカスタム列と期間データを用いた方法を参照してください。
こちらでは日~年の単位の計算を解説します。

日付データの加算手順

計算手順の解説例として、下図のように日付データの5日後の日付を計算します。

STEP
カスタム列を追加

まず日付計算を行うカスタム列を追加します。

列の追加タブの「カスタム列」をクリックする。

STEP
日付の加算式を入力する

カスタム列の式に下記の計算式を入力してOKをクリックする。

5日後を計算するのでDate.AddDays関数を用いて追加日数に5を設定します。

Date.AddDays([開始日],5)
STEP
5日後の日付データの計算完了

以上で日付データの足し算は完了です。

Sponsored link

カスタム列と演算子(+,-)で日付を計算する

マイナス記号で日付の差を計算する

日付データの差を計算するにはマイナス記号(-)を使った方法もあります。

計算結果をどの単位(時間、日数など)で表示するかにより使用する式が異なりますので、時間差が知りたいのか日数差が知りたいのかで式を使い分けてください。

計算結果の単位
Duration.TotalSeconds ( [日付データ1][日付データ2] )
Duration.TotalMinutes ( [日付データ1][日付データ2] )
時間Duration.TotalHours ( [日付データ1][日付データ2] )
Duration.TotalDays ( [日付データ1][日付データ2] )
ドノ

マイナス記号を用いた計算式の結果は期間データとなります。
そのため計算結果をほしい日付単位に変換する関数Duration.Total〇〇関数を一緒に用いています。

時間差の計算手順(経過時間)

計算手順の解説例として、下図の2つの日付/時刻データから経過時間を計算します。

STEP
カスタム列を追加

まず時間差の計算を行うカスタム列を追加します。

列の追加タブの「カスタム列」をクリックする。

STEP
経過時間の計算式を入力する

カスタム列の式に下記の計算式を入力してOKをクリックする。

[開始日]と[終了日]の2つの日付/時刻データの時間差を計算するのでDuration.TotalHours関数を用いた式を利用します。

Duration.TotalHours ([終了日] - [開始日])
STEP
経過時間の計算完了

以上で日付/時刻データの差(経過時間)の計算は完了です。

プラス記号で日付に一定期間を足す

日付データを一定期間ずらすのにプラス記号(+)を使った方法もあります。

それには下記フォーマットの期間データを用いて式を作成します。足し引きしたい期間を「期間」データのフォーマットを用いて作成し、日付データに足し合わせます。

期間データのフォーマット:#duration(日数,時間,分,秒)

この方法は日~時間の計算に適しており、月~年の加算したい場合は前述の関数を用いた方法を参考にしてください。

一定時間前後の日付/時刻の計算手順

計算手順の解説例として、日付/時刻データの一定時間後(5時間後)のデータを計算します。

STEP
カスタム列を追加

まず時間の加算計算を行うカスタム列を追加します。

列の追加タブの「カスタム列」をクリックする。

STEP
5時間を足す計算式を入力する

カスタム列の式に下記の計算式を入力してOKをクリックする。

[開始日]に5時間を表す期間データ #duration(0,5,0,0) を足し合わせます。

[開始日] + #duration(0,5,0,0)
STEP
一定時間後の日付/時刻データの計算完了

以上で日付/時刻データへの期間データの加算計算は完了です。

Sponsored link

日付データの計算例(年齢計算)

年齢計算(本日時点)

日付データの計算の利用例として生年月日から計算日時点での年齢を算出する方法を紹介します。

STEP
カスタム列を追加

まず年齢計算を行うカスタム列を追加します。

列の追加タブの「カスタム列」をクリックする。

STEP
年齢の計算式を入力する

カスタム列の式に下記の計算式を入力してOKをクリックする。

式の意味としては、まず今日の日付を表す関数 Date.From(DateTime.LocalNow()) から生年月日を引いて経過期間を計算します。そのあと、経過期間を経過日数に変換して365で割ることで経過年数を出しています。

Duration.TotalDays(Date.From(DateTime.LocalNow())-[生年月日])/365
STEP
小数点以下の切り捨て

計算結果には1未満の小数点以下の数字が出てくるので、それらを切り捨てます。

計算結果の列[年齢]をクリックして選択したあと、変換タブにある「丸め」から「切り捨て」を選択します。

STEP
今日時点の年齢の計算完了

以上で年齢の計算は完了です。

工程毎の作業時間の計算

下記のような作業開始データと作業終了データから工程ごとの合計作業時間(分)を計算する方法を紹介します。

STEP
カスタム列の追加

まず経過時間(分数)の計算を行うカスタム列を追加します。

列の追加タブの「カスタム列」をクリックする。

STEP
経過時間(分)の計算

カスタム列で作業開始から作業終了の経過時間(分)を計算します。

カスタム列の式に下記の計算式を入力してOKをクリックする。[作業開始]と[作業終了]の2つの日付/時刻データの時間差(分)を計算するのでDuration.TotalMinutes関数を用いた式を利用します。

Duration.TotalMinutes ( [作業終了] - [作業開始] )
STEP
グループ化でデータを集計する

次に計算した作業時間をグループ化を用いて工程ごとに合計します。

  1. 任意の列を選択する。
  2. 変換タブの「グループ化」を選択する。
  3. グループ化する列に[工程]、操作に[合計]、集計される列に[経過時間]を選択して工程ごとで経過分数を集計する。

グループ化については下記記事で紹介してますので参考にしてみてください。

STEP
作業時間(分)の集計完了

以上で工程ごとの作業時間(分)の集計は完了です。

Sponsored link

Power Queryのおすすめ書籍

パワークエリの学習本についてはコチラの記事でまとめてますので参考にしてみてください。

初心者向けおすすめ学習本

初中級者向けおすすめ学習本

よかったらシェアしてね!
  • URLをコピーしました!
  • URLをコピーしました!

この記事を書いた人

仕事、お金、旅行のことなどメモしてます。
仕事ではTableauを勉強中!
初心者にもわかりやすいように学んだことを発信していきます。

コメント

コメントする

コメントは日本語で入力してください。(スパム対策)

CAPTCHA

目次