メイン コンテンツにスキップする

時系列をプロットする

ダッシュボードを作成し、プロットする時系列を選択します。カスタムクエリや、フィルタリング、集計、粒度、算術演算、関数などの高度な機能を使用して、時系列を操作します。

ダッシュボードを作成する

Cognite Data FusionCDF)の時系列データでダッシュボードを作成するには、以下の手順に従います。

  1. Grafana インスタンスにサインインし、ダッシュボードを作成します。

  2. メイン チャートの下にあるタブを使用して、ダッシュボードの時系列を選択します。

    • 時系列検索 - 特定の時系列からデータを取得します。時系列の名前または説明の入力を開始し、ドロップダウンリストから選択します。

      また、クエリの集計粒度を指定することもできます。デフォルトでは、集計は 平均 で、粒度はグラフに選択した時間間隔から計算されます。

      ヒント

      オプションで、カスタム ラベルを設定し、時系列からデータを引き出すために {{property}} という書式を使用します。たとえば、{{name}} - {{description}}{{metadata.key1}} のように、ラベルを定義するために利用可能なすべての時系列プロパティを使用できます。

    • アセットからの時系列 - 特定のアセットに関連する時系列からデータを取得します。アセットの名前または説明の入力を開始し、ドロップダウン リストから選択します。オプションとして、サブアセットからの時系列を含めるかどうかを決定します。

    • 時系列カスタム クエリ - クエリに一致する時系列を取得します。

  3. 選択と一致する時系列がチャート領域に表示されます。必要に応じて、関連するデータを表示する時間を調整します。

    時間枠を調整する

カスタム クエリを使用する

どの時系列を取得するかを細かく制御する場合は、時系列カスタム クエリ タブを使用します。算術演算と関数を組み合わせてクエリを定義し、合成時系列を取得するための特別な構文を定義します。

クエリを定義する

時系列をリクエストするには、パラメータを含むクエリを指定します。たとえば、id123 に等しい時系列を照会するには、ts{id=123} を指定します。

idexternalId、または時系列フィルタを使用して時系列をリクエストできます。

カスタムクエリ

合成時系列では、いくつかのプロパティタイプを指定できます。

  • bool: ts{isString=true} または ts{isStep=false}
  • string または number: ts{id=123} または ts{externalId='external_123'}
  • array: ts{assetIds=[123, 456]}
  • object: ts{metadata={key1="value1", key2="value2"}}

複雑な合成時系列を作成するには、1 つのクエリでタイプを組み合わせることができます。

ts{name="test", assetSubtreeIds=[{id=123}, {externalId="external_123"}]}

フィルタリング

クエリは、論理 AND として適用される時系列プロパティに基づくフィルタリングもサポートしています。たとえば、以下のクエリは時系列を検出します。

  • id123 に等しいアセットに属するもの
  • name"Begin" で始まる
  • name"end" で終わっていない
  • name"Begin query" と等しくない
ts{assetIds=[123], name=~"Begin.*", name!~".*end", name!="Begin query"}

クエリには 4 種類の等式が含まれています。

  • = - 厳格な等式。CDF への時系列リクエストのパラメータを指定します。フィルタリング属性と併用します。
  • =! - 厳格な不等式。取得した時系列を、文字列と等しくないプロパティでフィルタリングします。文字列、数値、ブール値をサポートします。
  • =~ – 正規表現の等式。取得した時系列を、正規表現に一致するプロパティでフィルタリングします。文字列値をサポートします。
  • !~ - 正規表現の不等式。取得した時系列を、正規表現に一致しないプロパティでフィルタリングします。文字列値をサポートします。

メタデータでフィルタリングすることも可能です。

ts{externalIdPrefix="test", metadata={key1="value1", key2=~"value2.*"}}

上記のクエリは、時系列をリクエストします。上記で:

  • externalIdPrefix"test" に等しい
  • metadata.key1"value1" に等しい
  • metadata.key2"value2" で始まる

ダッシュボードのパフォーマンスに悪影響を与える可能性があるため、正規表現フィルタの使用を制限することをお勧めします。

たとえば、このクエリは、プロジェクトで利用可能なすべての時系列をリクエストし、文字列 some-name と等しい名前でフィルタリングします。

ts{name=~”some-name”}

ただし、この代わりに、正規表現を CDF リクエストのパラメータに置き換えることができます。

ts{name=”some-name”}

集計、粒度、整列

ユーザーインターフェイスのドロップダウンを使用して、各時系列の集計と粒度を指定できます。

たとえば、集計を average に設定し、粒度を 1h に設定した場合、すべてのクエリは選択された集計と粒度でデータポイントをリクエストします。デフォルトでは、合成時系列での集計は 1970 年 1 月 1 日(木)00:00:00(UTC)に揃えられています。

合成時系列クエリ構文では、集計、粒度、整列を時系列ごとに個別に定義することができます。

ts{externalId='houston.ro.REMOTE_AI[34]', alignment=1599609600000, aggregate='average', granularity='24h'}

上記のクエリは、ユーザーインターフェイスで設定された集計と粒度の値を上書きします。サポートされている集計のリストについては、API ドキュメントを参照してください。

算術演算

算術演算を適用して時系列を組み合わせることができます。例:

ts{id=123} + ts{externalId="test"}

上記のクエリの結果は、データポイントが各時系列の合計値である単一のプロットです。

この例では、クエリ ts{name~="test1.*"} は複数の時系列を返すことができますが、ここでは ID が 111222333 の 3 つの時系列を返すと仮定します。

ts{name~="test1.*"} + ts{id=123}

クエリの結果は、クエリの 1 番目と 2 番目の式によって返された時系列値の合計の組み合わせである 3 つのプロットです。結果のプロットはこれらのクエリを表しています。

  • ts{id=111} + ts{id=123}
  • ts{id=222} + ts{id=123}
  • ts{id=333} + ts{id=123}

この動作の例(各 ts{} 式は 2 つの時系列を返す)を下の画像で見ることができます(チャートの下のラベルに注目)。

カスタムクエリ数学

Functions

合成時系列に適用できる幅広い関数をサポートしています。

  • 三角関数: sin(ts{})cos(ts{})pi()
  • 可変長関数: max(ts{}, ...)min(ts{}, ...)avg(ts{}, ...)
  • 代数: ln(ts{})pow(ts{}, exponent)sqrt(ts{})exp(ts{})abs(ts{})
  • エラー処理: on_error(ts{}, default_value)計算のエラー処理を参照してください。
  • 文字列時系列: map(expression, [list of strings to map from], [list of values to map to], default_value)文字列時系列を参照してください。

計算のエラー処理

on_error(ts{...}) 関数は、何らかの例外が発生してもチャートのレンダリングを可能にします。以下のようなエラーを処理します。

  • BAD_DOMAIN - 不適切な入力範囲を指定した場合。たとえば、ゼロによる除算や負の数の平方根など。
  • OVERFLOW - 結果が絶対値で 10^100 を超える場合。

これらのいずれかに遭遇した場合、CDF はタイムスタンプの値を返す代わりに、エラー メッセージを含むエラーフィールドを返します。これらを避けるには、(サブ)式を on_error() 関数でラップします。

on_error(1/ts{externalId='canBeZero'}, 0)

文字列時系列

関数 map() は、文字列を持つ時系列を処理して文字列を倍数に変換できます。たとえば、バルブの時系列が "OPEN" または "CLOSED" の値を持つ場合、次のようにして数値に変換できます。

map(TS{externalId='stringstate'}, ['OPEN', 'CLOSED'], [1, 0], -1)

"OPEN" は 1、"CLOSED" は 0、それ以外は -1 にマッピングされます。

文字列時系列の集計は現在サポートされていません。文字列時系列はすべてステップ時系列と見なされます。

データ モデル インスタンスから時系列データを表示する

CDF データ モデルのインスタンスから時系列データを表示できます。

  1. データモデルタブで、データモデルバージョンを選択します。

  2. クエリを指定します。

    重要

    時系列を含むフィールドの下に __typenameexternalId を追加します。この例では、temperaturepressure の下にあるのは次のとおりです。

    {
    listPump {
    items {
    temperature {
    __typename
    externalId
    }
    pressure {
    __typename
    externalId
    }
    }
    }
    }
    カスタムクエリデータモデル

ヒント

最初に CDF portal application でクエリを作成し、そのクエリを Grafana にコピーします。