Hinweis
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, sich anzumelden oder das Verzeichnis zu wechseln.
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, das Verzeichnis zu wechseln.
In diesem Artikel werden der Ordner und die Dateistruktur für Real-Time Dashboardelemente erläutert, sobald sie mit einem GitHub- oder Azure Devops-Repository synchronisiert wurden.
Ordnerstruktur
Sobald ein Arbeitsbereich mit einem Repository synchronisiert wurde, wird ein Ordner der obersten Ebene für den Arbeitsbereich und ein Unterordner für jedes Element angezeigt, das synchronisiert wurde. Jeder Unterordner ist mit dem Elementnamen formatiert. Elementtyp
Im Ordner für das Dashboard werden die folgenden Dateien angezeigt:
- Plattform: Definiert Fabric-Plattformwerte wie Anzeigename und Beschreibung.
- Eigenschaften: Definiert elementspezifische Werte.
Hier ist ein Beispiel für die Ordnerstruktur:
Repo
- Arbeitsbereich A
- Item_A.KQLDashboard
- .Plattform
- RealTimeDashboard-1.json
- Item_A.KQLDashboard
- Arbeitsbereich B
- Item_B.KQLDashboard
- .Plattform
- RealTimeDashboard-2.json
- Item_B.KQLDashboard
Real-Time Dashboarddateien
Die folgenden Dateien sind in einem Dashboardordner enthalten:
.Plattform
Die Datei verwendet das folgende Schema, um ein Echtzeitdashboard zu definieren:
{ "$schema": "https://developer.microsoft.com/json-schemas/fabric/gitIntegration/platformProperties/2.0.0/schema.json", "metadata": { "type": "KQLDashboard", "displayName": "", "description": "" }, "config": { "version": "2.0", "logicalId": "" } }RealTimeDashboard.json
Die Datei verwendet das folgende Schema, um ein Echtzeitdashboard zu definieren:
{ "$schema": "", "id": "", "eTag": "\"\"", "schema_version": "", "title": "", "tiles": [ { "id": "", "title": "", "visualType": "", "pageId": "", "layout": { "x": , "y": , "width": , "height": }, "queryRef": { "kind": "", "queryId": "" }, "visualOptions": { "multipleYAxes": { "base": { "id": "", "label": "", "columns": [], "yAxisMaximumValue": , "yAxisMinimumValue": , "yAxisScale": "", "horizontalLines": [] }, "additional": [], "showMultiplePanels": }, "hideLegend": , "legendLocation": "", "xColumnTitle": "", "xColumn": , "yColumns": , "seriesColumns": , "xAxisScale": "", "verticalLine": "", "crossFilterDisabled": , "drillthroughDisabled": , "crossFilter": [ { "interaction": "", "property": "", "parameterId": "", "disabled": } ], "drillthrough": [], "selectedDataOnLoad": { "all": , "limit": }, "dataPointsTooltip": { "all": , "limit": } } } ], "baseQueries": [], "parameters": [ { "kind": "", "id": "", "displayName": "", "description": "", "variableName": "", "selectionType": "", "includeAllOption": , "defaultValue": { "kind": "" }, "dataSource": { "kind": "", "columns": { "value": "" }, "queryRef": { "kind": "", "queryId": "" } }, "showOnPages": { "kind": "" }, "allIsNull": }, ], "dataSources": [ { "id": "", "name": "", "clusterUri": "", "database": "", "kind": "", "scopeId": "" } ], "pages": [ { "name": "", "id": "" } ], "queries": [ { "dataSource": { "kind": "", "dataSourceId": "" }, "text": "", "id": "", "usedVariables": [ "", "" ] } ] }
Echtzeit-Dashboard-Überprüfung
Der Real-Time Dashboardladeendpunkt überprüft den JSON-Code über die Standardschemakonformität hinaus. Verstöße werden benutzern auf der Dashboard-Benutzeroberfläche als Fehlermeldungen wie: Error loading dashboard / Error found at: /<section> / Message: <reason>angezeigt.
Eindeutigkeit der Abfrage-Referenz
Jedes queryId im Dashboard muss genau einmal referenziert werden, gezählt über:
tiles[].queryRef.queryIdbaseQueries[].queryIdparameters[].dataSource.queryRef.queryId
Wenn ein queryId zwischen zwei Kacheln oder zwischen einer Kachel und einer BaseQuery gemeinsam genutzt wird, schlägt die Validierung fehl mit: /queries: Some query IDs are used in multiple query references (tiles, base queries, parameters).
Wenn Sie eine Kachel programmgesteuert auf eine neue Seite duplizieren, duplizieren Sie auch die Abfrage (weisen Sie eine neue queryId zu, behalten Sie dasselbe text und dataSource bei) und richten Sie die neue Kachel queryRef.queryId auf die neue Abfrage aus.
Eindeutigkeit und Format der ID
Alle id in tiles[], queries[], baseQueries[], parameters[], dataSources[] und pages[] müssen sein:
- Einzigartig innerhalb seiner Kategorie.
-
Eine gültige RFC 4122 UUID (z. B
3e4666bf-d5e5-4aa7-b8ce-cefe41c7568a. ). Lesbare Zeichenfolgen mit Bindestrichen (z. B.my-tile-0001-0000-0000-000000000001) werden zum Ladezeitpunkt mitNeeds to follow the UUID format as defined by RFC 4122abgelehnt.
Generieren Sie bei programmgesteuerten Bearbeitungen IDs mit einer UUID-Bibliothek: uuid.uuid4() für neue IDs oder uuid.uuid5(namespace, label) für deterministische IDs, die Skript-Wiederholungen überleben.
Tip
Wenn ein Ladefehler wie /tiles/N/queryRef ... must have required property 'baseQueryId' angezeigt wird, liegt der tatsächliche Fehler normalerweise in einem falsch formatierten queryRef.queryId, nicht in einem fehlenden baseQueryId. Das Schema queryRef ist eine oneOf zwischen { kind: "query", queryId: <uuid> } und { kind: "baseQuery", baseQueryId: <uuid> }. Wenn die innere UUID ungültig ist, versagt der Validator die Überprüfung der query-kind Verzweigung und meldet stattdessen Fehler aus der baseQuery-kind Verzweigung. Beheben Sie die UUID und die Kaskadierung wird zurückgesetzt.
Identitätserhaltung über Bearbeitungen hinweg
Wenn Sie die Verknüpfung zwischen der Datei und dem Element des Livearbeitsbereichs beibehalten möchten, ändern Sie die folgenden Punkte bei vorhandenen Einträgen nicht:
- Oberste Ebene:
id,eTagschema_version - Pro Kachel:
id,pageId,queryRef.queryId - Pro Abfrage:
id,dataSource.dataSourceId - Pro Datenquelle:
id,scopeId - Pro Seite:
id - Pro Parameter:
id,variableName(undbeginVariableName/endVariableNamefürkind: "duration") -
.platform:config.logicalId
Das Ändern dieser Bezeichner führt dazu, dass die Änderung als Löschvorgang behandelt wird und bei der nächsten Update from Git zu einer Neuerstellung führen, was zu verlorenem Kontext führt: Referenzen auf angeheftete Elemente, Freigabeziele und jeder Status, der mit dem ursprünglichen id verknüpft ist.
Parameter
Wenn eine Kachel, die einen Parameter verwendet (über die Abfrage usedVariablesreferenziert), einer neuen Seite hinzugefügt wird, wird dieser Parameter nicht automatisch auf der neuen Seite angezeigt.
Wenn der Parameter showOnPages.kind"selection" ist, sollten Sie id der neuen Seite zu showOnPages.pageIds hinzufügen.
Wenn der Parameter über einen verwendbaren defaultValueParameter verfügt, wird die Kachel mit der Standardeinstellung gerendert.
Multivariable Parameter wie kind: "duration" Parameter machen zwei Variablen über beginVariableName und endVariableName (häufig _startTime und _endTime) verfügbar. Sie teilen ein einzelnes Parameterobjekt mit einer showOnPages Einstellung.
Beispielbearbeitungen über Git
Mithilfe der Schema- und Validierungshinweise können Sie Änderungen am Real-Time-Dashboard über Git statt über die Benutzeroberfläche vornehmen.
Beispiel: Kopieren einer Kachel auf eine neue Seite
Um eine Kachel von Seite A zu einer neu hinzugefügten Seite B zu kopieren, indem Sie RealTimeDashboard-N.json bearbeiten:
- Fügen Sie Seite B zu
pages[]mit einem neuenidhinzu. - Führen Sie eine Tiefenkopie der Quellkachel in
tiles[]durch. Zuweisen:- neue Kachel
id(neue GUID) -
pageId= ID der Seite B
- neue Kachel
- Finden Sie die Quellabfrage in
queries[]anhand der QuellkachelqueryRef.queryId. - Erstellen Sie eine Tiefenkopie der Abfrage in
queries[]mit einem neuenid. - Aktualisieren Sie das
queryRef.queryIdder geklonten Kachel auf dasidder neuen Abfragen. - Für jeden Parameter, auf den in der geklonten Abfrage
usedVariables[]verwiesen wird: wennshowOnPages.kind == "selection", fügen Sie die ID der Seite B anshowOnPages.pageIds. - Überprüfen Sie, ob nicht
queryIdmehr als einmal intiles[],baseQueries[]undparameters[].dataSource.queryRef. - Commit, Pushen und Ausführen von Update von Git im Arbeitsbereich.