LoginSignup
1
0

More than 5 years have passed since last update.

はじめに

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を開き、「データを取得」を開いて「その他」の「空のクエリ」を
選択しましょう。
WS000007.JPG

クエリ編集画面が開きますので、そこから「詳細エディター」を開きます。
WS000008.JPG

クエリを入力する画面が開きました。

WS000009.JPG

あとはAppInsightsにアクセスしてパフォーマンスカウンターを取得するクエリを
貼り付ければOKです。
次はそのクエリをどうやって取得するのかをご紹介しましょう。

AppInsightsからPowerBI用のクエリを取得する

Azure管理ポータルからAppInsightsを開きましょう。
上の方に「Analytics」というボタンがあるので、それを押します。

WS000000.JPG

そうするとAnalytics ExplorerというAppInsights用のクエリ画面が開きます。
まずは「Home Page」タブの右にある「+」ボタンを押して新しいクエリ画面を開きましょう。

WS000001.JPG

ここにクエリを入力すればAppInsightsにある好きなデータを取得することができます。
左ペインに取得できる項目の一覧があるので「performanceCounters」をダブルクリックします。

WS000002.JPG

クエリエディタに「performanceCounters」が挿入されました。

WS000003.JPG

今回はとりあえず直近1時間のデータを取得するようにしましょう。
右上にある「GO」ボタンを押してデータが取得できることを確認します。
※クエリ構文の詳細については省きます。

WS000004.JPG

クエリが大丈夫なことは確認できたので次は「Export」メニューを開いてください。

WS000005.JPG

そうするとその中に「Power BI Query (M)」というメニューがあります。
それを押すことによりPowerBI用のクエリがダウンロードできます。

WS000006.JPG

ダウンロードしたら下記クエリテキストが取得できますので、このクエリを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の詳細エディターに貼り付けて「完了」ボタンを押します。

WS000010.JPG

そうすると「接続方法を指定してください。」という警告メッセージが出ますので、隣にある「資格情報の編集」ボタンを
押して資格情報を入力していきます。

WS000011.JPG

「組織アカウント」タブを開き、「サインイン」ボタンを押してください。

WS000014.JPG

そうするとOffice365のログイン画面が開きますので、Azure管理ポータルにログインする時と同じMSアカウント情報を入力して
ログインしましょう。
ちなみに「組織アカウント」と言っていますが、この画面で出てくる「個人のアカウント」を選択しても問題ありません。

WS000015.JPG

無事サインインできると元の画面に戻るので「接続」ボタンを押します。

WS000016.JPG

データが取得できましたね。この状態で「閉じて適用」を押せば後はいつもの通りです。

WS000018.JPG

右側にパフォーマンスカウンターの項目があるので、後は好きな分析をやっていっていただければ問題ありません。

WS000019.JPG

おわりに

いかがでしたでしょうか。割と簡単にPowerBIでAppInsightsのデータが見れますよね。

特にAppInsightsを複数持っている場合でも、クエリを追加していけば一つのレポートに表示できるので、
そういう人にとっても大変有用なのではないでしょうか。
ぜひご活用ください。

ではでは。

1
0
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
1
0