[Power BI Tips] JSON テーブルの推論をちょっと試してみた


Power BI October 2020 Update

珍しく Power BI の更新情報から扱ってみようと思います。
2020年10月版のアップデートは以下の通り


詳細は Power BI Blog を見てください。オススメはブログ内にある YouTube を見てから、気になるところをブログで確認する感じですね。
ブログを開いて、「うわ!英語じゃん」って言って、そっ閉じしたアナタ!ブラウザの翻訳機能を使うのです!!!
https://powerbi.microsoft.com/ja-jp/blog/power-bi-october-2020-feature-summary/

本記事で取り扱うのは上の画像 1 ページ目の [Data Preparation] - [Automatic Table Detection from JSON files] の挙動です

JSON テーブルの推論

さて、JSON テーブルの推論とはどんな機能なのでしょうか?
これを有効にするには以下の手順が必要です。


[ファイル] - [オプションと設定] - [オプション] です。

[プレビュー機能] を開くと [JSON テーブルの推論] があります。ちなみに今回のアップデートで同じく追加された機能 [Excel テーブルの推論] もあります。

ここで有効にしたいプレビュー機能にチェックを入れて、OK をクリックすると Power BI Desktop の再起動を求められますので、一度アプリを閉じて再度開けば、有効になっています。

今回この機能を試すには JSON ファイルが必要なので、de:code 2020 のセッションリストの JSON を使用しましょう。以下の URL をコピーしておいてください。

decode2020のセッションリストURL
https://www.microsoft.com/ja-jp/events/decode/2020session/export.asmx/JSON

試してみる

JSON テーブルの推論 ON の場合

さっそく [JSON テーブルの推論]ON の状態で上記の URL を指定して JSON ファイルを読み込んでみましょう。
Power BI Desktop を起動すると以下のような画面になります

これまでのバージョンを知っている方は「おや?」って思われたはずです。
そう、今回のアップデートで空のページに ウォーターマーク が入りました。真ん中に並んでいる文字とアイコンのことです。これがレポートを作成する際の、最初の ナビゲーション的な役割 を果たしています。もちろんこれらの ウォーターマーク から進まなくても OK です。リボンから操作を選択するのも可能ですし、[ファイル] から操作を選択することも可能です。せっかくなので今回は、この ウォーターマーク から勧めましょう。赤枠で囲んである [別のソースからデータを取得する→] をクリックしてください。


[その他] - [Web] - [接続] の順でクリック

ここにさっきの URL を貼り付ける

そうすると何事もなく Power Query エディター にこうやってデータが読み込まれる
実は既にこの状態で新機能が動作しているのである

「え?何が??」 って思った方、ご安心を。それを解説していくのが、このブログである。

では比較のために [JSON テーブルの推論]OFF にして同じ JSON ファイルを読み込んでみよう。その為には Power BI Desktop をもう一つ別に起動する必要があるので、いったんいま開いてる Powe BI Desktop[閉じて適用] を押した後に 「JSON テーブルの推論_ON」 という名前で保存しておこう。

JSON テーブルの推論 OFF の場合

Power BI Desktop を起動して [ファイル] - [オプションと設定] - [オプション] を開き [JSON テーブルの推論]OFF にし、Power BI Desktop を再起動しましょう。

Power BI Desktop を再起動したら、先ほどと同様に [Web] コネクタを選択して以下の URL を指定してみてください。

decode2020のセッションリストURL
https://www.microsoft.com/ja-jp/events/decode/2020session/export.asmx/JSON


はい、上記の画像のようになったはずです。明らかに先ほどと違いますよね?

JSON の確認

ここでちょっと今回読み込んでいる JSON の確認をしておきましょう。
以下はダウンロードした JSON ファイルを Visual Studio Code で開いた画像です。

JSON が読める人なら説明は不要ですが、この JSON は 2 行目の "SessionList" という配列(リスト)の中に1セッションごとのデータが含まれています。

4行目の "Session" から 47 行目の閉じカッコ } までが "Session" という Key で表されるデータ(オブジェクト)です。
その中に

  • "Language"
  • "MainSpeaker"
  • "REfLinks"
  • "SessionDetails"
  • など

などが続きます。これが Power BI Desktop で読み込んだ際の 列(カラム)になります。LanguageMainSpeaker はオブジェクトで保持していますので、これらは Power BIPower Query エディターで読み込むと Record 型 として認識がされます。一方、RefLinks, SubSpeakerList, TargetList, TopicList などは配列としてオブジェクトを保持していますので、これらは Power Query エディターで読み込むと List 型 になります。

これらを覚える必要はなく、JSON が読める人はなんとなく、「ほぉー、そんなもんか」と思ってもらえればよいですし、JSON がよくわからないという人もまた「ふーん、なんかそんな感じなのね」で十分です。もし興味がわいたら、JSON を勉強してみてください。わからないよりわかった方が、便利なのは確かです。

[JSON テーブルの推論]ONOFF の比較

ではもういちど Power Query で読み込んだ直後をそれぞれのパターンで比較してみましょう。
マシンスペックが許す方は、先ほど保存した「JSON テーブルの推論_ON.pbix」を開いてください。
Power BI Desktop が起動したらリボンの [データの変換] をクリックしてください。Power Query エディター が開きます。

[JSON テーブルの推論]ON の場合

[JSON テーブルの推論]OFF の場合

それぞれの結果が異なるのは一目瞭然なのですが、いったい何が違うのか?それではそれぞれのクエリを 詳細エディター で見てみましょう。リボンにある [詳細エディター] をクリックしてください。

[JSON テーブルの推論]ON の場合のクエリ

[JSON テーブルの推論]OFF の場合のクエリ

はい、クエリを比較するとよくわかるのですが、この機能が OFF の場合は Power Query が実質 1 行で終わってます。

PowerQuery
Source = Json.Document(Web.Contents("https://www.microsoft.com/ja-jp/events/decode/2020session/export.asmx/JSON"))

これは指定された URLGET メソッドで HTTP リクエストを出して、その結果を取得し、Json.Document 関数で JSON として処理をしています。
まぁつまり指定された URL から JSON をゲットしているわけです。

一方 [JSON テーブルの推論]ON の場合 を見てみると 2 行目は同じなのですが、なにやらそれに続きが 7 行ほどあります。これは OFF の場合から順にテーブルに変換して、JSON を開いていく処理になります。先ほど Visual Studio CodeJSON を確認しましたが、要は JSON 構造を上から順に下って行って、データを開いているわけです。

これについての詳細は以下の私の YouTube をご覧ください。詳細に解説しています
Power BI 王子の Tips 集 ~ セッションリストの作り方 02 ~https://youtu.be/elZX_fWl-jg

つまり今回新たに追加された機能 [JSON テーブルの推論]ON にすると、動画の中で順にポチポチして、JSON を開いていますが、これを推測して、Power Query を自動生成してくれます。

「まぁー、なんとういうことでしょう」

便利ですねー。ただ、あくまでも 推論(推測) なので、もしかしたら、思っているように展開してくれないこともありえます。とても複雑な JSON とかだと対応できない場合があるかもしれません。その場合は、この機能を OFF にして、上記の YouTube 動画のように順に試してみてください。

また、機能を ON にした場合の最後の #"Changed Type" にも注目です。JSON データには、数値、文字列、日付などの型情報がないため、 これまでは JSON を読み込んだら、最後に一列ずつ型を指定する必要がありました。この推論機能では、型も推測してくれていることがわかります。ただ、あくまでも推測なので、必ず意図している型になっているかは、確認してください。

まとめ

はい、いかがでしたでしょうか?
今回は 2020年10月版Power BI Desktop に追加されたプレビュー機能 [JSON テーブルの推論] を試してみました。これまでと何が変わったのか、そしてどういうことに使えそうか、少しでもご理解いただけたら幸いです。

最後まで読んでいただきありがとうございました。また気が向いたら、Power BI Tips シリーズを書きます。
皆様からのリクエスト、お待ちしております。

何かリクエストがあれば、以下までー🤗
Twitter: https://twitter.com/yugoes1021
Facebook: https://www.facebook.com/yugoes1021
LinkedIn: https://www.linkedin.com/in/yugoes1021/