Reaaliaikainen koontinäyttö – Git-integrointi

Tässä artikkelissa kerrotaan koontinäytön Real-Time kohteiden kansio- ja tiedostorakenteesta, kun ne on synkronoitu GitHub- tai Azure Devops -säilöön.

Kansiorakenne

Kun työtila on synkronoitu säilöön, näet työtilan ylimmän tason kansion ja alikansion kullekin synkronoidulle kohteelle. Jokainen alikansio on muotoiltu kohteen nimellä. Kohteen tyyppi

Näet koontinäytön kansiossa seuraavat tiedostot:

  • Ympäristö: Määrittää kangasympäristön arvot, kuten näyttönimen ja kuvauksen.
  • Ominaisuudet: Määrittää kohdekohtaiset arvot.

Tässä on esimerkki kansiorakenteesta:

Repo

  • Työtila A
    • Item_A.KQLDashboard
      • .lava
      • RealTimeDashboard-1.json
  • Työtila B
    • Item_B.KQLDashboard
      • .lava
      • RealTimeDashboard-2.json

koontinäytön tiedostojen Real-Time

Seuraavat tiedostot sisältyvät koontinäyttökansioon:

  • .lava

    Tiedosto käyttää seuraavaa rakennetta reaaliaikaisen koontinäytön määrittämiseen:

    {
      "$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

    Tiedosto käyttää seuraavaa rakennetta reaaliaikaisen koontinäytön määrittämiseen:

    {
      "$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 dashboardin validointi

Real-Time Dashboardin latauspäätepiste validoi JSON:n yli standardin skeeman yhteensopivuuden. Rikkomukset näkyvät käyttäjille hallintapaneelin käyttöliittymässä virheviesteinä kuten: . Error loading dashboard / Error found at: /<section> / Message: <reason>

Kyselyviitteen uniikkisyys

Jokainen queryId kojelaudassa on viitattava täsmälleen kerran, laskettuna läpi:

  • tiles[].queryRef.queryId
  • baseQueries[].queryId
  • parameters[].dataSource.queryRef.queryId

Jos a queryId jaetaan kahden laatan kesken tai laatan ja baseQueryn välillä, validointi epäonnistuu seuraavasti: /queries: Some query IDs are used in multiple query references (tiles, base queries, parameters).

Kun kopioit laatan uudelle sivulle ohjelmallisesti, kopioi myös kysely (määritä uusi queryId, pidä sama text ja dataSource) ja osoita uudet laatat queryRef.queryId uuteen kyselyyn.

ID:n ainutlaatuisuus ja muoto

Jokainen id , tiles[]queries[], baseQueries[], parameters[]dataSources[], , ja pages[] on oltava seuraava:

  • Ainutlaatuinen omassa kategoriassaan.
  • Pätevä RFC 4122 UUID (esimerkiksi, 3e4666bf-d5e5-4aa7-b8ce-cefe41c7568a). Luettavat merkkijonot, joissa sattuu olemaan viivoja (esimerkiksi my-tile-0001-0000-0000-000000000001), hylätään latausajassa: Needs to follow the UUID format as defined by RFC 4122.

Ohjelmallisissa muokkauksissa generoi ID:t UUID-kirjastolla: uuid.uuid4() tuoreille ID:ille tai uuid.uuid5(namespace, label) deterministisille ID:ille, jotka kestävät skriptin uusintoja.

Vinkki

Jos näet kuormitusvirheen, kuten /tiles/N/queryRef ... must have required property 'baseQueryId', todellinen vika on yleensä väärinmuotoinen queryRef.queryId, ei puuttuva baseQueryId. Skeema queryRef on oneOf välillä { kind: "query", queryId: <uuid> } ja { kind: "baseQuery", baseQueryId: <uuid> }. Kun sisäinen UUID on virheellinen, validointi epäonnistuu - querycur-haarassa ja raportoi epäonnistumiset - baseQuerycur-haarasta. Korjaa UUID ja kaskadi poistuu.

Identiteetin säilyttäminen muokkauksissa

Säilyttääksesi linkin tiedoston ja live-työtilan kohteen välillä, älä muokkaa seuraavia olemassa oleviin merkintöihin:

  • Huipputaso: id, eTag, , schema_version
  • Per laatta: id, pageId, queryRef.queryId
  • Kyselyn mukaan: id, dataSource.dataSourceId
  • dataSourcen mukaan: id, scopeId
  • Per sivu: id
  • Per parametri: id, variableName (jabeginVariableName / endVariableNamefor kind: "duration")
  • .platform: config.logicalId

Näiden tunnisteiden muokkaaminen johtaa siihen, että muutos käsitellään poistona ja uudelleenluomisena seuraavassa Update from Git, mikä johtaa kontekstin menetykseen: kiinnitetyt kohteen viittaukset, jakokohteet ja alkuperäiseen tilaan liitetyt idtilat .

Parametrit

Kun ruutu, joka käyttää parametria (viitataan kyselyn usedVariableskautta), lisätään uudelle sivulle, kyseinen parametri ei ilmesty automaattisesti uudelle sivulle. Jos parametri showOnPages.kind on "selection", sinun täytyy lisätä uudet sivut id .showOnPages.pageIds Jos parametrilla on käytettävissä defaultValueoleva , laatta renderöityy oletusarvolla.

Monimuuttujaiset parametrit, kuten kind: "duration" parametrit, paljastavat kaksi muuttujaa kautta beginVariableName ja endVariableName (yleisesti _startTime ja _endTime). Ne jakavat yhden parametrin objektin yhdellä showOnPages asetuksella.

Esimerkkimuokkauksia Gitin kautta

Skeeman ja validointimuistiinpanojen avulla voit tehdä muutoksia Real-Time hallintapaneeliin Gitin kautta käyttöliittymän sijaan.

Esimerkki: Kopioi laatta uudelle sivulle

Laatan kopioimiseksi sivulta A uudelle lisätylle sivulle B muokkaamalla RealTimeDashboard-N.json:

  1. Lisää sivu B pages[] uuteen id.
  2. Syväkopioi lähdelaatta .tiles[] Määritä:
    • uusi laatta id (tuore GUID)
    • pageId = sivun B tunniste
  3. Etsi lähdekysely queries[] lähderuudun queryRef.queryIdkohdalla.
  4. Kopioi kysely syvälle queries[] uudella id.
  5. Päivitä kloonatut laatat queryRef.queryId uusiin kyselyihin id.
  6. Jokaiselle kloonatussa kyselyssä usedVariables[]viitatulle parametrille : jos showOnPages.kind == "selection", liitä sivun B ID .showOnPages.pageIds
  7. Vahvista, että ei queryId esiintyy useammin kuin kerran , tiles[]baseQueries[], ja parameters[].dataSource.queryRef.
  8. Commisse, push ja suorita Update Gitistä työtilassa.