1
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 3 years have passed since last update.

ジョンズ・ホプキンズ大の新型コロナウイルスのデータをPower BIで可視化してみよう(3/5)

Last updated at Posted at 2020-04-15

前回の記事(2/5)のまとめ

前回の記事では、Confirmed (感染者数)、Deaths(死亡者数)、Recovered(回復数)の3つのデータを合わせた1つのMasterテーブルを作成するところまで完了しました。

今回の記事(3/5)のゴール

この記事ではさらに4つのテーブル(およびそれを作成するためのクエリ)を作成します

  • 一番最近の日のデータのみを持つLatest テーブルを作る
  • 場所を表すLocation テーブルを作る
  • Confirmed、Deaths、Recoveredなどのステータスを表すStatus テーブルを作る
  • メジャーの定義を一か所で整理できるように_Measureテーブルを作る(メジャーに関しては後述)
  • 可視化した際に役に立つテーブルのリレーションシップを定義する

一番最近の日のデータのみを持つLatest テーブルを作る

ジョンズ・ホプキンズ大のデータは2020年の1月ぐらいからのデータですが、現時点の合計などは直近のデータ(例えば今日は4月14日なので4月13日のデータ)さえあれば得られます。そのためにLatestと名付けたテーブルを作成します。

手順は簡単です

  1. Masterクエリの複製を作りLatestという名前にする
  2. 一番最近の日のデータ以外をフィルターで取り除く

まず複製を作り:

image.png

名前を変更した後、Advanced Editorを開いて以下のクエリをコピペします。

image.png

let
    Source = Table.Combine({Confirmed, Deaths, Recovered}),
    #"Filtered Rows" = Table.SelectRows(Source, let latest = List.Max(Source[Date]) in each [Date] = latest),
    #"Changed Type" = Table.TransformColumnTypes(#"Filtered Rows",{{"Value", Int64.Type}})
in
    #"Changed Type"

Dateカラムが一番最近の日にみのLatestテーブルを作成しました。

image.png

場所を表すLocation テーブルを作る

Latest テーブルを作ったのと全く同じ手順で、Locationという名前のテーブル(クエリ)を作ります。コピペするクエリの内容は以下です。

let
    Source = Table.Combine({Confirmed, Deaths, Recovered}),
    #"Removed Other Columns" = Table.SelectColumns(Source,{"Province/State", "Country/Region"}),
    #"Removed Duplicates" = Table.Distinct(#"Removed Other Columns"),
    #"Added Conditional Column" = Table.AddColumn(#"Removed Duplicates", "LocationKey",
 each 
     if ([#"Province/State"] = "") 
     then [#"Country/Region"] & "-" & [#"Country/Region"]
     else [#"Country/Region"] & "-" & [#"Province/State"]
)
in
    #"Added Conditional Column"

下図のようになっていれば完了です。

image.png

ここでは、LocationKeyというカラムが加えられていることに着目してください。実は同様のカラムがMasterテーブルとLatestテーブルでも定義されています。これで、テーブル間に関係を持たせることが出来ます(後述)。

ステータスを表すStatus テーブルを作る

このテーブルは手動で定義します。ホームタブの Enter Data からCreate Tableダイアログを開きます。

image.png

直接、値を入力して、テーブルの名前を指定したらOKボタンでダイアログを閉じます。

image.png

以下のようになってるはずです。

image.png

このStatusテーブルにはカラムがひとつだけありますが名前がデフォルトのColumn1になっているので、ダブルクリックして名前をStatusに変更しましょう。

image.png

テーブル名もカラム名もStatusなので、それが気になるなら別の名前にしても構いません。

image.png

これで Statusテーブルの作成が完了しました。

_Measureテーブルを作る

後述しますがメジャーはPower BIのもっともパワフルな機能です。メジャー機能が無かったらPower BIという製品はほぼ無価値だと言ってもいいでしょう。

メジャーは、クエリやテーブルに対して横断的に定義できるので、対象になるクエリやテーブルではなく、独立したダミーのテーブルの一部として定義することにします。(対象のクエリの一部として定義しても全く問題ありませんし、むしろその方が整理しやすい場合もあるでしょう。)

ダミーなテーブルなので作成手順は超簡単です。Statusテーブルを作成した要領で「空のテーブル」を作るだけです。

image.png

Power Query エディタでの準備は完了

だいたいこのぐらいでPower Query エディタでやることは終わりです。もちろん、通常の開発工程では何度もPower Query エディタと、Power BIデスクトップの間を行ったり来たりすることになりますが、今回はクエリを全部準備していたので、ここでPower Query エディタを終了します。

Power Queryエディタを終了して、Power BIデスクトップに戻るには、ひとつの「儀式みたいな」過程を通過します。ホームのClose & Applyがそれです。

image.png

クエリを変更し、その変更内容をPower BIデスクトップで定義した図などに反映させるのがApplyです。それをせずにそっとPower Queryエディタを閉じたい時はCloseのみを選びます。

変更が反映されるのにしばらく時間が係る場合もあるので、下図のようなダイアログが表示されます。

image.png

反映された結果、作成したクエリがFieldsタブに表示されればここまでの手順は完了です。

image.png

テーブルのリレーションシップを定義する

この作業はPower BIデスクトップで行います。Power Queryエディタではないですから混乱の無きよう。

Power BIデスクトップには3つの作業画面があります。

  • Report
  • Data
  • Model

の3つですが、テーブルの間にリレーションを定義するのは3つ目のModelで行います。

image.png

いくつかのテーブルは右方向に配置されていて見えなくなっているかもしれません。スクロールしてマウスでドラッグして見えるところまで持ってきましょう。
今回必要なテーブルは

  • Main
  • Latest
  • Status
  • Location

の4つです。例として以下のような配置にしてみましょう。

すでにテーブル間にリレーション(矢印が付いた線。下図では黄色表示)が定義されている場合はいったん削除してしまいましょう。

image.png

次に、これら4つのテーブルに対してリレーションを定義していきます。

image.png

具体的には以下のテーブルの組み合わせにリレーションを定義します。

  • MasterテーブルとStatusテーブル
  • LatestStatusテーブル
  • MasterテーブルとLocationテーブル
  • LatestLocationテーブル

MasterテーブルとStatusテーブルにリレーションを定義する

例として、この2つのテーブルに対してリレーションを定義する手順を解説します。

下図で示す番号に従います。

image.png

すると新規のリレーションシップが作成されます。

image.png

モデルにもリレーションシップを表す線分が現れます。

image.png

## 残り3つのリレーションを定義する

同じ要領で、残りの3つのリレーションを定義しましょう。

  • LatestStatusテーブル
  • MasterテーブルとLocationテーブル
  • LatestLocationテーブル

image.png

LocationテーブルとのリレーションはLocationKeyカラムで関連付けされることに注意。

image.png

4つすべてのリレーションを定義しました。

image.png

モデルにもリレーションが表示されたら完了です。

image.png

4/5に続く

次の記事ではモデルをもとにメジャーを作成していきます。

1
0
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
1
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?