チュートリアル: 処理されたデータから分析情報を取得する

この記事では、前の記事で Event Hubs に送信した OPC UA データから分析情報をキャプチャする リアルタイム ダッシュボード を作成します。 Microsoft Fabric Real-Time インテリジェンスを使用すると、Event Hubs からのデータをMicrosoft Fabricに取り込み、リアルタイム ダッシュボードのソースとなる KQL データベースにマップします。 その後、ダッシュボードを作成し、経時的に分析情報をキャプチャして値を表示するビジュアル タイルにそのデータを表示します。

これらの操作は、エンド ツー エンドのサンプル エクスペリエンスの最後の手順です。これは、エッジでのAzure IoT Operationsのデプロイから、クラウド内のそのデバイス データからの分析情報の取得までです。

前提条件

このチュートリアルを開始する前に、「 チュートリアル: データ フローを使用して資産からクラウドにメッセージを送信する」を完了してください。

また、次のFabricリソースも必要です。

  • Microsoft Fabric サブスクリプション。 サブスクリプションでは、 共同作成者 以上のアクセス許可を持つワークスペースにアクセスする必要があります。
  • リアルタイム ダッシュボードの作成を可能にするMicrosoft Fabric テナント。 テナント管理者は、この設定を有効にすることができます。 詳しくは、「管理ポータルで、テナント設定を有効にする」をご覧ください。

どのような問題が解決されますか?

OPC UA データがクラウドに到着すると、豊富な情報を分析できます。 データを整理し、グラフと視覚化を使用してレポートを作成し、分析情報を得る。 この記事では、データを Real-Time Intelligence に接続し、リアルタイム ダッシュボードを作成する方法について説明します。

リアルタイム インテリジェンスにデータを取り込む

このセクションでは、Microsoft Fabric の Eventstream を設定して、リアルタイム インテリジェンスの KQL データベースにイベント ハブを接続します。 このプロセスには、ペイロード データを JSON 形式から KQL の列に変換するためのデータ マッピングの設定が含まれます。

Eventstream を作成する

このセクションでは、Event Hubs から Microsoft Fabric のリアルタイム インテリジェンスに、そして最終的には KQL データベースにデータを取り込むために使われる、Eventstream を作成します。

まずは、Microsoft Fabric のリアルタイム インテリジェンス エクスペリエンスに移動し、Fabric ワークスペースを開きます。

Microsoft Fabric での Eventstream の作成」の手順に従って、ワークスペースに新しい Eventstream リソースを作成します。

Eventstream が作成されると、メイン エディターが表示され、そこで Eventstream の作成を開始できます。

ソースとしてイベント ハブを追加する

次に、前のチュートリアルのイベント ハブを Eventstream のデータ ソースとして追加します。

イベント ソースの追加は、「Azure Event Hubs のソースをイベントストリームに追加する」の手順のようにして行います。 次の点に注意してください。

  • 共有アクセス キー認証を使用して新しいクラウド接続を作成します。
    • イベント ハブでローカル認証が有効になっていることを確認します。 これは、Azure portal の [概要] ページから設定できます。
  • [コンシューマー グループ] では、既定の選択 ($Default) を使用します。
  • [データ形式] では、[JSON] を選択します (既定で既に選択されている可能性があります)。

このフローを完了すると、Azure イベント ハブが Eventstream ライブ ビューにソースとして表示されます。

AzureEventHub ソースを含む Eventstream のスクリーンショット。

データ フローの検証

次の手順のようにしてこれまでの作業を確認し、データが Eventstream に流れることを確認します。

  1. 前のチュートリアルで Azure IoT Operations をデプロイしたクラスターを開始します。 Azure IoT Operations インスタンスと共にデプロイした OPC PLC シミュレーターが実行し、MQTT ブローカーへのデータの送信を始めるはずです。 「データが流れていることを確認する」の説明に従い、mqttui を使ってフローのこの部分を確認できます。

  2. データが伝達されるまで数分待ちます。 次に、Eventstream ライブ ビューで、AzureEventHub ソースを選んで [データ プレビュー] を更新します。 シミュレーターからの JSON データがテーブルに表示され始めることがわかります。

    AzureEventHub ソースからのデータを含む Eventstream のスクリーンショット。

ヒント

データが Eventstream に到達していない場合は、イベント ハブのアクティビティを調べて、メッセージを受信していることを確認することをお勧めします。 これは、デバッグするフローのセクションを分離するのに役立ちます。

KQL リソースを準備する

このセクションでは、データの送り先として使う KQL データベースを Microsoft Fabric ワークスペースに作成します。

  1. イベントハウスを作成する」の手順に従い、子 KQL データベースを含むリアルタイム インテリジェンス イベントハウスを作成します。 完了する必要があるのは、「イベントハウスを作成する」という名前のセクションだけです。

  2. 次に、データベース内にテーブルを作成します。 それに OPCUA という名前を付けて、次の列を使います。

    列名 データ型
    資産ID 文字列
    温度 10 進
    タイムスタンプ datetime
  3. OPCUA テーブルが作成されたら、ご自分のデータベースを選択し、[コードを使用したクエリ] ボタンを使ってクエリ ウィンドウを開きます。

    [データの探索] ボタンを示すスクリーンショット。

  4. 既存のコードを削除し、次の KQL クエリを実行して、テーブルのデータ マッピングを作成します。 データ マッピングは、 opcua_mapping という名前になります。

    .create table ['OPCUA'] ingestion json mapping 'opcua_mapping' '[{"column":"AssetId", "Properties":{"Path":"$[\'AssetId\']"}},{"column":"Temperature", "Properties":{"Path":"$[\'ThermostatTemperatureF\']"}},{"column":"Timestamp", "Properties":{"Path":"$[\'EventProcessedUtcTime\']"}}]'
    

データ テーブルを送り先として追加する

次に、Eventstream ビューに戻ると、新しい KQL テーブルを Eeventstream の送り先として追加できます。

イベントストリームに KQL データベースの転送先を追加する」の手順に従って、送り先を追加します。 次の点に注意してください。

  • 直接インジェスト モードを使います。

  • [構成] ステップでは、前に作成した OPCUA テーブルを選びます。

  • [検査] ステップで、[opcua_mapping] を選択し、[既存のマッピング] を選んで、[opcua_mapping] を選択します。

    既存のマッピングの追加のスクリーンショット。

    ヒント

    既存のマッピングが見つからない場合は、Eventstream エディターを最新の情報に更新して、送り先追加手順をもう一度始めてみます。 または、「Eventstreams からデータを取得する」で説明されているように、Eventstream からではなく KQL テーブルからこの同じ構成プロセスを始めることもできます。

このフローを完了すると、KQL テーブルが Eventstream ライブ ビューに送り先として表示されます。

データが伝達され、宛先の状態が アクティブに変わるまで数分待ちます。 イベント ハブからのデータがプレビューに表示され始めることがわかります。 データがプレビューに表示されない場合は、数分待ってからプレビューをもう一度更新してください。

KQL データベース送り先のデータでの Eventstream のスクリーンショット。

必要に応じて、このデータの表示とクエリを KQL データベースで直接行うこともできます。

KQL データベースから同じデータのクエリを実行しているスクリーンショット。

リアルタイム ダッシュボードの作成

このセクションでは、チュートリアルのデータを視覚化するために新しいリアルタイム ダッシュボードを作成します。 ダッシュボードでは、資産 ID とタイムスタンプによるフィルター処理が可能になり、温度データの視覚的な概要が表示されます。

リアルタイム ダッシュボードを作成できるのは、テナント管理者が Fabric テナントでリアルタイム ダッシュボードの作成を有効にしている場合のみです。 詳しくは、「管理ポータルで、テナント設定を有効にする」をご覧ください。

ダッシュボードを作成してデータ ソースを接続する

新しいダッシュボードを作成する」セクションの手順に従って、リアルタイム インテリジェンスの機能から新しいリアルタイム ダッシュボードを作成します。

次に、「データ ソースの追加」セクションの手順に従って、データベースをデータ ソースとして追加します。 次の点に注意してください。

  • [データ ソース] ペインでは、データベースは [Eventhouse/KQL データベース] の下にあります。

パラメータのコンフィギュレーション

次に、資産 ID とタイムスタンプでビジュアルをフィルター処理できるようにするために、ダッシュボードのいくつかのパラメーターを構成します。 ダッシュボードには、時間の範囲でフィルター処理するための既定のパラメーターが用意されているため、資産 ID でフィルター処理できるパラメーターを作成するだけで済みます。

  1. [管理] タブに切り替え、[パラメーター] を選択します。 [+ 追加] を選択して、新しいパラメーターを追加します。

    ダッシュボードへのパラメーターの追加の様子のスクリーンショット。

  2. 以下の特性を持つ新しいパラメーターを作成します。

    • ラベル: "資産"
    • パラメーターの種類: "単一選択" (既定で既に選択されています)
    • 変数名: _asset
    • データ型: string (既定で既に選択されています)
    • ソース: "クエリ"
      • データ ソース: データベース (既定で既に選択されています)

      • [クエリの編集] を選択し、次の KQL クエリを追加します。

        OPCUA
        | summarize by AssetId
        
    • 値列: AssetId
    • 既定値: "クエリの最初の値を選択する"
  3. [完了] を選択してパラメーターを保存します。 次に、[ 閉じる ] を選択してパラメーター ウィンドウを閉じます。

折れ線グラフ タイルを作成する

次に、ダッシュボードにタイルを追加して、選択した資産と時間範囲の時系列の温度の折れ線グラフを表示します。

  1. [ ホーム ] タブで、[ ビジュアルの追加 ] ドロップダウンを選択し、[ 折れ線グラフ ] を選択して新しい折れ線グラフ タイルを追加します。

    折れ線グラフ タイルをダッシュボードに追加するスクリーンショット。

  2. クエリ エディターで、タイルに対して次の KQL クエリを入力します。 このクエリは、時間範囲と資産のダッシュボード セレクターからフィルター パラメーターを適用し、結果のレコードをタイムスタンプと温度でプルします。

    OPCUA 
    | where Timestamp between (_startTime.._endTime)
    | where AssetId == _asset
    | project Timestamp, Temperature
    

    クエリを [実行] して、データが見つかることを確認します。 折れ線グラフビジュアルにデータが表示されます。 折れ線グラフのビジュアルでは、少なくとも 2 つのデータ ポイントが表示される必要があるため、データが表示されない場合は、より広い時間範囲を選択するか、クエリを実行する前にデータベースにデータが到着するのを待つ必要があります。

    タイル クエリの追加のスクリーンショット。

  3. [ 視覚化 ] タブを選択し、次の値を設定または確認します。

    • ビジュアルの種類: 折れ線グラフ (既定の選択)
    • 全般:
      • タイル名: 時間経過に伴う温度の変化
    • Data:
      • Y 列: 推論: 温度 (10 進数) (既定の選択)
      • X 列: 推定: タイムスタンプ (日時) (既定で選択)
    • Y 軸:
      • ラベル: "単位"
    • X 軸:
      • ラベル: "タイムスタンプ"

    [ 完了] を 選択してタイルを作成します。

    タイル ビジュアルの追加のスクリーンショット。

完成したタイルをダッシュボードに表示します。

1 つのタイルを含むダッシュボードのスクリーンショット。

最大値タイルを作成

次に、温度の最大値を表示するタイルを作成します。

  1. [ ビジュアルの追加] ドロップダウンを選択し、[ 統計] を選択します。

  2. クエリ エディターで、タイルに対して次の KQL クエリを入力します。 このクエリは、時間の範囲と資産に対して、ダッシュボード セレクターのフィルター パラメーターを適用して、結果のレコードから温度の最高値を取得します。

    OPCUA
    | where Timestamp between (_startTime.._endTime)
    | where AssetId == _asset
    | top 1 by Temperature desc
    | summarize by Temperature
    

    クエリを [実行] して、最高温度が見つかることを確認します。 最高温度の値は、ビジュアル プレビューに表示されます。

  3. [ 視覚化 ] タブを選択し、次の値を設定または確認します。

    • ビジュアルの種類: 統計 (既定の選択)
    • 全般:
      • タイル名: 最高温度
    • Data:
      • 値列: 推論: 温度 (10 進数) (既定の選択)

    [ 完了] を 選択してタイルを作成します。

    統計ビジュアルの追加のスクリーンショット。

  4. 完成したタイルをダッシュボードに表示します (テキストを完全に表示するには、タイルのサイズ変更が必要な場合があります)。

    2 つのタイルを含むダッシュボードのスクリーンショット。

  5. 完成したダッシュボードを [保存] します。

これで、以上のチュートリアルでの資産データに関するさまざまな種類のビジュアルを表示するダッシュボードが作成されました。 ここからは、自分でフィルターを試したり、他のタイルの種類を追加したりして、ダッシュボードでデータをさらに操作できる方法を確認できます。

問題をどのように解決したか。

このチュートリアルでは、Eventstream を使って、Event Hubs のデータを Microsoft Fabric リアルタイム インテリジェンスの KQL データベースに取り込みました。 次に、そのデータを利用して、時間と共に変化する値を視覚的に追跡するリアルタイム ダッシュボードを作成しました。 さまざまなソースからのエッジ データを Microsoft Fabric で関連付けると、資産の正常性、使用率、運用傾向に関するより深い分析情報を提供する、視覚化と対話の機能を備えたレポートを作成できます。 これにより、生産性を高め、資産のパフォーマンスを向上させ、情報に基づいた意思決定を促進していっそう高いビジネス成果を上げることができます。

これで、クラウドでの Azure IoT Operations を使用したデバイス データのデプロイから分析までの管理に関するチュートリアル フローの最後のステップは終わりです。

リソースをクリーンアップする

次のチュートリアルに進む場合は、すべてのリソースを保持してください。

Azure IoT Operations デプロイは削除するが、クラスターは保持する場合は、az iot ops delete コマンドを使用します。

az iot ops delete --name $AIO_INSTANCE_NAME --resource-group $RESOURCE_GROUP

このクイックスタート用に作成したすべてのリソースを削除する場合は、Azure IoT Operations をデプロイした Kubernetes クラスターを削除した後、そのクラスターを含んでいた Azure リソース グループを削除します。

このリソース グループには、このチュートリアルで作成した Event Hubs 名前空間が含まれています。

また、このチュートリアルに関連付けられている Microsoft Fabric ワークスペースやその中の Eventstream、Eventhouse、リアルタイム ダッシュボードなどのすべてのリソースも削除してかまいません。