LoginSignup
7
9

More than 3 years have passed since last update.

Mから始めよう #1 ~Power BIでM式を使う~

Last updated at Posted at 2020-12-13

Power BIでDAXの森でさまよい続けてる方への、1つの解決法。

この記事は、Microsoft Power BI Advent Calendar 2020の14日目の記事となります。

この文章の作者はPower BI歴が浅いため、用語の使い方が統一されていなかったり、手順等に間違いがあった場合、都度訂正させていただきますので、よろしくお願いします。

DAXとM式(Power Query)の違い

 M式は、ETL言語です。ソースからデータを抽出(Extract)し、変換(Transform)し、格納(Load)する作業を行う、バッチ処理です。
 一方DAXは、M式(Power Query)で格納されたデータを元に、メモリ上で条件に応じてデータを分析します。条件が変わるたびに再計算されるため、データが多いほど読み込みは遅くなります。大きなデータを扱う場合、事前にテーブルのフィルタリングをせずに全てDAXで処理するのは間違いです。膨大なメモリを使用し、パーフォーマンスを大きく犠牲にすることになります。
 また、M式にも様々な機能があるので、それを使えば複雑なDAXを書かなくて済むかもしれません。まず、データの整理をきちんと行う力がないと、複雑な表現は無理。ということで、M式でできる限りのとこまでやってみるという記事です。
(see https://docs.microsoft.com/en-us/power-bi/guidance/power-bi-optimization)

ソースを取り込む

 まず最初に、Power BI Desktopのインストールを行ってください。(https://aka.ms/pbidesktopstore)

 それでは、データの取り込みを行ってみましょう。
 使用するデータは、エクセル、CSVなど、ローカルのファイルでもいいのですが、毎日自動で更新されるオンラインデータの方が面白みがあります。2020年、皆の関心となった新型コロナウイルス(COVID-19)のデータを、WHOのホームページから取得しましょう。
 目的のデータの取得場所は、https://covid19.who.int/ の右下にあります。
who-covid-19.jpg
 「Download Map Data」のところを右クリックし、リンクのコピーを行います。
 そして、Power BI Desktopを立ち上げた後、データを取得します。
image.png
image.png
CSVの読み込み確認が出てきますので、「データの変換」を押します。
powerbi.jpg
 Country_code, WHO_region, Cumulative_cases, Cumulative_deathsは、削除して、左上の閉じて適用を押します。
remove.jpg
少し待つと、右側のフィールド欄に以下のテーブルが表示されます。
image.png

グラフにしてみる

 まずは、簡単にグラフを作ってみましょう。
 視覚化から「折れ線グラフ」を選ぶと、キャンバスに折れ線グラフを表示する枠ができます。
oresen.jpg
フィールドで、Date_reportedとNew_casesにチェックを入れてみましょう。
image.png
表示は、以下のようになり、折れ線になってくれません。
image.png
視覚化の少し下に軸を設定するところで、Date_reportedの右の×の左にある✓を押すと、以下のメニューが出ますので、Date_reportedを選択します。私が一番最初に躓いたところです。Power BIで日付を扱うときには、注意しましょう。
image.png
とりあえず、こんな感じでグラフの位置、サイズを調整しときます。
line.jpg

表示の調整

 このままだと、見栄えが良くないので、表示の調整をしていきます。
 調整は、グラフを選択して、先ほどの「軸」と表示されていた上にある、ローラー刷子の形をした書式をクリックします。以下のような項目が出てきますので、それぞれを開いて変更していきます。
hake.jpg
まず、Y軸の単位をの表示単位が「自動」になっているので、「なし」にします。
image.png
軸の値が0.3Mから300000になります。300,000のように表示させるには、右のフィールドで「New_cases」を選択した状態で、メニューから「書式」「列ツール」と選んで、カンマをクリックします。
column.jpg
Y軸のタイトル軸名を直したい場合は、フィールドのところで、「New_cases」を右クリックして「名前の変更」を選び「新規感染者数」とします。X軸は見れば日付とわかるので、タイトルはオフにして、グリッド線はオンにしておきましょうか。
image.png
後は、タイトルのタイトルテキストを変更し、とりあえずの体裁が出来上がりました。
image.png

最新の感染者数を載せたい

 人に見せるには、ページのタイトルをつけたいですよね。メニューの「挿入」から「テキストボックス」を選択して作成します。
 このグラフの直近のデータは、何日で、どのくらいの人数か表示させたくなりますね。
 ここは、簡単なDAXでテーブルを作ります。
 メニューの「モデリング」から「新しいテーブル」を選択し、
image.png

Latest = 
    FILTER(
        'WHO-COVID-19-global-data', 
        'WHO-COVID-19-global-data'[Date_reported] = 
            MAX('WHO-COVID-19-global-data'[Date_reported])
    )

のように入力します。入力欄の右側の✓を押すと、入力の枠が広がります。改行は、Shift + ENTERを押します。これで、Latestテーブルに日付が最も大きい行が取り出せました。左のアイコンでデータの表示に切り替えて確認します。
image.png
また、レポートの表示に切り替え、今度は、視覚化のアイコンの中化から「カード」を選択します。2つ作って、程よく配置したら、フィールドのLatestテーブルからDate_reportedと新規感染者数をそれぞれのカードで選択します。
image.png
表示形式を整えます。
まず、Date_reportedを選んで、書式を選択します。
image.png
次にフィールドの新規感染者数を選んで、コンマをクリMから始めよう ~Power BIでM式を使う~ #1ックします。
image.png
カードを選択し、ローラー刷毛の書式から、データラベルのテキストサイズ、表示単位を変え、カテゴリをオフに、タイトルをオンにしてタイトルテキストを入力します。
これで、そこそこの見栄えになったと思います。
image.png
でも、これじゃ、いまいちな感じですよね。

次は、このグラフをロウソク足にしてみたいと思います。

作成したpbixファイルは、githubに登録してあります。

今回わかったこと

1. MはETL言語である
2. Power BIはWeb上にあるデータを取得できる
3. グラフの種類は視覚化のアイコンで選ぶ
4. 日付をX軸に設定するにはひと手間必要

続く

7
9
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
7
9