Lokale Dateninstanzen für mehrere Visualisierungen

  • Freigeben Version: Yokohama
  • Aktualisiert 30. Januar 2025
  • 5 Minuten Lesedauer
  • Eine spezielle Datenressource für die Datenvisualisierungs-API ist verfügbar, um Daten für mehrere Datenvisualisierungen gleichzeitig abzurufen. Diese Datenressource reduziert die Anzahl der API-Aufrufe und kann somit das Abrufen von Daten beschleunigen.

    Wann zu verwenden ist

    Sie können die Datenressource „Datenvisualisierungs-API für mehrere Datenvisualisierungen“ in den folgenden Szenarien verwenden:
    • Mehrere Datenvisualisierungen vom selben Typ haben dieselbe Datenquelle. Angenommen, Sie haben fünf Visualisierungen, bei denen der Visualisierungstyp Einzelpunktzahl ist und die Datenquelle die Incident-Tabelle [incident] mit dem Filter active=trueist. Wenn Sie mehrere Gruppen von Indikatoren mit demselben Typ und derselben Datenquelle haben, können Sie für jede Gruppe eine Instanz derselben Visualisierungsdatenressource erstellen.
    • Eine Datenvisualisierung verfügt über mehrere Datenressourcen, die auf dieselbe Datenquelle verweisen. Sie haben beispielsweise eine Linienvisualisierung mit einer Datenressource aus dem Indikator „Anzahl offener Incidents“ und einer weiteren Datenressource aus dem Indikator „Durchschnittliches Alter der offenen Incidents“. Beide Indikatoren verwenden die Datenquelle „Incident.Open“. Aus Effizienzgründen können Sie diese Visualisierung so konvertieren, dass nur eine Datenressource verwendet wird.

    Wann nicht zu verwenden ist

    • Es gibt nur eine Visualisierung auf der Seite UI Builder.
    • Das Laden der Daten der Datenvisualisierungen auf der Seite dauert wahrscheinlich lange. In diesem Fall ist es besser, das Laden der Daten auf separate Datenressourcen aufzuteilen.

    Richten Sie eine Mehrfachvisualisierungsdatenressource ein

    Wenn Ihr Anwendungsfall die Kriterien für eine mehrfache Visualisierungsdatenressource erfüllt, können Sie dieses Verfahren anwenden.

    Vorbereitungen

    Überprüfen Sie den Anwendungsfall für eine einzelne Datenressource für mehrere Visualisierungen in Lokale Dateninstanzen für mehrere Visualisierungen.

    Erforderliche Rolle: ui_builder_admin, admin

    Warum und wann dieser Vorgang ausgeführt wird

    Wichtig:
    Diese Datenressource führt mehrere Anrufe in einem einzigen Anruf zusammen. Der einzelne Aufruf wird als einzelne Transaktion in einem einzelnen Thread ausgeführt. Verwenden Sie diese Datenressource daher mit zusätzlicher Sorgfalt, insbesondere bei der Verarbeitung großer Datenmengen, da dies in einigen Fällen zu Transaktionstimeouts führen kann. Abhängig von der Datenmenge, dem Setup der Seite und der angestrebten Anwender-Experience erzielen Sie möglicherweise bessere Ergebnisse mit separaten Datenressourcen.

    Prozedur

    1. Navigieren Sie zum technischen Dashboard oder zur UIB-Seite mit den Datenvisualisierungen.
    2. Vergewissern Sie sich, dass die Datenvisualisierungen auf der Seite die Kriterien unter Verwendungszweckerfüllen.
      Beispiel: Sie haben mehrere Visualisierungen der Skala in der Datenquelle der Incident-Tabelle, und die Menge der abgerufenen Daten ist nicht zu groß.
    3. Wählen Sie im Drawer Daten und Skripts unter Datenressourcen die Option + Datenressource hinzufügen aus.

      Datenressourcenlink hinzufügen, wenn noch keine Datenressourcen vorhanden sind.
    4. Suchen Sie im Fenster Datenressource auswählen nach Datenvisualisierung.
      Sie erhalten eine Auswahl der Datenressourcen, die Sie verwenden können.
      Auswahl der Datenressourcen der Datenvisualisierungs-API, einschließlich der für mehrere Datenvisualisierungen.
    5. Wählen Sie „Datenvisualisierungs-API für mehrere Datenvisualisierungen“ aus.
    6. Legen Sie den Typ als Datenkonfigurationenfest.
    7. Füllen Sie im Anforderungsfeld JSON aus.
      Siehe Beispiel am Ende dieses Verfahrens.
    8. Führen Sie in jeder Datenvisualisierung, die diese Datenressource verwenden soll, die folgenden Aktionen aus:
      1. Wählen Sie die Datenvisualisierung aus.
      2. Öffnen Sie den Konfigurationsbereich.
      3. Aktivieren Sie Daten manuell definieren.
      4. Verwenden Sie die Datenbindung, um ein Skript an das Datenfeld zu binden.

    Datenressource für drei Einzel-Punktzahl-Visualisierungen mit derselben Datenquelle

    In diesem Beispiel beginnen wir mit einer UIB-Seite, die drei Datenvisualisierungskomponenten enthält. Diese Komponenten sind alle vom Visualisierungstyp Einzelpunktzahl, und alle verwenden dieselbe Datenquelle.

    Sie folgen dem allgemeinen Verfahren bis Schritt 6. Jetzt haben Sie eine Datenvisualisierungs-API für mehrere Datenvisualisierungen auf Ihrer Seite „Dashboards“.

    Als Nächstes schreiben Sie das JSON-Objekt für die Anforderung wie folgt:
    [
        {
            "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"
                    }
                ]
            }
        }
    ]

    Die Anforderung ist ein Array von Objekten, eines für jede Datenvisualisierung. Jede Visualisierung verfügt über eine Eigenschaft details mit einem beliebigen Wert für visualizationId und einen booleschen Wert followFilter, der festlegt, ob die Visualisierung Filterkomponenten auf der Seite folgt. In diesem Fall folgen alle drei Visualisierungen Filtern.

    Jede Visualisierung hat auch eine Eigenschaft configurations, die nur ein Array dataConfigurations enthält. Da alle Visualisierungen vom gleichen Typ sind, Einzelne Punktzahl, und dieser Visualisierungstyp nur einen einfachen Wert anzeigt, sind alle drei Eigenschaften dataCategory „einfach“. Ebenso verwenden alle Visualisierungen dieselbe Datenquelle. Da die Datenquelle die Incident-Tabelle [incident] ist, haben alle drei Visualisierungen einen sourceType -Wert mit dem Wert „table“ und einen tableOrViewName -Wert mit dem Wert „incident“. Die Visualisierungen können nur in den verwendeten Aggregaten variieren. Hier sehen Sie, dass im ersten eine COUNT-Zusammenfassung, im zweiten ein AVG-Aggregat des Felds business_duration und im dritten ein Durchschnitt des Prioritätsfeldes verwendet wird.

    Die endgültige Konfiguration der Datenressource sieht wie folgt aus:
    Konfiguration des Dashboard-Datenbrokers abschließen.
    Zuletzt binden Sie für jede Datenvisualisierung das folgende Skript an das Datenfeld. Sie verwenden den beliebigen Wert visualizationId, den Sie jeder Visualisierung gegeben haben, als „ visId “-Wert im Skript für diese Visualisierung.
    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 für einen Indikator anfordern

    Die Anforderung für eine Visualisierung für einen Indikator unterscheidet sich vom vorherigen Beispiel, das für eine Tabelle war. Hier ist das JSON-Objekt für eine Zeitreihenvisualisierung, die einen Trend im Zeitverlauf für den Indikator Anzahl offener Incidents, gruppiert nach der Aufgliederung der Priorität, zeigt:
    [
        {
            "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
                    }
                ]
            }
        }
    ]

    Der erste und offensichtliche Unterschied besteht darin, dass sourceType „Indikator“ und dataCategory „Trend“ ist. Sie sehen auch, dass Sie anstelle einer Eigenschaft tableOrViewName ein Objekt uuid mit der UUID des Indikators Anzahl offener Incidents und ein leeres Array haben, das die UUIDs von Aufgliederungen zum Filtern dieses Indikators enthalten könnte. Da diese Visualisierung „Gruppieren nach“-Werte unterstützt, verfügen Sie über ein groupBy -Array, das in diesem Fall nur die UUID der Prioritätsaufgliederung enthält. Ein „group-by“ impliziert eine Sortierung. Hier sehen Sie, dass sortBy „Auswahl“ ist, was den Datentyp der Prioritätsaufgliederung widerspiegelt, und sortOrder ist aufsteigend.