Stream Analytics と Power BI:ストリーミング データのリアルタイム分析ダッシュボードStream Analytics and Power BI: A real-time analytics dashboard for streaming data

Azure Stream Analytics では、主要なビジネス インテリジェンス ツールの 1 つである Microsoft Power BI を利用することができます。Azure Stream Analytics enables you to take advantage of one of the leading business intelligence tools, Microsoft Power BI. この記事では、Azure Stream Analytics ジョブの出力として Power BI を使ってビジネス インテリジェンス ツールを作成する方法について説明します。In this article, you learn how create business intelligence tools by using Power BI as an output for your Azure Stream Analytics jobs. リアルタイム ダッシュボードを作って使う方法についても説明します。You also learn how to create and use a real-time dashboard.

この記事は、Stream Analytics によるリアルタイムでの不正検出に関するチュートリアルに続くものです。This article continues from the Stream Analytics real-time fraud detection tutorial. この記事では、前のチュートリアルで作成したワークフローに Power BI の出力を追加し、Streaming Analytics ジョブによって検出された不正な電話を視覚化できるようにします。It builds on the workflow created in that tutorial and adds a Power BI output so that you can visualize fraudulent phone calls that are detected by a Streaming Analytics job.

このシナリオを紹介する動画をご覧ください。You can watch a video that illustrates this scenario.

前提条件Prerequisites

始める前に、以下のものを用意してください。Before you start, make sure you have the following:

  • Azure アカウント。An Azure account.
  • Power BI 用のアカウント。An account for Power BI. 職場アカウントまたは学校アカウントを使うことができます。You can use a work account or a school account.
  • リアルタイムでの不正検出」チュートリアルの完成バージョン。A completed version of the real-time fraud detection tutorial. このチュートリアルには、架空の通話メタデータを生成するアプリが含まれています。The tutorial includes an app that generates fictitious telephone-call metadata. このチュートリアルでは、Event Hub を作成し、ストリーミング通話データを Event Hub に送信します。In the tutorial, you create an event hub and send the streaming phone call data to the event hub. 不正な呼び出し (別の場所で同時に同じ番号からの呼び出し) を検出するクエリを記述します。You write a query that detects fraudulent calls (calls from the same number at the same time in different locations).

Power BI の出力を追加するAdd Power BI output

リアルタイム不正検出チュートリアルでは、出力は Azure BLOB ストレージに送信されます。In the real-time fraud detection tutorial, the output is sent to Azure Blob storage. このセクションでは、Power BI に情報を送信する出力を追加します。In this section, you add an output that sends information to Power BI.

  1. 前に作成した Streaming Analytics ジョブを Azure Portal で開きます。In the Azure portal, open the Streaming Analytics job that you created earlier. 推奨される名前を使った場合、ジョブの名前は sa_frauddetection_job_demo になっています。If you used the suggested name, the job is named sa_frauddetection_job_demo.

  2. 左側のメニューで、 [ジョブ トポロジ] の下にある [出力] を選択します。On the left menu, select Outputs under Job topology. 次に、 [+ 追加] を選択し、ドロップダウン メニューから [Power BI] を選択します。Then, select + Add and choose Power BI from the dropdown menu.

  3. [+ 追加] > [Power BI] の順に選択します。Select + Add > Power BI. 次に、フォームに次の詳細を入力して、 [承認する] を選択します。Then fill the form with the following details and select Authorize:

    設定Setting 推奨値Suggested value
    出力エイリアスOutput alias CallStream-PowerBICallStream-PowerBI
    データセットの名前Dataset name sa-datasetsa-dataset
    テーブル名Table name fraudulent-callsfraudulent-calls

    Stream Analytics の出力を構成する

    警告

    この Stream Analytics ジョブで指定したものと同じ名前のデータセットとテーブルが Power BI に存在する場合は、既存のデータが上書きされます。If Power BI has a dataset and table that have the same names as the ones that you specify in the Stream Analytics job, the existing ones are overwritten. このデータセットとテーブルは Power BI アカウントに明示的に作成しないことをお勧めします。We recommend that you do not explicitly create this dataset and table in your Power BI account. Stream Analytics ジョブを開始すると自動的に作成され、Power BI への出力が開始されます。They are automatically created when you start your Stream Analytics job and the job starts pumping output into Power BI. ジョブ クエリで結果が返されない場合、データセットとテーブルは作成されません。If your job query doesn't return any results, the dataset and table are not created.

  4. [承認する] を選択すると、ポップアップ ウィンドウが開き、Power BI アカウントに対する認証のための資格情報を入力するよう求められます。When you select Authorize, a pop-up window opens and you are asked to provide credentials to authenticate to your Power BI account. 認可が成功したら、設定を保存します。Once the authorization is successful, Save the settings.

  5. Create をクリックしてください。Click Create.

データセットは、次の設定で作成されます。The dataset is created with the following settings:

  • defaultRetentionPolicy:BasicFIFO - データは FIFO で、最大行数は 200,000 です。defaultRetentionPolicy: BasicFIFO - Data is FIFO, with a maximum of 200,000 rows.
  • defaultMode: pushStreaming - データセットは、ストリーミング タイルと従来のレポートベース ビジュアル (プッシュとも呼ばれます) の両方をサポートしています。defaultMode: pushStreaming - The dataset supports both streaming tiles and traditional report-based visuals (also known as push).

現時点では、他のフラグでデータセットを作成することはできません。Currently, you can't create datasets with other flags.

Power BI データセットの詳細については、Power BI REST API リファレンスを参照してください。For more information about Power BI datasets, see the Power BI REST API reference.

クエリを作成するWrite the query

  1. [出力] ブレードを閉じて、ジョブ ブレードに戻ります。Close the Outputs blade and return to the job blade.

  2. [クエリ] ボックスをクリックします。Click the Query box.

  3. 次のクエリを入力します。Enter the following query. このクエリは、不正検出チュートリアルで作成した自己結合クエリに似ています。This query is similar to the self-join query you created in the fraud-detection tutorial. 違うのは、このクエリは作成した新しい出力 (CallStream-PowerBI) に結果を送信することです。The difference is that this query sends results to the new output you created (CallStream-PowerBI).

    注意

    不正検出チュートリアルで入力 CallStream の名前を指定しなかった場合は、クエリの FROM 句と JOIN 句の CallStream を実際の名前に置き換えます。If you did not name the input CallStream in the fraud-detection tutorial, substitute your name for CallStream in the FROM and JOIN clauses in the query.

    /* Our criteria for fraud:
    Calls made from the same caller to two phone switches in different locations (for example, Australia and Europe) within five seconds */
    
    SELECT System.Timestamp AS WindowEnd, COUNT(*) AS FraudulentCalls
    INTO "CallStream-PowerBI"
    FROM "CallStream" CS1 TIMESTAMP BY CallRecTime
    JOIN "CallStream" CS2 TIMESTAMP BY CallRecTime
    
    /* Where the caller is the same, as indicated by IMSI (International Mobile Subscriber Identity) */
    ON CS1.CallingIMSI = CS2.CallingIMSI
    
    /* ...and date between CS1 and CS2 is between one and five seconds */
    AND DATEDIFF(ss, CS1, CS2) BETWEEN 1 AND 5
    
    /* Where the switch location is different */
    WHERE CS1.SwitchNum != CS2.SwitchNum
    GROUP BY TumblingWindow(Duration(second, 1))
    
  4. [Save] をクリックします。Click Save.

クエリをテストするTest the query

このセクションは省略可能ですが、実施することをお勧めします。This section is optional, but recommended.

  1. TelcoStreaming アプリが現在動いていない場合は、次の手順で開始します。If the TelcoStreaming app is not currently running, start it by following these steps:

    • コマンド プロンプトを開きます。Open Command Prompt.

    • telcogenerator.exe ファイルと変更された telcodatagen.exe.config ファイルが存在するフォルダーに移動します。Go to the folder where the telcogenerator.exe and modified telcodatagen.exe.config files are.

    • 次のコマンドを実行します。Run the following command:

      telcodatagen.exe 1000 .2 2

  2. ご利用の Stream Analytics ジョブの [クエリ] ページで、CallStream 入力の横の点をクリックしてから、 [入力からのサンプル データ] を選択します。On the Query page for your Stream Analytics job, click the dots next to the CallStream input and then select Sample data from input.

  3. 3 分間分のデータを指定して、 [OK] をクリックします。Specify that you want three minutes' worth of data and click OK. データがサンプリングされたことが通知されるまで待ちます。Wait until you're notified that the data has been sampled.

  4. [テスト] をクリックして結果を確認します。Click Test and review the results.

ジョブを実行するRun the job

  1. TelcoStreaming アプリが実行されていることを確認します。Make sure the TelcoStreaming app is running.

  2. ご利用の Stream Analytics ジョブの [概要] ページに移動して、 [開始] を選択します。Navigate to the Overview page for your Stream Analytics job and select Start.

    Stream Analytics ジョブの開始

Streaming Analytics ジョブが、受信ストリームでの不正な呼び出しの検出を開始します。Your Streaming Analytics job starts looking for fraudulent calls in the incoming stream. また、ジョブは、Power BI にデータセットとテーブルを作成し、それらへの不正な呼び出しに関するデータの送信を開始します。The job also creates the dataset and table in Power BI and starts sending data about the fraudulent calls to them.

Power BI でのダッシュボードの作成Create the dashboard in Power BI

  1. Powerbi.com にアクセスして、職場または学校のアカウントでサインインします。Go to Powerbi.com and sign in with your work or school account. Stream Analytics ジョブ クエリで結果が出力された場合は、データセットが既に作成されていることがわかります。If the Stream Analytics job query outputs results, you see that your dataset is already created:

    Power BI でのストリーミング データセットの場所

  2. ワークスペースで [+ 作成] をクリックします。In your workspace, click + Create.

    Power BI ワークスペースの [作成] ボタン

  3. 新しいダッシュボードを作成し、名前を「Fraudulent Calls」にします。Create a new dashboard and name it Fraudulent Calls.

    Power BI ワークスペースでダッシュボードを作成して名前を付ける

  4. ウィンドウの上部にある [タイルの追加] をクリックし、 [カスタム ストリーミング データ] を選んで、 [次へ] をクリックします。At the top of the window, click Add tile, select CUSTOM STREAMING DATA, and then click Next.

    Power BI でのカスタムのストリーミング データセットのタイル

  5. [データセット] でデータセットを選んで、 [次へ] をクリックします。Under YOUR DATSETS, select your dataset and then click Next.

    Power BI でのストリーミング データセット

  6. [視覚化タイプ][カード] を選び、 [フィールド] の一覧で [fraudulentcalls] を選びます。Under Visualization Type, select Card, and then in the Fields list, select fraudulentcalls.

    新しいタイルの視覚化の詳細

  7. [次へ] をクリックします。Click Next.

  8. タイトルやサブタイトルなどのタイルの詳細を入力します。Fill in tile details like a title and subtitle.

    新しいタイルのタイトルとサブタイトル

  9. [Apply] をクリックします。Click Apply.

    不正行為カウンターができました。Now you have a fraud counter!

    Power BI ダッシュボードの不正行為カウンター

  10. 手順 4 以降を繰り返してタイルを追加します。Follow the steps again to add a tile (starting with step 4). 今度は次のようにします。This time, do the following:

    • [視覚化タイプ] では、 [折れ線グラフ] を選びます。When you get to Visualization Type, select Line chart.

    • 軸を追加し、 [windowend] を選びます。Add an axis and select windowend.

    • 値を追加し、 [fraudulentcalls] を選びます。Add a value and select fraudulentcalls.

    • [表示する時間枠] で、過去 10 分間を選びます。For Time window to display, select the last 10 minutes.

      Power BI で折れ線グラフのタイルを作成する

  11. [次へ] をクリックし、タイトルとサブタイトルを追加して、 [適用] をクリックします。Click Next, add a title and subtitle, and click Apply.

    Power BI ダッシュボードに、ストリーミング データで検出された不正な呼び出しに関するデータの 2 つのビューが表示されるようになりました。The Power BI dashboard now gives you two views of data about fraudulent calls as detected in the streaming data.

    不正な呼び出しに関する 2 つのタイルが表示されている完成した Power BI ダッシュボード

Power BI についての詳細情報Learn more about Power BI

このチュートリアルで紹介しているのは、データセットに関するほんの数種類の視覚エフェクトの作成方法です。This tutorial demonstrates how to create only a few kinds of visualizations for a dataset. Power BI は、組織の他の顧客のビジネス インテリジェンス ツールを作成するのに役立ちます。Power BI can help you create other customer business intelligence tools for your organization. 他のアイデアについては、次のリソースを参照してください。For more ideas, see the following resources:

制限事項とベスト プラクティスについてLearn about limitations and best practices

現在、Power BI は、およそ 1 秒に 1 回呼び出すことができます。Currently, Power BI can be called roughly once per second. ストリーミング ビジュアルでは、15 KB のパケットがサポートされます。Streaming visuals support packets of 15 KB. これを超えると、ストリーミング ビジュアルは失敗します (ただし、プッシュは動作し続けます)。Beyond that, streaming visuals fail (but push continues to work). このような制限から必然的に、Power BI は、Azure Stream Analytics で大幅なデータ負荷の低減が見られるケースへと落ち着きます。Because of these limitations, Power BI lends itself most naturally to cases where Azure Stream Analytics does a significant data load reduction. 1 秒あたりのデータ プッシュを 1 回以内に抑え、かつスループットの要件の範囲内にクエリを抑えるために、タンブリング ウィンドウやホッピング ウィンドウの使用をお勧めします。We recommend using a Tumbling window or Hopping window to ensure that data push is at most one push per second, and that your query lands within the throughput requirements.

必要な期間 (秒) の値は、次の数式を使用して計算することができます。You can use the following equation to compute the value to give your window in seconds:

必要な期間 (秒) の値を計算するための数式

例:For example:

  • 1 秒間隔でデータを送信するデバイスが 1,000 台。You have 1,000 devices sending data at one-second intervals.
  • 1 時間あたり 1,000,000 行をサポートする Power BI Pro SKU を使用。You are using the Power BI Pro SKU that supports 1,000,000 rows per hour.
  • デバイスごとの平均データ量を Power BI に発行する。You want to publish the amount of average data per device to Power BI.

これを式に当てはめると次のようになります。As a result, the equation becomes:

例の条件に基づく式

この構成では、最初のクエリを次のように変更できます。Given this configuration, you can change the original query to the following:

    SELECT
        MAX(hmdt) AS hmdt,
        MAX(temp) AS temp,
        System.TimeStamp AS time,
        dspl
    INTO "CallStream-PowerBI"
    FROM
        Input TIMESTAMP BY time
    GROUP BY
        TUMBLINGWINDOW(ss,4),
        dspl

承認の更新Renew authorization

ジョブが作成されてから、または最後の認証以降にパスワードが変わっている場合、Power BI アカウントを再認証する必要があります。If the password has changed since your job was created or last authenticated, you need to reauthenticate your Power BI account. また、Azure Active Directory (Azure AD) テナント上で Azure Multi-Factor Authentication が構成されている場合は、Power BI の承認を 2 週間ごとに更新する必要があります。If Azure Multi-Factor Authentication is configured on your Azure Active Directory (Azure AD) tenant, you also need to renew Power BI authorization every two weeks. 更新しなかった場合、ジョブが出力されなかったり、操作ログに "Authenticate user error" が記録されたりする現象が生じる可能性があります。If you don't renew, you could see symptoms such as a lack of job output or an Authenticate user error in the operation logs.

同様に、トークンの期限が切れた後でジョブが開始すると、エラーが発生し、ジョブは失敗します。Similarly, if a job starts after the token has expired, an error occurs and the job fails. この問題を解決するには、実行中のジョブを停止し、Power BI 出力に移動します。To resolve this issue, stop the job that's running and go to your Power BI output. データの損失を避けるには、 [承認の更新] リンクを選択し、 [最後に停止した時刻] からジョブを再開します。To avoid data loss, select the Renew authorization link, and then restart your job from the Last Stopped Time.

Power BI で承認が更新されると、承認の領域に緑色のアラートが表示され、問題が解決されたことがわかります。After the authorization has been refreshed with Power BI, a green alert appears in the authorization area to reflect that the issue has been resolved.

問い合わせGet help

さらにサポートが必要な場合は、 Azure Stream Analytics フォーラムを参照してください。For further assistance, try our Azure Stream Analytics forum.

次のステップNext steps