Power Query(パワークエリ)で「今日の日付でフィルタする方法」と「今日の日付以前・以降でフィルタする方法」を解説します。
パワークエリのフィルタ機能を用いて行う方法とM言語の関数やカスタム列(条件列)を使って行う方法を紹介しますので状況に合わせて利用してみてください。
【日付関数】今日の日付を表す関数
まず日付関数を用いて今日を表す方法を紹介します(追加で今月と今年の式も記載しています)
関数で今現在・今日・今月・今年を表すには 日付関数であるDate関数とDateTime関数を用いて以下のように入力します。後述でこれらを組み合わせた関数式の日付フィルタを紹介します。
日付 | 関数式 | 備考 |
---|---|---|
今現在 | DateTime.LocalNow() | 今の日時を取得 |
今日 | Date.From(DateTime.LocalNow()) | Date.From:日時データから日付を取得 |
今月 | Date.Month(DateTime.LocalNow()) | Date.Month:日時データから月を取得 |
今年 | Date.Year(DateTime.LocalNow()) | Date.Year:日時データから年を取得 |
今日の日付と一致
日付フィルターによる抽出
今日の日付と一致する日付のデータを抽出する場合はパワークエリのフィルタ機能で行うことができます。
下図のようにヘッダーのフィルタボタンをクリックして「日付フィルター」>「日」>「今日」を選択すれば本日のデータだけをフィルタすることができます。
今年・今月・今週の場合
同じように今週・今月・今年なども日付フィルターを用いてデータを抽出することができます。
- 今週:「日付フィルター」>「週」>「今週」
- 今月:「日付フィルター」>「月」>「今月」
- 今年:「日付フィルター」>「年」>「今年」
M言語の関数による抽出
M言語の関数を用いた日付一致のフィルタ方法を解説します。
下記式のどちらかを入力することで今日の日付と一致した日付のデータだけをフィルタできます。「対象テーブル名」と「対象列名」はそれぞれ使用条件によって変更してください。
Table.SelectRows(対象テーブル名, each ([対象列名] = Date.From(DateTime.LocalNow())))
使用例
「適用したステップ」の一番したの項目を右クリックして「後にステップの挿入」を選択する。
追加したステップの入力欄に下記式を入力する。ここでは対象テーブル名に「変更された型」、対象列名に「日付」を設定しています。
= Table.SelectRows(変更された型, each ([日付] = Date.From(DateTime.LocalNow())))
以上でM言語による今日の日付のフィルターは完了です(上記画像は2023年7月19日のものです)
今年・今月の場合
同じように今年・今月などもM言語の関数式を用いてデータを抽出することができます。
・今年
= Table.SelectRows(対象テーブル名, each (Date.Year(DateTime.From([対象列名])) = Date.Year(DateTime.LocalNow())))
・今月 ※複数年のデータがある場合はまず下記の今年のフィルタをかけた後にかけてください。
= Table.SelectRows(対象テーブル名, each (Date.Month(DateTime.From([対象列名])) = Date.Month(DateTime.LocalNow())))
今日の日付より前・後
「今日より前」や「今日より後」のようなフィルタをかけたい場合はM言語の関数を用いることでできます。
下記の不等号を使った式を入力することで「今日の日付より前」や「今日の日付より後」の日付のデータだけをフィルタできます。「対象テーブル名」と「対象列名」はそれぞれ使用条件によって変更してください。また、今日を含めたくない場合は「= (イコール)」を抜いて入力してください。
= Table.SelectRows(対象テーブル名, each ([対象列名] <= Date.From(DateTime.LocalNow())))
= Table.SelectRows(対象テーブル名, each ([対象列名] >= Date.From(DateTime.LocalNow())))
使用例
「適用したステップ」の一番したの項目を右クリックして「後にステップの挿入」を選択する。
追加したステップの入力欄に下記式を入力して今日の日付以降のデータを抽出します。ここでは対象テーブル名に「変更された型」、対象列名に「日付」を設定しています。
= Table.SelectRows(変更された型, each ([日付] >= Date.From(DateTime.LocalNow())))
以上でM言語による今日の日付以降のデータの抽出は完了です(上記画像は2023年7月19日のものです)
今年の場合
同じように今年の場合もM言語の関数式を用いてデータを抽出することができます。
・今年以前・以降
= Table.SelectRows(対象テーブル名, each (Date.Year(DateTime.From([対象列名])) <= Date.Year(DateTime.LocalNow())))
= Table.SelectRows(対象テーブル名, each (Date.Year(DateTime.From([対象列名])) >= Date.Year(DateTime.LocalNow())))
パワークエリの学習本についてはコチラの記事でまとめてますので参考にしてみてください。
・初心者向けおすすめ学習本
・初中級者向けおすすめ学習本
コメント