リアルタイム ダッシュボード - Git 統合

この記事では、GitHub または Azure Devops リポジトリに同期した後の、Real-Time ダッシュボード項目のフォルダーとファイル構造について詳しく説明します。

フォルダー構造

ワークスペースがリポジトリに同期されると、ワークスペースの最上位フォルダーと、同期された各項目のサブフォルダーが表示されます。 各サブフォルダーは 、アイテム名で書式設定されます。アイテムの種類

ダッシュボードのフォルダー内には、次のファイルが表示されます。

  • プラットフォーム: 表示名や説明など、ファブリック プラットフォームの値を定義します。
  • プロパティ: アイテム固有の値を定義します。

フォルダー構造の例を次に示します。

リポジトリ

  • ワークスペース A
    • Item_A.KQLDashboard
      • 。プラットホーム
      • RealTimeDashboard-1.json
  • ワークスペース B
    • Item_B.KQLDashboard
      • 。プラットホーム
      • RealTimeDashboard-2.json

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.queryId
  • baseQueries[].queryId
  • parameters[].dataSource.queryRef.queryId

queryIdが 2 つのタイル間、またはタイルと baseQuery の間で共有されている場合、検証は次の/queries: Some query IDs are used in multiple query references (tiles, base queries, parameters)で失敗します。

タイルをプログラムで新しいページに複製する場合は、クエリを複製し (新しい queryIdを割り当て、同じ textdataSourceを保持します)、新しいタイルの queryRef.queryId を新しいクエリでポイントします。

ID の一意性と形式

idtiles[]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 の保持

ファイルとライブ ワークスペース項目の間のリンクを保持するには、 既存 のエントリで次の内容を変更しないでください。

  • 最上位: ideTagschema_version
  • タイルごと: idpageIdqueryRef.queryId
  • クエリごと: iddataSource.dataSourceId
  • DataSource ごと: idscopeId
  • ページあたり: id
  • パラメーターごと: idvariableName (およびbeginVariableNameのための / endVariableNamekind: "duration")
  • .platform: config.logicalId

これらの識別子を変更すると、次の Update from Gitで変更が削除と再作成として扱われ、ピン留めされた項目参照、共有ターゲット、元の idにアタッチされた状態のコンテキストが失われます。

Parameters

(クエリの usedVariablesを介して参照される) パラメーターを使用するタイルが新しいページに追加されると、そのパラメーターは新しいページに自動的に表示されません。 パラメーターの showOnPages.kind"selection"されている場合は、新しいページの idshowOnPages.pageIdsに追加する必要があります。 パラメーターに使用可能な defaultValueがある場合、タイルは既定でレンダリングされます。

kind: "duration" パラメーターなどの複数変数パラメーターは、beginVariableNameendVariableName (一般的に_startTime_endTime) を介して 2 つの変数を公開します。 1 つのパラメーター オブジェクトを 1 つの showOnPages 設定と共有します。

Git を使用した編集例

スキーマと検証のメモを使用すると、ユーザー インターフェイスを使用する代わりに、Git を使用して Real-Time ダッシュボードを変更できます。

例: タイルを新しいページにコピーする

RealTimeDashboard-N.jsonを編集して、ページ A から新しく追加されたページ B にタイルをコピーするには:

  1. 新しいpages[]を用いてidにページ B を追加します。
  2. tiles[]でソース タイルを詳細にコピーします。 割り当てる:
    • 新規タイル id (新しい GUID)
    • pageId = ページ B の ID
  3. ソース タイルのqueries[]を使って、queryRef.queryIdのソース クエリを見つけます。
  4. 新しいqueries[]を使用して、クエリをidに深くコピーします。
  5. 複製されたタイルの queryRef.queryId を新しいクエリの idに更新します。
  6. 複製されたクエリの usedVariables[]で参照される各パラメーターについて: showOnPages.kind == "selection"場合は、ページ B の ID を showOnPages.pageIdsに追加します。
  7. queryIdtiles[]、およびbaseQueries[]の間で、parameters[].dataSource.queryRefが複数回表示されていないことを確認します。
  8. ワークスペースで Git から Update を コミット、プッシュ、および実行します。