この記事では、GitHub または Azure Devops リポジトリに同期した後の、Real-Time ダッシュボード項目のフォルダーとファイル構造について詳しく説明します。
フォルダー構造
ワークスペースがリポジトリに同期されると、ワークスペースの最上位フォルダーと、同期された各項目のサブフォルダーが表示されます。 各サブフォルダーは 、アイテム名で書式設定されます。アイテムの種類
ダッシュボードのフォルダー内には、次のファイルが表示されます。
- プラットフォーム: 表示名や説明など、ファブリック プラットフォームの値を定義します。
- プロパティ: アイテム固有の値を定義します。
フォルダー構造の例を次に示します。
リポジトリ
- ワークスペース A
- Item_A.KQLDashboard
- 。プラットホーム
- RealTimeDashboard-1.json
- Item_A.KQLDashboard
- ワークスペース B
- Item_B.KQLDashboard
- 。プラットホーム
- RealTimeDashboard-2.json
- Item_B.KQLDashboard
Real-Time ダッシュボードファイル
ダッシュボード フォルダーには、次のファイルが含まれています。
プラットフォーム
このファイルでは、次のスキーマを使用してリアルタイム ダッシュボードを定義します。
{ "$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
このファイルでは、次のスキーマを使用してリアルタイム ダッシュボードを定義します。
{ "$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": [ "", "" ] } ] }
リアルタイムダッシュボード検証
Real-Time ダッシュボードの読み込みエンドポイントは、標準のスキーマ準拠を超えて JSON を検証します。 違反は、 Error loading dashboard / Error found at: /<section> / Message: <reason>のようなエラー メッセージとしてダッシュボード UI のユーザーに表示されます。
クエリ参照の一意性
ダッシュボード内のすべての queryId は、1 回だけ参照され、次の条件に基づいてカウントされなければなりません。
tiles[].queryRef.queryIdbaseQueries[].queryIdparameters[].dataSource.queryRef.queryId
queryIdが 2 つのタイル間、またはタイルと baseQuery の間で共有されている場合、検証は次の/queries: Some query IDs are used in multiple query references (tiles, base queries, parameters)で失敗します。
タイルをプログラムで新しいページに複製する場合は、クエリを複製し (新しい queryIdを割り当て、同じ text と dataSourceを保持します)、新しいタイルの queryRef.queryId を新しいクエリでポイントします。
ID の一意性と形式
id、tiles[]、queries[]、baseQueries[]、parameters[]、およびdataSources[]内のすべてのpages[]は、次の必要があります。
- カテゴリ内で一意です。
-
有効な RFC 4122 UUID (たとえば、
3e4666bf-d5e5-4aa7-b8ce-cefe41c7568a)。 読み込み時にダッシュ (my-tile-0001-0000-0000-000000000001など) が発生した読み取り可能な文字列は、次のNeeds to follow the UUID format as defined by RFC 4122で拒否されます。
プログラムによる編集の場合は、UUID ライブラリを使用して ID を生成します。新しい ID の uuid.uuid4() 、またはスクリプトの再実行後も存続する確定的な ID の uuid.uuid5(namespace, label) 。
ヒント
/tiles/N/queryRef ... must have required property 'baseQueryId'などの読み込みエラーが発生した場合、実際のエラーは通常、queryRef.queryIdが見つからないのではなく、形式が正しくないbaseQueryIdです。 スキーマのqueryRefは、oneOfと{ kind: "query", queryId: <uuid> }の間の{ kind: "baseQuery", baseQueryId: <uuid> }です。 内部 UUID が無効な場合、検証コントロールは queryの種類のブランチに失敗し、代わりに baseQuery種類のブランチからのエラーを報告します。 UUID とカスケードクリアを修正します。
編集全体での ID の保持
ファイルとライブ ワークスペース項目の間のリンクを保持するには、 既存 のエントリで次の内容を変更しないでください。
- 最上位:
id、eTag、schema_version - タイルごと:
id、pageId、queryRef.queryId - クエリごと:
id、dataSource.dataSourceId - DataSource ごと:
id、scopeId - ページあたり:
id - パラメーターごと:
id、variableName(およびbeginVariableNameのための /endVariableNamekind: "duration") -
.platform:config.logicalId
これらの識別子を変更すると、次の Update from Gitで変更が削除と再作成として扱われ、ピン留めされた項目参照、共有ターゲット、元の idにアタッチされた状態のコンテキストが失われます。
Parameters
(クエリの usedVariablesを介して参照される) パラメーターを使用するタイルが新しいページに追加されると、そのパラメーターは新しいページに自動的に表示されません。
パラメーターの showOnPages.kind が "selection"されている場合は、新しいページの id を showOnPages.pageIdsに追加する必要があります。
パラメーターに使用可能な defaultValueがある場合、タイルは既定でレンダリングされます。
kind: "duration" パラメーターなどの複数変数パラメーターは、beginVariableNameとendVariableName (一般的に_startTimeと_endTime) を介して 2 つの変数を公開します。 1 つのパラメーター オブジェクトを 1 つの showOnPages 設定と共有します。
Git を使用した編集例
スキーマと検証のメモを使用すると、ユーザー インターフェイスを使用する代わりに、Git を使用して Real-Time ダッシュボードを変更できます。
例: タイルを新しいページにコピーする
RealTimeDashboard-N.jsonを編集して、ページ A から新しく追加されたページ B にタイルをコピーするには:
- 新しい
pages[]を用いてidにページ B を追加します。 -
tiles[]でソース タイルを詳細にコピーします。 割り当てる:- 新規タイル
id(新しい GUID) -
pageId= ページ B の ID
- 新規タイル
- ソース タイルの
queries[]を使って、queryRef.queryIdのソース クエリを見つけます。 - 新しい
queries[]を使用して、クエリをidに深くコピーします。 - 複製されたタイルの
queryRef.queryIdを新しいクエリのidに更新します。 - 複製されたクエリの
usedVariables[]で参照される各パラメーターについて:showOnPages.kind == "selection"場合は、ページ B の ID をshowOnPages.pageIdsに追加します。 -
queryId、tiles[]、およびbaseQueries[]の間で、parameters[].dataSource.queryRefが複数回表示されていないことを確認します。 - ワークスペースで Git から Update を コミット、プッシュ、および実行します。