miso_soup3 Blog

主に ASP.NET 関連について書いています。

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 ExplorerLINQPad もあります。

参考

Azure Table Storage とサンプルデータの準備

f:id:miso_soup3:20150929180630p:plain

画像は、データを用意した後の 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 テーブルストレージから」をクリック。

f:id:miso_soup3:20150929180646p:plain

Excel 2016 の場合

「データ」→「新しいクエリ」→「Azure から」→「Microsoft Azure テーブルストレージから」

f:id:miso_soup3:20150929180659p:plain

以降、Excel 2016 で記述します。

Azure Table Storage の AccountName と AccountKey の入力が求められるので、Azure の管理ポータルから値を確認し、入力。

f:id:miso_soup3:20150929180713p:plain

「CustomerTable」を選択し、図のように「読み込む」をクリック。

f:id:miso_soup3:20150929180719p:plain

この時点で全件読み込まれ、Excel に表示されます。

f:id:miso_soup3:20150929180728p:plain

JSON 形式のデータを確認します。
図のように、「ブッククエリ」にある「クエリ」を右クリックし、「編集」をクリック(または、「クエリ」タブから「編集」)。

f:id:miso_soup3:20150929180736p:plain

クエリエディターが開くので、「Content」の右側にあるボタンをクリック。
すべての列にチェックし、「OK」。

f:id:miso_soup3:20150929180752p:plain

データが展開されます。

f:id:miso_soup3:20150929180758p:plain

列「Content.Object」を右クリックし、「変換」→「JSON」をクリック。

f:id:miso_soup3:20150929180804p:plain

「Record」と表示されるので、また「Content.Object」の右にあるボタンをクリック、表示したいフィールドを選択し、「OK」をクリック。

f:id:miso_soup3:20150929180811p:plain
f:id:miso_soup3:20150929180814p:plain

すると、JSON形式の各プロパティが列として独立して表示されます。

f:id:miso_soup3:20150929180821p:plain

クエリの内容は、「ホーム」→「詳細エディター」から確認できます。

f:id:miso_soup3:20150929180827p:plain

今回のクエリ①

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 に反映されます。

f:id:miso_soup3:20150929180926p:plain
f:id:miso_soup3:20150929180942p:plain

Power BI Desktop を使う

Power BI Desktop の場合です。公式サイトからダウンロードしてきます。 Power BI Desktop

セッティング方法はほぼ先ほどの Excel と同じように進みますので、省略します。

f:id:miso_soup3:20150929180918p:plain

実際に試す場合は、「クエリの編集」から先ほどのクエリ(クエリ①)をコピペすると楽です。

クエリを適用した後、右側の「Content.Object.State」にチェックをいれただけで、↓のように表示してくれました。

f:id:miso_soup3:20150929181007p:plain

円グラフとか。

f:id:miso_soup3:20150929181015p:plain

Power BI のアカウントを用意し、「発行」をクリックすると、ブラウザ上でこんな感じに。

f:id:miso_soup3:20150929181026p:plain

Power BI のモバイルアプリもあるので、それで見てみたり。

f:id:miso_soup3:20150929181537j:plain

疑問

Azure Storage Explorer 以外に表示する方法ないかなーと見てたら Power BI まできてしまいました。

今回は全件読み込んで表示、という形になりましたが、Azure Table Storage に対するクエリ制御がどこまで制御できるのか分からず。