#はじめに
Advent Calendar 2016、17日目の投稿。
そしてその内容は・・・またPowerBI。
今回はPowerBI Desktop(以下PowerBI)にAzureのApplicationInsights(以下AppInsights)の
データを取り込んで表示する方法について簡単に説明します。
##PowerBIとは
前回の記事をご参照ください。
PowerBI DesktopとAzure DocumentDB
##Azure ApplicationInsightsとは
APM(Application Performance Monitor)です。
特色としてはVisualStudioとの親和性があったり、色んな情報が
Azure管理ポータル上で見れるよ、という点ですかね。
ApplicationInsightsへのリンク
#さて
AppInsightsにはパフォーマンスカウンターを送っています。
今回はAppInsightsからそのパフォーマンスカウンターをPowerBIに取り込むまでをやってみましょう。
AppInsightsはWebAPIを提供していますが、PowerBIはそのようなデータソースも
取り込めるようになっています。
PowerBIを開き、「データを取得」を開いて「その他」の「空のクエリ」を
選択しましょう。
クエリ編集画面が開きますので、そこから「詳細エディター」を開きます。
クエリを入力する画面が開きました。
あとはAppInsightsにアクセスしてパフォーマンスカウンターを取得するクエリを
貼り付ければOKです。
次はそのクエリをどうやって取得するのかをご紹介しましょう。
#AppInsightsからPowerBI用のクエリを取得する
Azure管理ポータルからAppInsightsを開きましょう。
上の方に「Analytics」というボタンがあるので、それを押します。
そうするとAnalytics ExplorerというAppInsights用のクエリ画面が開きます。
まずは「Home Page」タブの右にある「+」ボタンを押して新しいクエリ画面を開きましょう。
ここにクエリを入力すればAppInsightsにある好きなデータを取得することができます。
左ペインに取得できる項目の一覧があるので「performanceCounters」をダブルクリックします。
クエリエディタに「performanceCounters」が挿入されました。
今回はとりあえず直近1時間のデータを取得するようにしましょう。
右上にある「GO」ボタンを押してデータが取得できることを確認します。
※クエリ構文の詳細については省きます。
クエリが大丈夫なことは確認できたので次は「Export」メニューを開いてください。
そうするとその中に「Power BI Query (M)」というメニューがあります。
それを押すことによりPowerBI用のクエリがダウンロードできます。
ダウンロードしたら下記クエリテキストが取得できますので、このクエリをPowerBIに適用しましょう。
/*
The exported Power Query Formula Language (M Language ) can be used with Power Query in Excel
and Power BI Desktop.
For Power BI Desktop follow the instructions below:
1) Download Power BI Desktop from https://powerbi.microsoft.com/desktop/
2) In Power BI Desktop select: 'Get Data' -> 'Blank Query'->'Advanced Query Editor'
3) Paste the M Language script into the Advanced Query Editor and select 'Done'
*/
let AnalyticsQuery =
let Source = Json.Document(Web.Contents("https://management.azure.com/subscriptions/{・・・省略・・・}/api/query?api-version=2014-12-01-preview",
[Query=[#"csl"="performanceCounters | where timestamp >= ago(1h) ",#"x-ms-app"="AAPBI"],Timeout=#duration(0,0,4,0)])),
TypeMap = #table(
{ "DataType", "Type" },
{
{ "Double", Double.Type },
{ "Int64", Int64.Type },
{ "Int32", Int32.Type },
{ "Int16", Int16.Type },
{ "UInt64", Number.Type },
{ "UInt32", Number.Type },
{ "UInt16", Number.Type },
{ "Byte", Byte.Type },
{ "Single", Single.Type },
{ "Decimal", Decimal.Type },
{ "TimeSpan", Duration.Type },
{ "DateTime", DateTimeZone.Type },
{ "String", Text.Type },
{ "Boolean", Logical.Type },
{ "SByte", Logical.Type }
}),
DataTable = Source[Tables]{0},
Columns = Table.FromRecords(DataTable[Columns]),
ColumnsWithType = Table.Join(Columns, {"DataType"}, TypeMap , {"DataType"}),
Rows = Table.FromRows(DataTable[Rows], Columns[ColumnName]),
Table = Table.TransformColumnTypes(Rows, Table.ToList(ColumnsWithType, (c) => {c{0}, c{3}}))
in
Table
in AnalyticsQuery
#取得したクエリをPowerBIに適用する
取得したクエリを先ほどのPowerBIの詳細エディターに貼り付けて「完了」ボタンを押します。
そうすると「接続方法を指定してください。」という警告メッセージが出ますので、隣にある「資格情報の編集」ボタンを
押して資格情報を入力していきます。
「組織アカウント」タブを開き、「サインイン」ボタンを押してください。
そうするとOffice365のログイン画面が開きますので、Azure管理ポータルにログインする時と同じMSアカウント情報を入力して
ログインしましょう。
ちなみに「組織アカウント」と言っていますが、この画面で出てくる「個人のアカウント」を選択しても問題ありません。
無事サインインできると元の画面に戻るので「接続」ボタンを押します。
データが取得できましたね。この状態で「閉じて適用」を押せば後はいつもの通りです。
右側にパフォーマンスカウンターの項目があるので、後は好きな分析をやっていっていただければ問題ありません。
#おわりに
いかがでしたでしょうか。割と簡単にPowerBIでAppInsightsのデータが見れますよね。
特にAppInsightsを複数持っている場合でも、クエリを追加していけば一つのレポートに表示できるので、
そういう人にとっても大変有用なのではないでしょうか。
ぜひご活用ください。
ではでは。