Azure Time Series Insights Gen2 のタイム シリーズ モデル

Note

Time Series Insights (TSI) サービスは、2025 年 3 月以降はサポートされなくなります。 できるだけ早く既存の TSI 環境を代替ソリューションに移行することを検討してください。 サポートの終了と移行の詳細については、こちらのドキュメントを参照してください。

この記事ではタイム シリーズ モデルに関して、機能、および Azure Time Series Insights Gen2 環境で独自のモデルのビルドと更新を開始する方法について説明します。

ヒント

まとめ

これまで、IoT デバイスから収集されたデータにはコンテキスト情報が不足していたため、センサーをすばやく検索して分析することが困難でした。 タイム シリーズ モデルの主な目的は、IoT データまたはタイム シリーズ データの検索と分析を簡素化することです。 この目的は、時系列データのキュレーション、メンテナンス、エンリッチメントを可能にし、分析用のコンシューマー対応データセットを簡単に準備できるようにすることで達成されます。

シナリオ: Contoso の新しいスマート オーブン

Contoso のスマート オーブンについての架空のシナリオを考えてみましょう。 このシナリオでは、各 Contoso スマート オーブンには 5 つの温度センサーがあり、4 つのトップ バーナーのそれぞれに 1 つずつと、オーブン自体に 1 つあると仮定します。 最近までは、各 Contoso の温度センサーは、データを個別に送信、格納、視覚化していました。 キッチンのアプライアンス監視では、Contoso は個々のセンサーごとに 1 つの基本的なグラフを使用していました。

Contoso は初期データと視覚化ソリューションに満足していましたが、いくつかの制限が明らかになっています。

  • お客様は、トップ バーナーのほとんどがオンになったときに、オーブン全体がどの程度加熱されるかを知りたいと考えました。 Contoso にとって、オーブン全体の状況について統一された回答を分析して提示するのは困難でした。
  • Contoso のエンジニアは、トップ バーナーの同時稼働により、効率の悪い電力消費が起こらないことを確認する必要がありました。 どの温度センサーと電圧センサーが相互に関連付けられているか、およびそれらをストア内で特定する方法について、相互参照が困難でした。
  • Contoso 品質保証チームは、2 つのセンサー バージョン間の履歴を監査し、比較する必要がありました。 どのデータがどのセンサー バージョンに属しているかを判断するのは困難でした。

包括的なスマート オーブン タイム シリーズ モデルを構築、整理、および定義する機能がなければ、各温度センサーは切り離されて分離された、情報が少ないデータ ポイントとなります。 これらのデータ ポイントをアクション可能な洞察に変えることは、各データセットが互いに独立しているため、より困難です。

これらの制限により、Contoso の新しいオーブンに付随するスマート データ集計および視覚化ツールの重要性が明らかになります。

  • データの視覚化は、データを関連付けて便利なビューに結合できる場合に便利です。 1 つの例として、電圧センサーと温度センサーを示しています。
  • 複数のエンティティの多次元データを比較、ズーム、時間範囲の機能と共に管理することは実現困難な場合があります。

この架空の例で発生する多くのシナリオに対して、タイム シリーズ モデルは便利なソリューションを提供します

Time Series Model smart oven charting example

  • タイム シリーズ モデルは、クエリとナビゲーションで重要な役割を果たします。これは、時間の範囲やセンサーとデバイスの種類の間で比較を描画できるようにすることで、データをコンテキスト化するためです。 (A)
  • タイム シリーズ モデルで保持されるデータは、タイム シリーズ クエリの計算を変数として保持し、クエリ時にそれらを再利用するため、データはさらにコンテキスト化します。
  • タイム シリーズ モデルは、視覚化と管理能力を向上させるためにデータを整理して集計します。 (B)

主な機能

タイム シリーズ データのコンテキスト化をシンプルかつ簡単に管理できるようにするため、タイム シリーズ モデルでは、Time Series Insights Gen2 で次の機能が使用できるようになっています。 これは以下のことに役立ちます。

  • スカラー関数を活用した計算や数式の作成と管理、操作の集計などを行う。
  • 親子関係を定義して、ナビゲーション、検索、および参照を有効にする。
  • インスタンス フィールドとして定義されたインスタンスに関連付けられたプロパティを定義し、それらを使用して階層を作成する。

コンポーネント

タイム シリーズ モデルには、次の 3 つの主要なコンポーネントがあります。

これらのコンポーネントは、タイム シリーズ モデルを指定し、データを整理するために組み合わされています。

Time Series Model overview chart

タイム シリーズ モデルは、Azure Time Series Insights Explorer を使用して作成および管理できます。 タイム シリーズ モデルの設定は、モデルの設定 API を使用して管理できます。

タイム シリーズ モデルのインスタンス

タイム シリーズ モデルの インスタンス は、時系列自体の仮想表現です。

ほとんどの場合、インスタンスは、時系列 ID として保存されている deviceId または assetIdによって一意に識別されます。

インスタンスには、時系列 ID、型、名前、説明、階層、インスタンス フィールドなどのインスタンス プロパティと呼ばれる説明情報が含まれています。 インスタンス プロパティには、少なくとも階層情報が含まれます。

インスタンス フィールドは、階層レベルの値、製造元、演算子などを含めることができる説明情報のコレクションです。

Azure Time Series Insights Gen2 環境に対してイベント ソースが構成された後、インスタンスが自動的に検出され、タイム シリーズ モデルで作成されます。 インスタンスは、タイム シリーズ モデルのクエリを使用して Azure Time Series Insights Explorer で作成または更新できます。

Contoso Wind Farm デモには、いくつかのライブ インスタンスの例が用意されています。

Time Series Model instance example

インスタンスのプロパティ

インスタンスは、timeSeriesIdtypeIdnamedescriptionhierarchyIds、および instanceFields によって定義されます。 各インスタンスは、1 つのみの、および 1 つ以上の階層にマップされます。

プロパティ 説明
timeSeriesId インスタンスが関連付けられている時系列の一意の ID。 ほとんどの場合、インスタンスは、deviceId や assetId などのプロパティによって一意に識別されます。 場合によっては、最大 3 つのプロパティを組み合わせたより具体的な複合 ID を使用できます。
typeId インスタンスが関連付けられているタイム シリーズ モデルの種類の一意の文字列 ID (大文字と小文字を区別します)。 既定では、検出されたすべての新しいインスタンスは既定の型に関連付けられます。
name name プロパティは、オプションであり、大文字小文字が区別されます。 name が使用できない場合は、既定では timeSeriesId になります。 名前が指定されている場合は、timeSeriesIdウェルでも使用できます。
description インスタンスの説明テキスト。
hierarchyIds インスタンスが属する階層を定義します。
instanceFields インスタンスのプロパティ、およびインスタンスを定義する任意の静的データ。 これらによって、階層プロパティや非階層プロパティの値が定義されます。また、検索操作を実行するためのインデックスを作成することもできます。

Note

階層は、インスタンス フィールドを使用して構築されます。 その他のインスタンス プロパティの定義には、別の instanceFields を追加できます。

インスタンスには、次の JSON 表現があります。

{
  "timeSeriesId": ["PU2"],
  "typeId": "545314a5-7166-4b90-abb9-fd93966fa39b",
  "hierarchyIds": ["95f0a8d1-a3ef-4549-b4b3-f138856b3a12"],
  "description": "Pump #2",
  "instanceFields": {
    "Location": "Redmond",
    "Fleet": "Fleet 5",
    "Unit": "Pump Unit 3",
    "Manufacturer": "Contoso",
    "ScalePres": "0.54",
    "scaleTemp": "0.54"
  }
}

ヒント

インスタンス API と作成、読み取り、更新、削除 (CRUD) のサポートについては、データのクエリに関する記事と、インスタンス API REST に関するドキュメントを参照してください。

タイム シリーズ モデルの階層

タイム シリーズ モデルの階層を使用すると、プロパティ名とそのリレーションシップを指定して、インスタンスを整理できます。

特定の Azure Time Series Insights Gen2 環境で複数の階層を構成できます。 タイム シリーズ モデルのインスタンスは、単一の階層または複数の階層にマップできます (多対多のリレーションシップ)。

Contoso Wind Farm デモには、標準のインスタンスと型の階層が表示されます。

Time Series Model hierarchy example

階層の定義

階層は、階層の id名前、および source によって定義されます。

プロパティ 説明
id 階層の一意識別子。たとえば、インスタンスを定義するときに使用されます。
name 階層の名前を指定するために使用される文字列。
source 組織階層またはパスを指定します。これは、ユーザーが作成する階層の上から下までの親子の順序です。 親子関係のプロパティは、インスタンス フィールドにマップします。

階層は、JSON で次のように表されます。

{
  "hierarchies": [
    {
      "id": "6e292e54-9a26-4be1-9034-607d71492707",
      "name": "Location",
      "source": {
        "instanceFieldNames": [
          "state",
          "city"
        ]
      }
    },
    {
      "id": "a28fd14c-6b98-4ab5-9301-3840f142d30e",
      "name": "ManufactureDate",
      "source": {
        "instanceFieldNames": [
          "year",
          "month"
        ]
      }
    }
  ]
}

前の JSON の例では、次のようになります。

  • Location は親である states と子である cities を持つ階層を定義します。 各 location は複数の states を持つことができ、それぞれさらに複数の cities を持つことができます。
  • ManufactureDate は親である year と子である month を持つ階層を定義します。 各 ManufactureDate は複数の years を持つことができ、それぞれさらに複数の months を持つことができます。

ヒント

階層 API と作成、読み取り、更新、削除 (CRUD) のサポートについては、データのクエリに関する記事と、階層 API REST に関するドキュメントを参照してください。

階層の例

例を考えてみます。ここで、階層 H1buildingfloor、および roominstanceFieldNames 定義の一部として持つとします。

{
  "id": "aaaaaa-bbbbb-ccccc-ddddd-111111",
  "name": "H1",
  "source": {
    "instanceFieldNames": [
      "building",
      "floor",
      "room"
    ]
  }
}

前の定義で使用されているインスタンス フィールドといくつかの時系列によって、階層の属性と値が次の表に示すように表されます。

タイム シリーズ ID インスタンス フィールド
ID1 "building" = "1000"、"floor" = "10"、"room" = "55"
ID2 "building" = "1000"、"room" = "55"
ID3 "floor" = "10"
ID4 "building" = "1000"、"floor" = "10"
ID5 "building"、"floor"、"room" のどれも設定されていない。

タイム シリーズ ID1ID4 は、階層 H1 の一部として Azure Time Series Insights Explorer に表示されます。それは完全に定義され、適切に並べられた buildingfloor、および room パラメーターを持つためです。

他のものは、指定されたデータ階層に準拠していないため、親が未設定のインスタンスに分類されます。

タイム シリーズ モデルの型

タイム シリーズ モデルの "" は、計算を行うための変数や数式を定義するのに役立ちます。 型は特定のインスタンスに関連付けられています。

1 つの型は、1 つまたは複数の変数を持つことができます。 たとえば、タイム シリーズ モデル インスタンスの型が "温度センサー" の場合は、その型を、"平均温度"、"最低温度"、"最高温度" という変数から構成することができます。

Contoso Wind Farm デモは、それぞれのインスタンスに関連付けられている複数のタイム シリーズ モデルの型を視覚化します。

Time Series Model type example

ヒント

型 API と作成、読み取り、更新、削除 (CRUD) のサポートについては、データのクエリに関する記事と、型 API REST に関するドキュメントを参照してください。

型のプロパティ

タイム シリーズ モデルの型は、id名前description、および variables によって定義されます。

プロパティ 説明
id 種類の一意の文字列 ID (大文字と小文字を区別します)。
name 型の名前を指定するために使用される文字列。
description 型の文字列の説明。
variables 型に関連付けられている変数を指定します。

型は、次の JSON の例に準拠しています。

{
  "types": [
    {
      "id": "1be09af9-f089-4d6b-9f0b-48018b5f7393",
      "name": "DefaultType",
      "description": "Default type",
      "variables": {
        "EventCount": {
          "kind": "aggregate",
          "value": null,
          "filter": null,
          "aggregation": {
            "tsx": "count()"
          }
        },
        "Interpolated Speed": {
          "kind": "numeric",
          "value": {
              "tsx": "$event['Speed-Sensor'].Double"
          },
          "filter": null,
          "interpolation": {
              "kind": "step",
              "boundary": {
                  "span": "P1D"
              }
          },
          "aggregation": {
              "tsx": "right($value)"
          }
        }
      }
    }
  ]
}

タイム シリーズ モデルの型には、イベントに対する式および計算ルールを指定する多数の変数を含めることができます。 タイム シリーズ モデル変数を定義する方法の詳細については、こちらを参照してください

次のステップ