日付の階層テーブルはアメリカ基準なので使いにくいのが難点です。
- 年度が4月でなく1月はじまり
- 月の表示が英語
この記事では日付表示の基本と日本に合わせた設定への変更方法を解説していきます。
よくある質問の対応方法をまとめてますので、ぜひお読みください。
基本 日付データの取り込みとグラフ表示
サンプルとして下記のデータをPower BIに取り込みます。
日付型 | 日本語 | 英語 | 英語1 | 英語2 | 値 |
---|---|---|---|---|---|
2020/1/1 | 2020年1月1日 | 01 Jan 2020 | 1/1/2020 | 1/1/2020 | 100 |
2020/1/2 | 2020年1月2日 | 02 Jan 2020 | 1/2/2020 | 2/1/2020 | 200 |
2020/1/3 | 2020年1月3日 | 03 Jan 2020 | 1/3/2020 | 3/1/2020 | 100 |
2020/2/1 | 2020年2月1日 | 01 Feb 2020 | 2/1/2020 | 1/2/2020 | 100 |
2020/2/2 | 2020年2月2日 | 02 Feb 2020 | 2/13/2020 | 13/2/2020 | 200 |
取り込みデータは下記の画面で確認できます。
- 左のアイコンから「データ」を選択
- 日付型と認識されない場合は左上のデータ型から変更できます。
- 日付型のデータには自動で「年、四半期、月、日」の階層が作成されます。
- 英語3の「13/2/2020」のデータは日付型と認識されなかったので、文字列で取り込まれました。
日付を軸に使った時のデフォルトの棒グラフ表示です。
- 日付の階層データでカテゴリ化されています。
詳細データを見るにはグラフの上にある矢印を使ってドリルダウンをします。 - 2月1日と2月13と離れていますが、グラフが隣り合ってい表示されています。
これは日付がカテゴリ表示されているためです。
応用 目的に合わせて日付データの表示変更
文字列から日付型への変換方法は?「日/月/年」の変換について。
方法1 Power BI全部の取り込み設定を変更する
ファイルのオプション設定で、ロケールを変更します。
- 左上の「ファイル」から「オプションと設定」を選択し、「オプション」をクリックします。
- 現在のファイルの地域の設定を選択します。
- インポート用のローケールの設定を日付書式にあった国に変更します。
方法2 個別に項目の設定を変える
Power Queryのロケールの機能を使用します。
Power Queryを下記の手順で開きます。
- 左のアイコンから「モデル」を選択
- 「データの変換」を選択
- 適用したステップから最後から2つ目をクリックします。
- 変換する項目のヘッダーを右クリックします。
- 「型の変更」から「ロケールを使用」を選択します。
ロケールから日/月/年の表記の国を選択します。
サンプルが表示されますので、それを元に選んでください。
データ型:日付
ロケール:英語(英国)
を選択しました。
次に項目の型をテキストから日付に変更します。
- 右から「変更された型」を選択します。
- 計算式から、英語3のtype: textをtype:dateに変更します。
- 「閉じて適用」をクリックして終了します。
棒グラフでx軸を時系列表示にするにはどうするの?
階層データを使用しないで、日付そのもの値を使います。
- 軸の下矢印をクリックします。
- 「日付の階層」が選択されているので、その上の項目を選択します。
グラフが時系列表示に変わるのが確認できます。
日付の階層が英語表記です。日本語に変換するにはどうするの?
自分で日付テーブルを作成して対応する必要があります。
詳細は次の
「年度の始まりを4月にするには?」
を参照してください。
ロケールの設定で解決するという記事もありますが2020年7月現在の私の環境では解決できませんでした。
日次の階層テーブルはPower BIが裏で日付テーブルを作成しています。
そのテーブルの四半期や月が英語で保存されているためこの問題が起きます。
年度の始まりを4月にするにはどうするの?
日付のカスタムテーブルを作ります。
- 左のアイコンから「テーブル」を選択
- 「新しいテーブル」をクリック
- 計算式に下のコードを張り付ける
3行目で作成する日付データの範囲を設定しています。
開始日と終了日をデータに合わせて変更してください。
コード
年度 = VAR BaseCalendar =
CALENDAR ( DATE ( 2019, 4, 1 ), DATE ( 2022, 3, 31 ) )
RETURN
GENERATE (
BaseCalendar,
VAR BaseDate = [Date]
VAR FYDate = EDATE(BaseDate,-3 )
RETURN ROW (
"日付", BaseDate,
"年度", CONCATENATE(RIGHT(CONVERT(YEAR ( FYDate ),STRING),2),"年度"),
"四半期", CONCATENATE(CONCATENATE("第",QUARTER( FYDate )),"四半期"),
"月度", CONCATENATE(FORMAT ( BaseDate, "mm" ),"月"),
"日", FORMAT ( BaseDate, "dd" ),"曜日",SWITCH(WEEKDAY(BaseDate,1),1,"日",2,"月",3,"火",4,"水",5,"木",6,"金",7,"土"),
"年度-月", CONCATENATE(CONCATENATE(YEAR ( FYDate ),"-"), FORMAT(BaseDate,"mm"))
)
)
作成したテーブルのレイアウトを整えます。
- 日付テーブルとしてマークするを選択する
- 日付の階層を作成する
日付の項目に、
年度、四半期、月度、日
をドラッグ&ドロップする
作成した日付テーブルとリレーションシップを作ります
- 左のアイコンから「モデル」を選択
- マッピングしたい日付項目をドラッグ&ドロップする
これでグラフの年度開始日を変更できました。
年末が12/31ではない時、年度累計はどうやってだすの?
累積関数のTOTALYTDを使います。
TOTALYTD(SUM([累積値], [日付],"年度末日")
関数は覚えなくて済むように、クイックメジャーを利用した作成方法を説明します。
- クイックメジャーを選択
- 計算に「年度累計」を選択
- 作成した項目をダブルクリックして式を変更する
- TOTALYTDの3つ目の引数に年度末の日付を入力する
私の場合は下の計算式となりました。
クイックメジャーの計算式は年度末の指定が抜けているため追加します。
TOTALYTD(SUM('dataFormat'[値]), '年度'[日付],"3/31")
もっと複雑な条件で指定しないといけない方は「累積の作り方」の記事を参照してください。
日付の階層データを削除するにはどうするの?
カスタムで日付テーブルを作る場合はデフォルトの日付の階層テーブルは不要になります。
次のオペレーションで全部の日付階層を削除できます。
- ファイルを選択
- オプション設定からオプションを選択
- データ読み込みから「自動の日付/時刻」のチェックを外す
曜日別に集計するにはどうするの?
曜日の「新しい列」を追加します。
- 左のアイコンから「データ」を選択
- 「新しい列」をクリック
- 計算式に次の式をいれる。[日付型]となっている部分は対象の日付項目に変更してください。
曜日 = SWITCH(WEEKDAY([日付型],1),1,"日",2,"月",3,"火",4,"水",5,"木",6,"金",7,"土")
相対日付でフィルターするにはどうするの?
今日のデータや、今年度のデータを表示したい事はよくあります。
スライサーには想定日付を指定できる機能があります
- スライサーを選択
- スライサー画面の右上の下矢印をクリック
- 相対日付か相対時間を選択
関係記事
Power BIについてもっと詳しく知りたい方はPower BI記事のまとめから参照できますので、こちらもご参照ください。
- Power BIの概要
- Power BIの機能の使い方
- サンプルレポートのハンズオン
についてまとめてあります。