複数の可視化のローカルデータインスタンス

  • リリースバージョン: Yokohama
  • 更新日 2025年01月30日
  • 所要時間:8分
  • 特別なデータ可視化 API データリソースを使用して、複数のデータ可視化のデータを同時にフェッチできます。このデータリソースにより、API コールの数が減るため、データフェッチを高速化できます。

    使用するタイミング

    「複数のデータ可視化のためのデータ可視化 API」データリソースは、次のシナリオで使用できます。
    • 同じタイプの複数のデータ表示方法に同じデータソースがあります。たとえば、可視化タイプが単一スコアで、データソースがフィルター active=true のインシデント [incident] テーブルである 5 つの可視化があるとします。タイプとデータソースが同じインジケーターのグループが複数ある場合は、グループごとに同じ複数の可視化データ リソースのインスタンスを作成できます。
    • データの可視化には、同じデータソースを参照する複数のデータリソースがあります。たとえば、「オープンインシデントの数」インジケーターのデータリソースと「オープンインシデントの平均経過時間」インジケーターの別のデータリソースを含む折れ線グラフの可視化があるとします。これらのインジケーターはどちらも Incident.Open データソースを使用します。効率を上げるために、この可視化を変換して 1 つのデータリソースのみを使用できます。

    使用しない場合

    • UI ビルダーページに表示される可視化は 1 つだけです。
    • ページ上のデータの可視化は、データのロードに時間がかかる可能性があります。その場合は、データの読み込みを個別のデータ リソースに分割したままにしておくことをお勧めします。

    複数の可視化データリソースを設定する

    ユースケースが複数の可視化データリソースの基準を満たしている場合は、この手順に従うことができます。

    始める前に

    複数の可視化のローカルデータインスタンスの複数の可視化について、単一のデータリソースのユースケースを確認します。

    必要なロール:ui_builder_admin、admin

    このタスクについて

    重要:
    このデータリソースは、複数の呼び出しを単一の呼び出しに結合します。単一の呼び出しは、単一のスレッド上の単一のトランザクションとして実行されます。したがって、このデータリソースは、特に大量のデータを処理する場合は、トランザクションのタイムアウトが発生する可能性があるため、特に注意して使用してください。データの量、ページのセットアップ、およびターゲットとするユーザーエクスペリエンスによっては、個別のデータリソースを使用するとより良い結果が得られる場合があります。

    手順

    1. データを可視化したテクニカルダッシュボードまたは UIB ページに移動します。
    2. ページ上のデータの可視化が 「使用するタイミング」の基準を満たしていることを確認します。
      たとえば、インシデントテーブルのデータソースに複数のダイヤルによる可視化があり、フェッチされるデータの量が多すぎないとします。
    3. [データとスクリプト] ドロワーの [データ リソース] で、 [+ データ リソースの追加] を選択します。

      データリソースがまだない場合は、データリソースリンクを追加します。
    4. [データリソースを選択] ウィンドウで、 [データの可視化] を検索します。
      使用できるデータリソースを選択できます。
      複数のデータ可視化用のリソースを含む、データ可視化 API データリソースの選択。
    5. [複数のデータ可視化のためのデータ可視化 API] を選択します。
    6. タイプを [データ構成] に設定します。
    7. 要求フィールドに JSON を入力します。
      この手順の最後にある例を参照してください。
    8. このデータリソースを使用するデータ可視化ごとに、次のアクションを実行します。
      1. データの可視化を選択します。
      2. 構成パネルを開きます。
      3. [データの手動定義] をオンにします。
      4. データバインディングを使用して、スクリプトをデータフィールドにバインドします。

    同じデータソースを持つ 3 つの単一スコア可視化のデータリソース

    この例では、3 つのデータ可視化コンポーネントを含む UIB ページから開始します。これらのコンポーネントはすべて単一スコアの可視化タイプであり、すべて同じデータソースを使用します。

    ステップ 6 の一般的な手順に従います。これで、ダッシュボードページに複数のデータ視覚化用のデータ視覚化 API ができました。

    次に、次のように要求の JSON を記述します。
    [
        {
            "details": {
                "visualizationId": "vis_1",
                "followFilter": true
            },
            "configurations": {
                "dataConfigurations": [
                    {
                        "sourceType": "table",
                        "dataCategory": "simple",
                        "order": 0,
                        "tableOrViewName": "incident",
                        "aggregateFunction": "COUNT"
                    }
                ]
            }
        },
        {
            "details": {
                "visualizationId": "vis_2",
                "followFilter": true
            },
            "configurations": {
                "dataConfigurations": [
                    {
                        "sourceType": "table",
                        "dataCategory": "simple",
                        "order": 0,
                        "tableOrViewName": "incident",
                        "aggregateFunction": "AVG",
                        "aggregateField": "business_duration"
                    }
                ]
            }
        },
        {
            "details": {
                "visualizationId": "vis_3",
                "followFilter": true
            },
            "configurations": {
                "dataConfigurations": [
                    {
                        "sourceType": "table",
                        "dataCategory": "simple",
                        "order": 0,
                        "tableOrViewName": "incident",
                        "aggregateFunction": "AVG",
                        "aggregateField": "priority"
                    }
                ]
            }
        }
    ]

    要求は、データの可視化ごとに 1 つずつ、オブジェクトのアレイです。各可視化には、visualizationIdの任意の値を持つdetailsプロパティと、可視化がページ上のフィルターコンポーネントに従うかどうかを示すブールfollowFilter設定があります。この場合、3 つの可視化はすべてフィルターに従います。

    各可視化には、dataConfigurations配列のみを含む configurations プロパティもあります。すべての可視化は同じタイプ (単一スコア) であり、この可視化タイプは単純な値のみを表示するため、 dataCategory 3 つのプロパティはすべて「シンプル」です。同様に、すべての可視化で同じデータソースが使用されます。データソースはインシデント [incident] テーブルであるため、3 つのチャート化の sourceType はすべて「table」、 tableOrViewName は「incident」です。視覚化が異なる可能性がある唯一の場所は、使用する集計です。ここでは、1 つ目は COUNT 集計を使用し、2 つ目は business_duration フィールドの AVG 集計を取得し、3 つ目は優先度フィールドの平均を取得することがわかります。

    データリソースの最終的な構成は次のようになります。
    ダッシュボードデータブローカーの完全な構成
    最後に、データの可視化ごとに、次のスクリプトをデータフィールドにバインドします。各可視化に指定した任意の visualizationId 値を、その可視化のスクリプトの vizId 値として使用します。
    function evaluateProperty({api, helpers}) {
      const data = api.data.data_visualization_api_for_multiple_data_visualizations_1.output;
    ​
      if (!data) {
        return [];
      }
    ​
      const vizId = 'vis_1';
    ​
      const dataForViz = data.result.find(d => d.details.visualizationId === vizId);
    ​
        return dataForViz.dataResponses;
    }

    インジケーターの要求 JSON

    インジケーターでの可視化の要求は、前の例 (テーブル用) とは異なります。以下は、優先度ブレークダウンでグループ化された、オープンインシデントの数インジケーターの経時的な傾向を示す時系列可視化の JSON です。
    [
        {
            "details": {
                "visualizationId": "vis1",
                "followFilter": true
            },
            "configurations": {
                "dataConfigurations": [
                    {
                        "sortBy": "choice",
                        "sortOrder": "asc",
                        "sourceType": "indicator",
                        "dataCategory": "trend",
                        "order": 0,
                        "splitView": false,
                        "numberOfGroups": 2,
                        "uuid": {
                            "indicator": "fb007202d7130100b96d45a3ce6103b4",
                            "breakdowns": []
                        },
                        "trendBy": "anything",
                        "trendInterval": "date",
                        "groupBy": [
                            "0df47e02d7130100b96d45a3ce610399"
                        ],
                        "removeMissingIntervalData": false
                    }
                ]
            }
        }
    ]

    最初の明らかな違いは、 sourceType が「指標」であり、 dataCategory が「トレンド」であるということです。また、 tableOrViewName プロパティの代わりに、オープンインシデントの数インジケーターの uuid を持つ uuid オブジェクトと、そのインジケーターをフィルタリングするためのブレークダウンの uuid を保持できる空のアレイがあることもわかります。この可視化はグループ化された値をサポートしているため、この場合は優先度ブレークダウンの uuid のみを含む groupBy 配列があります。グループ分けはソートを意味しますが、ここでは、 sortBy が優先度ブレークダウンのデータタイプを反映した「選択肢」であり、 sortOrder が昇順であることがわかります。