Soracom

Users

ドキュメント
Home ドキュメント SORACOM Lagoon 3 Panel の共通機能

Panel で可視化する前に Query を変換する (Transform)

Transform 機能は、Query や Expression を Panel で可視化する前に実行される変換機能です。以下のユースケースで利用します。

  • しきい値を設定して、しきい値を超えた値をフィルタリングする
  • 系列名を変更する
  • 複数の Query を外部結合する

Alert rule では、Transform を適用したデータを監視できません。

  • 数値にあわせて文字列を表示するには、[Value mappings] を利用してください。

  • Harvest Data にデータを保存する前に、Orbit を利用してデータを変換することもできます。

Transformation を追加する

  1. 「Edit Panel」画面で表示するデータ (Query や Expression) を選択します。

  2. [Transform] をクリックして、追加する Transformation を選択します。

    2 つ目以降の Transformation を追加する場合は、[+Add transformation] をクリックして、追加する Tranformation を選択します。

    ここでは、代表的な Transformation を紹介します。詳しくは、Grafana documentation の Transform data (英語) を参照してください。

    Transformation説明
    Add field from calculation

    [Mode] を選択して、各項目を設定します。

    • Binary operation: 四則演算 (+-* (かけ算)、/ (割り算)) を行った結果を新しい Query として表示します。四則演算の対象は、Panel に設定した Query や、任意の値を設定できます。

    • Reduce row: 複数の Query から代表値 (例: 平均) を抽出して新しい Query として表示します。代表値は、[Calculation] で選択できます。

      Mean (平均) を表す Transformation を追加した例:

    四則演算を行う場合は、Expression の Math を利用することを推奨します。

    Filter by name特定の系列を非表示にできます。たとえば、Table の elevation だけを非表示にできます。詳しくは、特定の系列を非表示にする (Filter by name) を参照してください。
    Filter data by valuesしきい値を設定して、しきい値を超えた値をフィルタリングします。詳しくは、一部の値をフィルタリングする (Filter data by values) を参照してください。
    Join by field複数の Query を外部結合または内部結合して 1 つの Table にまとめます。詳しくは、複数の Query を外部結合する (Join by field > OUTER) を参照してください。
    Organize fields系列名を変更します。詳しくは、系列をカスタマイズする (Organize fields) を参照してください。
    Rename by regex正規表現に一致した系列名を一括変更します。詳しくは、系列名を一括変更する (Rename by regex) を参照してください。
    Sort byデフォルトのデータの並び順を設定できます。詳しくは、デフォルトのデータの並び順を設定する (Sort by) を参照してください。

    複数の Transformation を設定した場合は、上から順番に適用されます。[] をドラッグすると、Transformation の順番を変更できます。

Transformation を削除する

[] をクリックすると、Transformation が削除されます。

Transformation の利用例

Transformation には多くの種類がありますが、いくつかについて実際の利用例を交えて紹介します。

特定の系列を非表示にする (Filter by name)

Filter by name を利用すると、特定の系列を非表示にできます。たとえば、Table の elevation だけを非表示にできます。

elavation を非表示にする前:

  1. 新しい Panel を追加して、以下の Query を追加します。

    • Query A: Demo > Device-1 > Standard > -All-
    • Panel の種類: Table
  2. [Transform] をクリックして、「Filter by name」をクリックします。

    [Identifier] に、すべての系列が表示されます。

  3. 非表示にする系列をクリックして、チェックを外します。

    正規表現を利用する場合は、[Identifier] の入力欄に、/l/ (名前に l を含む系列) などを入力します。

Panel の種類によっては必須の系列があります

必須の系列を非表示にすると、データが表示されません。たとえば、Time series では Time を非表示にすると「Data is missing a time field」と表示され、データが表示されなくなります。Time を表示する設定にしてください。たとえば、正規表現を利用する場合は、/^(Time|.*l.*)$/ のように設定すると、Time と、名前に l を含む系列が Time series で表示されます。

一部の値をフィルタリングする (Filter data by values)

Filter data by values を利用すると、しきい値から外れた値をフィルタリングできます。たとえば、室温を計測している場合に、異常に高い温度が保存されたときに、その値を非表示にできます。

humidity が 70 より大きいデータのみ表示する例:

しきい値から外れた値を含む 'データ' がフィルタリングされます

同じ時間に温度と湿度を保存している場合は、温度に対して Filter data by values を設定してデータがフィルタリングされると、同じ時間の湿度もフィルタリングされます。

  1. 新しい Panel を追加して、以下の Query を追加します。

    • Query A: Demo > Device-1 > Standard > temperature
    • Query B: Demo > Device-1 > Standard > humidity
    • Panel の種類: Time series
  2. [Transform] をクリックして、「Filter data by values」を選択します。

  3. 以下の項目を設定します。

    項目説明
    [Filter type]

    フィルタリングの種類を設定します。例: Include。

    • Include: 指定した条件を満たすデータを表示します。
    • Exclude: 指定した条件を満たすデータを非表示にします。
    [Conditions]

    複数の条件を設定した場合の判定方法を設定します。例: Match all。

    • Match all: 設定したすべての条件に該当したデータを表示 / 非表示します。
    • Match any: 設定したいずれかの条件に該当したデータを表示 / 非表示します。

  4. [+Add condition] をクリックして、以下の項目を設定します。

    項目説明
    [Field]Filter data by values を適用する Query を選択します。
    [Match]

    フィルタリングの判定条件を設定します。

    例:

    • is greater: [Value] に指定した値より大きい場合に、条件を満たすと判定されます。指定した値を含みません。
    • is lower: [Value] に指定した値より小さい場合に、条件を満たすと判定されます。指定した値を含みません。
    • Is between: [Value] に指定した 2 つの値の間に含まれる場合に、条件を満たすと判定されます。指定した値を含みません。

[Value] には Harvest Data に保存されているデータに沿った値を入力します

Filter data by value で評価するデータは、Harvest Data に保存されているデータです。一方、Panel に表示される値は、保存されているデータとは異なります。たとえば、小数点第 2 位以下で丸められていたり、UNIX 時間 (ミリ秒) が 2022-10-26 01:23:45 といった表示になっている場合があります。

この場合、[Value] には、Harvest Data に保存されているデータに沿った値 (UNIX 時間 (ミリ秒)) を入力します。

意図しない結果になる場合は、[ (Debug)] をクリックして、データを確認してください。

複数の Query を外部結合する (Join by field > OUTER)

Join by field の「OUTER」を利用すると、複数の Query を外部結合して 1 つの Query にまとめられます。

たとえば、Table では複数の Query のデータをまとめて表示できません。仮に 5 つの Query を設定しても、Table には、選択した 1 つの Query のデータだけが表示されます。

このようなときに Join by field の OUTER (外部結合) を利用すると、複数の Query のデータを 1 つの Table で表示できます。

  1. 新しい Panel を追加して、以下の Query を追加します。

    • Query A: Demo > Device-1 > Standard > temperature
    • Query B: Demo > Device-2 > Standard > temperature
    • Query C: Demo > Device-3 > Standard > temperature
    • Query D: Demo > Device-4 > Standard > temperature
    • Query E: Demo > Device-5 > Standard > temperature
    • Panel の種類: Table
  2. [Transform] をクリックして、「Join by field」をクリックします。

  3. 以下の項目を設定します。

    項目説明
    [Mode]

    「OUTER」(外部結合) を選択します。

    「INNER」を選択すると、内部結合が行われます。

    [Field]

    結合する際の基準となるフィールドを選択します。

    たとえば、日時を示す「Time」を選択すると、同じ日時のデータが同じ行になるように外部結合 / 内部結合されます。

    OUTER JOIN (外部結合) する場合は再集計する (Resample) ことも検討してください

    日時を示す「Time」を選択する場合、データの日時が完全に一致するデータのみ外部結合されます。あらかじめ任意の時間間隔 (例: 30 秒) で再集計すると時間が一致するため、期待した結果が得られることがあります。再集計について詳しくは、再集計する (Resample) を参照してください。

系列をカスタマイズする (Organize fields)

Organize fields を利用すると、系列名を簡単に変更したり、系列の表示 / 非表示を切り替えたり、系列の表示順序を変更したりできます。

Organize fields は複数の Query には適用できません

Organize fields は、1 つの Query にのみ適用できます。

  • Panel に、以下の 1 つの Query を追加した場合は、Organize fields を適用できます。

    • Demo > Device-1 > Standard > -All-
  • Panel に 2 つの Query を追加した場合は、Organize fields only works with a single frame. Consider applying a join transformation first. と表示され、Organize fields を適用できません。

    2 つの Query を追加した例:

    • Demo > Device-1 > Standard > temperature
    • Demo > Device-2 > Standard > temperature

    ただしこの場合でも、Organize fields の前に、複数の Query を外部結合する (Join by field > OUTER) を追加すると、Organize fields を適用できます。

系列名を変更する機能について

ほかにも系列名を変更する機能があります。詳しくは、系列の名前を変更する を参照してください。

  1. 新しい Panel を追加して、以下の Query を追加します。

    • Query A: Demo > Device-1 > Standard > -All-
    • Panel の種類: Time series

    ここでは、6 つの系列が表示されています。

  2. [Transform] をクリックして、「Organize fields」をクリックします。

    系列の一覧が表示されます。

  3. 以下のように設定します。

    系列説明
    Time設定なし。
    battery、elevation、latitude、longitude をクリックして、非表示にします。
    humidity「湿度」と入力します。
    temperature「温度」と入力します。

    「湿度」と「温度」の 2 つの系列だけが表示されます。

系列名を一括変更する (Rename by regex)

Rename by regex を利用すると、正規表現を使って系列名を一括変更できます。以下のような用途で利用できます。

  • デバイスから送信されたデータのフィールド名に、IoT SIM の名前やデータの種類を表す文字列が設定されている場合に、それらの文字列を削除できます。

    たとえば、系列名が {IoT SIM 名}.{データの種類} (例: sample-SIM-1.tempereturesample-SIM-1.humidity) になっている場合に、sample-SIM-1. を一括削除できます。

  • デバイスから送信されたデータのフィールド名に、IoT SIM の名前やデータの種類を表す文字列が設定されている場合に、データの種類を表す文字列を削除できます。

    たとえば、系列名が {IoT SIM 名}.{データの種類} (例: sample-SIM-1.temperaturesample-SIM-2.temperature) になっている場合に、.temperature を一括削除できます。

系列名を変更する機能について

ほかにも系列名を変更する機能があります。詳しくは、系列の名前を変更する を参照してください。

ここでは、サンプルデータソース (Demo) の Device-1 ~ Device-5 の temperature だけを Time series に表示します。しかし、系列名がすべて「temperature」になるため、系列名を「Device-1」~「Device-5」に変更します。

  1. 新しい Panel を追加して、以下の Query を追加します。

    • Query A: Demo > Device-1 > Standard > temperature
    • Query B: Demo > Device-2 > Standard > temperature
    • Query C: Demo > Device-3 > Standard > temperature
    • Query D: Demo > Device-4 > Standard > temperature
    • Query E: Demo > Device-5 > Standard > temperature
    • Panel の種類: Time series

    ここでは、すべての系列名が「temperature」です。

  2. [Transform] をクリックして、「Join by field」をクリックします。

  3. 以下の項目を設定します。

    項目説明
    [Mode]

    「OUTER」(外部結合) を選択します。

    「INNER」を選択すると、内部結合が行われます。

    [Field]

    結合する際の基準となるフィールドを選択します。

    たとえば、日時を示す「Time」を選択すると、同じ日時のデータが同じ行になるように外部結合 / 内部結合されます。

    ここで、系列名に自動的に数字が付与され、「temperature 1」~「temperature 5」に変更されます。

  4. [+Add transformation] をクリックして、「Rename by regex」をクリックします。

  5. 以下の項目を設定します。

    項目説明
    [Match]正規表現を入力します。(...)(?<name>...) を利用したキャプチャグループを利用できます。例: temperature (?<no>[1-5])
    [Replace]新しい文字列を入力します。キャプチャグループに一致した文字列は、$1$<name> などで参照できます。例: Device-$<no>

    例のとおりに設定すると、「temperature 1」~「temperature 5」が、「Device-1」~「Device-5」に変更されます。

デフォルトのデータの並び順を設定する (Sort by)

Sort by を利用すると、デフォルトのデータの並び順を設定できます。たとえば、Table でデータを表示すると、データが古い順に表示されるようなときに、Sort by を利用して、データが新しい順に表示されるように設定できます。

グラフの表示とデータの並び順の関係は Panel の種類によって異なります

Panel の種類 によっては、グラフの表示とデータの並び順に関係がないことがあります。たとえば、Time series や Stat は、Sort by を利用できません。

  • Time series は、Time の値を利用してグラフを描画しています。Sort by でデータの並び順を設定しても、グラフの形状に影響はありません。
  • Stat のグラフは、Time の値とデータの並び順の両方を利用して描画しているため、予期しない形状になります。Sort by を利用しないでください。

Table で表のヘッダーを表示している場合は、ヘッダーをクリックするとデータの並び順を変更できます。

  1. 新しい Panel を追加して、以下の Query を追加します。

    • Query A: Demo > Device-1 > Standard > -All-
    • Panel の種類: Table

    ここでは、データが古い順に表示されています。

  2. [Transform] をクリックして、「Sort by」をクリックします。

  3. 以下の項目を設定します。

    項目説明
    [Field]並び順の基準になる系列を選択します。例:「Time」を選択します。
    [Reverse]逆順にする場合は、オンにします。

    Time で逆順に表示する例 (最新の情報を上に表示する例):