LoginSignup
3
4

More than 3 years have passed since last update.

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

Last updated at Posted at 2020-10-21

Power BI October 2020 Update

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

image.png
image.png

詳細は 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 テーブルの推論とはどんな機能なのでしょうか?
これを有効にするには以下の手順が必要です。

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

image.png
[その他] - [Web] - [接続] の順でクリック
image.png
ここにさっきの URL を貼り付ける
image.png
そうすると何事もなく Power Query エディター にこうやってデータが読み込まれる
実は既にこの状態で新機能が動作しているのである

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

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

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

Power BI Desktop を起動して [ファイル] - [オプションと設定] - [オプション] を開き [JSON テーブルの推論]OFF にし、Power BI Desktop を再起動しましょう。
image.png
Power BI Desktop を再起動したら、先ほどと同様に [Web] コネクタを選択して以下の URL を指定してみてください。

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

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

JSON の確認

ここでちょっと今回読み込んでいる JSON の確認をしておきましょう。
以下はダウンロードした JSON ファイルを Visual Studio Code で開いた画像です。
image.png
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 エディター が開きます。
image.png

[JSON テーブルの推論]ON の場合
image.png
[JSON テーブルの推論]OFF の場合
image.png

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

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

はい、クエリを比較するとよくわかるのですが、この機能が 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/

3
4
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
3
4