Azure Table Storage をビジュアライズ―Power Query for Excel と Power BI Desktop
JSON 形式のメッセージを格納した Azure Table Storage を、
- Power Query for Excel
- Power BI Desktop(旧Power BI Desginer)
2つの方法でビジュアライズする手順です。
両方ともアカウントの用意は必要なく、Excel やツールのダウンロードで行うことができます。Power BI のアカウントを用意すれば、Power BI Desktop から Power BI に発行し、 Web 等で確認することもできます。
サンプルデータは、2,000件、検索は凝ったことをしなければ可能、ただデータのリアルタイムな同期は今回ありません。
Azure Table Storage の他の確認方法として Azure Storage Explorer や LINQPad もあります。
参考
Azure Table Storage とサンプルデータの準備
画像は、データを用意した後の Azure Table Storage を Azure Storage Explorer で確認したものです。テーブル「CustomerTable」の列「Object」に、JSON 形式を格納した行が 2,000 件あります。今回は、サンプルデータとして、Free Sample Data for Testing にある Free の CSV ファイルを 4 つ分 Azure Table Storage にインポートしました。
インポートした時のコードは、gist にあります。
Power Query for Excel を使う
Power Query for Excel でデータを確認する方法です。Excel 2013 または Excel 2016 が必要です。(それ以前のバージョンは未確認です。)
Excel 2013 を使う場合は、Microsoft Power Query for Excel をこちら からダウンロードします。
Excel 2016 では、Power Query の機能がすでに組み込まれているため(参照 What's new in Excel 2016 for Windows)、ダウンロードする必要はありません。
Excel 2013 の場合
Microsoft Power Query for Excel をダウンロードした後、Excel 2013 を起動し新しいファイルを用意します。
「POWER QUERY」のタブ→「Azure から」→「Microsoft Azure テーブルストレージから」をクリック。
Excel 2016 の場合
「データ」→「新しいクエリ」→「Azure から」→「Microsoft Azure テーブルストレージから」
以降、Excel 2016 で記述します。
Azure Table Storage の AccountName と AccountKey の入力が求められるので、Azure の管理ポータルから値を確認し、入力。
「CustomerTable」を選択し、図のように「読み込む」をクリック。
この時点で全件読み込まれ、Excel に表示されます。
JSON 形式のデータを確認します。
図のように、「ブッククエリ」にある「クエリ」を右クリックし、「編集」をクリック(または、「クエリ」タブから「編集」)。
クエリエディターが開くので、「Content」の右側にあるボタンをクリック。
すべての列にチェックし、「OK」。
データが展開されます。
列「Content.Object」を右クリックし、「変換」→「JSON」をクリック。
「Record」と表示されるので、また「Content.Object」の右にあるボタンをクリック、表示したいフィールドを選択し、「OK」をクリック。
すると、JSON形式の各プロパティが列として独立して表示されます。
クエリの内容は、「ホーム」→「詳細エディター」から確認できます。
今回のクエリ①
let ソース = AzureStorage.Tables("misost"), CustomerTable1 = ソース{[Name="CustomerTable"]}[Data], #"展開された Content" = Table.ExpandRecordColumn(CustomerTable1, "Content", {"Object"}, {"Content.Object"}), #"解析された JSON" = Table.TransformColumns(#"展開された Content",{{"Content.Object", Json.Document}}), #"展開された Content.Object" = Table.ExpandRecordColumn(#"解析された JSON", "Content.Object", {"Id", "FirstName", "LastName", "CompanyName", "Address", "City", "State", "Post", "Phone1", "Phone2", "Email", "Web"}, {"Content.Object.Id", "Content.Object.FirstName", "Content.Object.LastName", "Content.Object.CompanyName", "Content.Object.Address", "Content.Object.City", "Content.Object.State", "Content.Object.Post", "Content.Object.Phone1", "Content.Object.Phone2", "Content.Object.Email", "Content.Object.Web"}) in #"展開された Content.Object"
最後に「閉じて読み込む」で、Excel に反映されます。
Power BI Desktop を使う
Power BI Desktop の場合です。公式サイトからダウンロードしてきます。 Power BI Desktop
セッティング方法はほぼ先ほどの Excel と同じように進みますので、省略します。
実際に試す場合は、「クエリの編集」から先ほどのクエリ(クエリ①)をコピペすると楽です。
クエリを適用した後、右側の「Content.Object.State」にチェックをいれただけで、↓のように表示してくれました。
円グラフとか。
Power BI のアカウントを用意し、「発行」をクリックすると、ブラウザ上でこんな感じに。
Power BI のモバイルアプリもあるので、それで見てみたり。
疑問
Azure Storage Explorer 以外に表示する方法ないかなーと見てたら Power BI まできてしまいました。
今回は全件読み込んで表示、という形になりましたが、Azure Table Storage に対するクエリ制御がどこまで制御できるのか分からず。
メモ
Querying Windows Azure Table Storage with LINQPad
LINQPadはLINQPadかなあ
https://msdn.microsoft.com/ja-jp/library/azure/dd179423.aspx
REST API でたたく(恐らくキーが面倒)
https://azure.microsoft.com/ja-jp/documentation/articles/storage-dotnet-how-to-use-tables/
C# で
http://yomon.hatenablog.com/entry/2015/01/16/192623
PowerShell で