Jaa


Dynaaminen porautumisen ohjausobjekti

Muistiinpano

Tämä ominaisuus on käytettävissä ohjelmointirajapinnan versiosta 5.7.0 alkaen.

Dynaamisen porautumisen ohjausobjektin avulla visualisointi voi ottaa porautumisominaisuuden käyttöön tai poistaa sen käytöstä dynaamisesti ohjelmointirajapinnan kutsun avulla. Kun porautumisominaisuus on käytössä, kaikki porautumistoiminnot ja laajennus-/kutistustoiminnot ovat käytettävissä, mukaan lukien ohjelmointirajapintakutsut, pikavalikon komennot, ylätunnisteen porautumispainikkeet ja hierarkiatietojen tuki. Kun nämä toiminnot on poistettu käytöstä, ne eivät ole käytettävissä.

Seuraavissa kuvissa on esimerkki visualisoinnista, jossa dynaaminen porautumisen ohjausobjekti on käytössä ja poistettu käytöstä:

Dynaaminen porautumisen ohjausobjekti sisältää seuraavat ohjelmointirajapinnan elementit:

  • -isDrillDisabledmerkintä:DataRolesInfo

    export interface DataRolesInfo {
          //…
          isDrillDisabled?: boolean; // ----- NEW -----
      }
    
  • - setCanDrill menetelmä liittymässä IVisualHost :

      export interface IVisualHost extends extensibility.IVisualHost {
          //…
          setCanDrill: (drillAllowed: boolean) => void; // ----- NEW -----
      }
    

Voit selvittää, onko porautuminen poistettu käytöstä, käyttämällä isDrillDisabled päivitysmenetelmän ominaisuutta:

    private update(options: VisualUpdateOptions) {
      //…
      const isDrillDisabled = options.dataViews[0].metadata.dataRoles.isDrillDisabled;
      //…
    }

Ota porautuminen käyttöön tai poista se käytöstä tarvittaessa ohjelmointirajapintakutsun avulla:

  • Ottaminen käyttöön: this.host.setCanDrill(true /* drillAllowed */);

  • Käytöstä poistaminen: this.host.setCanDrill(false /* drillAllowed */);

Dynaamisen porautumisen hallintavaatimukset

Porautuminen on oletusarvoisesti käytössä, mutta dynaamisen porautumisen ohjausobjektin avulla visualisointi voi ottaa käyttöön tai poistaa käytöstä porautumisen ohjelmointirajapinnan kutsun avulla.

Visualisoinnissa, jossa on dynaaminen porautumisen ohjausobjekti, on capabilities.json-tiedostossa seuraava koodi:

  • Kun porautuminen on oletusarvoisesti poissa käytöstä:

        "drilldown": {
            "roles": [
                "Rows",
                "Columns"
            ],
            "canDisableDrill": { 
                "disabledByDefault": true
            }
        },
    
  • Kun porautuminen on oletusarvoisesti käytössä:

        "drilldown": {
            "roles": [
                "Rows",
                "Columns"
            ],
            "canDisableDrill": {}
        },
    

- canDisableDrill ominaisuus ilmaisee, että visualisointi tukee tätä ominaisuutta. Ilman tätä ominaisuutta ohjelmointirajapinnan kutsua ei noudateta.
- disabledByDefault ominaisuus ilmaisee, poistetaanko porautumisominaisuus oletusarvoisesti käytöstä.

Muistiinpano

- disabledByDefault ominaisuus tulee voimaan, kun teet jonkin seuraavista toimista:

  • Uuden visualisoinnin lisääminen pohjaan
  • Muunna visualisointi sellaisesta, joka ei tue tätä ominaisuutta.

Jos esimerkiksi muunnat sourceVisual-kohteen targetVisual-arvoksi, targetVisual-ominaisuutta disabledByDefaulttarkastellaan vain, jos sourceVisual ei tue tätä ominaisuutta. Jos sourceVisual tukee tätä ominaisuutta, targetVisual säilyttää lähteenVisual-tilan eikä oletusarvoa.

Alaspäin porautumisen tuen lisääminen olemassa olevan visualisoinnin uuteen versioon

Porautumisominaisuuden käyttäminen tarkoittaa läpimurtomuutosta. Tästä syystä sujuvan siirtymän osalta suosittelemme käyttämään uutta visualisoinnin GUID-tunnusta uudelle versiolle.

Jos kuitenkin haluat säilyttää saman GUID-tunnuksen, muista seuraavat asiat:

  • Kun siirryt ei-porattavasta versiosta uuteen porattavaan versioon, joitakin tietoja ei ehkä ole annettu - dataView kohdassa porautumisominaisuuden osana käyttöön otetun hierarkkisen tietojen tuen vuoksi. Dynaaminen porautumisen ohjausobjekti ei tarjoa automaattista tukea tälle ongelmalle, mutta sitä voidaan käyttää siirtoprosessin hallintaan.

  • Visualisoinnin omatoimista siirtymistä varten visualisoinnin on tehtävä seuraavat toimet:

    • Määritä, milloin uusi versio ladataan ensimmäisen kerran vanhemman version sijaan, ja käytä ohjelmointirajapintaa persistProperties .

    • Poista porautuminen käytöstä kaikkien tietojen vastaanottamiseksi ohjelmointirajapinnan setCanDrill avulla.

Seuraavassa esimerkissä näytetään, miten voit siirtää vanhemman visualisoinnin itse sellaiseen, joka käyttää dynaamista porautumisen ohjausobjektia:

  1. Lisää seuraava objekti capabilities.json-tiedostoon:

    "DrillMigration": {
      "displayName": "Drill Migration",
      "properties": {
          "isMigrated": {
              "displayName": "Is Drill Migrated",
              "type": {
                  "bool": true
              }
          }
      }
    },
    
  2. Lisää visual.ts-tiedostoon seuraava:

    export class Visual implements IVisual {
        //...
          private isCalledToDisableDrillInMigrationScenario = false;
          private drillMigration = { disabledByDefault: true };
          constructor(options: VisualConstructorOptions) {
           //...
           this.host = options.host;
           //...
          }
          private update(options: VisualUpdateOptions) {
             this.handleSelfDrillMigration(options);
              //...
          }
          private handleSelfDrillMigration(options: VisualUpdateOptions): void {
              if (options && options.dataViews && options.dataViews[0] && options.dataViews[0].metadata) {
                  const metadata = options.dataViews[0].metadata;
                  if (metadata && metadata.dataRoles) {
                      const isDrillDisabled = metadata.dataRoles.isDrillDisabled;
                      if (isDrillDisabled === undefined) {
                          return;
                      }
                      // Continue in case the visual is already migrated
                      if (!metadata.objects?.DrillMigration?.isMigrated) {
                          // Persist the isMigrated property when the drill has the correct state
                          if (this.drillMigration.disabledByDefault === isDrillDisabled) {
                              this.persistMigrationProperty();
                          } else if (!this.isCalledToDisableDrillInMigrationScenario) {
                              // Use the API call only once
                              this.host.setCanDrill(!this.drillMigration.disabledByDefault);
                              this.isCalledToDisableDrillInMigrationScenario = true;
                          }
                      }
                  }
              }
          }
          private persistMigrationProperty(): void {
              let property = {
                  merge: [{
                      objectName: "DrillMigration",
                      properties: {
                          isMigrated: true
                      },
                      selector: null
                  }]
              };
              this.host.persistProperties(property);
          }
      }
    

Kun visualisointi avataan ensimmäisen kerran tämän koodin lisäämisen jälkeen, DrillMigration-muuttujan arvoksi määritetään tosi ja visualisointi avautuu oletustilassa.

Huomioitavat asiat ja rajoitukset

  • Porautumistilaa ei tallenneta sen jälkeen, kun porautuminen on pois käytöstä. Jos voit palauttaa porautumisen käytöstä poistamisen jälkeen, vain ensimmäinen taso näytetään riippumatta siitä, mitä ennen sen poistamista käytöstä näytettiin.

  • Laajenna/kutista-tilaa ei tallenneta porautumisen käytöstä poistamisen jälkeen. Kaikki rivit kutistetaan, kun porautuminen on valmis.

  • Ohjelmointirajapinnan kutsua ei tueta koontinäytöissä.

  • Tietonäkymän yhdistämisehdot: Käytä "max": 1 kaikkiin porattavissa olevan roolin ehtoihin, jos haluat rajoittaa visualisoinnin näyttämään vain yhden kentän, kun porautuminen on poistettu käytöstä. Esimerkkejä:

    • Luokittainen tietonäkymä:

      "conditions": [
           { "category": { "min": 1 }, "measure": { "max": 1 }}
      ]
      
    • Matriisin tietonäkymä:

      "conditions": [
          { "Rows": { "max": 0 }, "Columns": { "max": 0 }, "Value": { "min": 1 } },
          { "Rows": { "min": 1 }, "Columns": { "min": 0 }, "Value": { "min": 0 } },
          { "Rows": { "min": 0 }, "Columns": { "min": 1 }, "Value": { "min": 0 } },
      ]