Share via


Filtri dei dati del report di controllo

Usando le API del filtro dei dati, è possibile ottenere e impostare lo stato di un filtro dei dati di Power BI. È inoltre possibile usare la configurazione di caricamento per modificare lo stato del filtro dei dati durante il caricamento di un report.

Esistono due tipi di oggetti visivi del filtro dei dati:

  • Out-of-box : filtri dei dati per oggetti visivi power BI predefiniti. I filtri dei dati out-of-box supportano tutti gli oggetti visivi di Power BI forniti con Power BI (Desktop e servizio).

  • Oggetti visivi di Power BI da AppSource e file : filtri dei dati per oggetti visivi di Power BI di terze parti, disponibili da AppSource o come file con estensione pbiviz. I filtri dei dati per gli oggetti visivi di Power BI da AppSource e file, o in brevi oggetti visivi di AppSource o file, sono filtri dei dati per gli oggetti visivi di Power BI creati dagli sviluppatori.

Oggetto Filtro dei dati

Esistono quattro tipi di filtro dei dati:

Filtro dei dati categorico

I filtri dei dati categorici supportano le visualizzazioni seguenti:

  • Elenco
  • Menu a discesa
  • Schede valore

È possibile selezionare singoli o più elementi da questi elenchi per filtrare di conseguenza il report.

Per modificare una selezione per questi tipi di filtri dei dati, è necessario creare un IBasicFilter oggetto. Per altre informazioni sulla creazione di un filtro di base, vedere Filtro di base.

const basicFilter = {
  $schema: "http://powerbi.com/product/schema#basic",
  target: {
    table: "Store",
    column: "Count"
  },
  operator: "In",
  values: [1, 2, 3, 4],
  filterType: models.FilterType.BasicFilter
};

await visual.setSlicerState({
    filters: [basicFilter]
});

Se la destinazione del filtro dei dati è una gerarchia, specificare una IFilterHierarchyTarget destinazione. Per altre informazioni, vedere Usare le destinazioni per selezionare il campo dati da eseguire.

const basicFilter = {
  $schema: "http://powerbi.com/product/schema#basic",
  target: {
    table: "Store",
    hierarchy: "Country",
    hierarchyLevel: "Code"
  },
  operator: "In",
  values: [456, 943],
  filterType: models.FilterType.BasicFilter
};

await visual.setSlicerState({
    filters: [basicFilter]
});

Filtro dei dati dell'intervallo

I filtri dei dati di intervallo supportano le condizioni, ad esempio:

  • tra le
  • Prima
  • After

Per modificare una selezione per i filtri dei dati dell'intervallo, creare un IAdvancedFilter oggetto. Per altre informazioni, vedere Filtro avanzato.

const advancedFilter = {
  $schema: "http://powerbi.com/product/schema#advanced",
  target: {
    table: "Store",
    column: "Number"
  },
  logicalOperator: "And",
  conditions: [
    {
      operator: "GreaterThanOrEqual",
      value: 30
    },
    {
      operator: "LessThan",
      value: 40
    }
  ],
  filterType: models.FilterType.AdvancedFilter
};

await visual.setSlicerState({
    filters: [advancedFilter]
});

Filtro dei dati data relativo

I filtri dei dati relativi supportano le condizioni, ad esempio:

  • Ultima settimana
  • Ultimi cinque anni

Per modificare una selezione per i filtri dei dati relativi, creare un IRelativeDateFilter oggetto. Per altre informazioni, vedere Oggetti filtro relativo di data e ora relativa.

const relativeDateFilter = {
  $schema: "http://powerbi.com/product/schema#relativeDate",
  target: {
    table: "Sales",
    column: "OrderDate"
  },
  operator: models.RelativeDateOperators.InLast,
  timeUnitsCount: 30,
  timeUnitType: models.RelativeDateFilterTimeUnit.Days,
  includeToday: true,
  filterType: models.FilterType.RelativeDate
};

await visual.setSlicerState({
    filters: [relativeDateFilter]
});

Filtro dei dati temporali relativi

I filtri dei dati temporali relativi supportano le condizioni, ad esempio:

  • Ultimi cinque minuti
  • Questa ora

Per modificare una selezione per i filtri dei dati relativi, creare un IRelativeTimeFilter oggetto. Per altre informazioni, vedere Filtri relativi di data e ora relativa.

const relativeTimeFilter = {
  $schema: "http://powerbi.com/product/schema#relativeTime",
  target: {
    table: "Sales",
    column: "OrderDate"
  },
  operator: models.RelativeDateOperators.InLast,
  timeUnitsCount: 5,
  timeUnitType: models.RelativeDateFilterTimeUnit.Minutes,
  filterType: models.FilterType.RelativeTime
};

await visual.setSlicerState({
    filters: [relativeTimeFilter]
});

Filtro dei dati della gerarchia

I filtri dei dati della gerarchia consentono di filtrare da più campi correlati.

Screenshot che mostra un esempio di filtro dei dati gerarchia. Mostra i livelli anno, trimestre e mese.

Il filtro dei dati Gerarchia è supportato dall'SDK versione 2.21. Impostare le selezioni nel filtro dei dati della gerarchia con l'API setSlicerState o ottenere le selezioni della gerarchia corrente con l'API getSlicerState.

Leggere informazioni sull'aggiunta di campi ai filtri dei dati della gerarchia.

Filtro gerarchia

Viene IHierarchyFilter descritta la gerarchia del filtro dei dati. Usare i getSlicerState metodi e setSlicerState con questo filtro.

interface IHierarchyFilter extends IFilter {
    target: (IFilterTarget | IFilterKeyTarget)[];
    hierarchyData: IHierarchyFilterNode[];
}
  • hierarchyData : gli elementi selezionati e non selezionati in un albero della gerarchia in cui ognuno IHierarchyFilterNode rappresenta una selezione di un singolo valore.

    interface IHierarchyFilterNode {
        value?: PrimitiveValueType;
        keyValues?: PrimitiveValueType[];
        children?: IHierarchyFilterNode[];
        operator?: HierarchyFilterNodeOperators;
    }
    
    • O valuekeyValues deve essere impostato
    • children - Elenco dei figli del nodo rilevanti per la selezione corrente
    • operator - Operatore per singoli oggetti nell'albero. L'operatore può essere uno dei seguenti:

    type HierarchyFilterNodeOperators = "Selected" | "NotSelected" | "Inherited";

    • Selected - il valore è selezionato in modo esplicito.
    • NotSelected - il valore non è selezionato in modo esplicito.
    • Inherited - la selezione dei valori è in base al valore padre nella gerarchia o al valore predefinito se è il valore radice.

    operator è facoltativo. Se non è impostato alcun operatore, il valore predefinito è Inherited.

Esempi di filtro dei dati gerarchia

Gli esempi seguenti descrivono diversi scenari per l'uso dell'API setSlicerState con filtri dei dati gerarchia.

  • Selezionare i valori in livelli diversi. Ad esempio, selezionare 'Qtr 1' e 'Qtr 2' nel 2013 e 'Qtr 1' e 'Qtr 2' nel 2014.

    const filter = {
      "$schema": http://powerbi.com/product/schema#hierarchy,
      "target": [
          {
              "table": "Dates",
              "hierarchy": "Date Hierarchy",
              "hierarchyLevel": "Year"
          },
          {
              "table": "Dates",
              "hierarchy": "Date Hierarchy",
              "hierarchyLevel": "Quarter"
          }
      ],
      "filterType": 9,
      "hierarchyData": [
          {
              "operator": "Inherited",
              "value": 2013,
              "children": [
                  {
                      "operator": "Selected",
                      "value": "Qtr 1"
                  },
                  {
                      "operator": "Selected",
                      "value": "Qtr 2"
                  }
              ]
          },
          {
              "operator": "Inherited",
              "value": 2014,
              "children": [
                  {
                      "operator": "Selected",
                      "value": "Qtr 1"
                  },
                  {
                      "operator": "Selected",
                      "value": "Qtr 2"
                  }
              ]
          }
      ]
    };
    
    await slicer.setSlicerState({ filters: [filter] });
    

    Screenshot che mostra un esempio di filtro dei dati gerarchia con trimestri uno e due selezionati per anni 2013 e 2014.

  • Selezionare i valori in livelli diversi con eccezioni. Ad esempio, selezionare 2014 senza 'Qtr 1'.

    const filter = {
      "$schema": http://powerbi.com/product/schema#hierarchy,
      "target": [
          {
              "table": "Dates",
              "hierarchy": "Date Hierarchy",
              "hierarchyLevel": "Year"
          },
          {
              "table": "Dates",
              "hierarchy": "Date Hierarchy",
              "hierarchyLevel": "Quarter"
          }
      ],
      "filterType": 9,
      "hierarchyData": [
          {
              "operator": "Selected",
              "value": 2014,
              "children": [
                  {
                      "operator": "NotSelected",
                      "value": "Qtr 1"
                  }
              ]
          }
      ]
    };
    
    await slicer.setSlicerState({ filters: [filter] });
    

    Screenshot che mostra un esempio di filtro dei dati gerarchia che seleziona i valori a livelli diversi con eccezioni. Ha selezionato l'anno 2014 ad eccezione di Q 1.

  • Iniziare con l'operatore NotSelected per selezionare tutto , ad eccezione di determinati valori. Ad esempio, selezionare tutto tranne "Qtr 1" del 2008 e 2009.

    const filter = {
      "$schema": http://powerbi.com/product/schema#hierarchy,
      "target": [
          {
              "table": "Dates",
              "column": "Year"
          },
          {
              "table": "Dates",
              "column": "Quarter"
          }
      ],
      "filterType": 9,
      "hierarchyData": [
          {
              "operator": "NotSelected",
              "value": 2009
          },
          {
              "operator": "Inherited",
              "value": 2008,
              "children": [
                  {
                      "operator": "NotSelected",
                      "value": "Q1"
                  }
              ]
          }
      ]
    }
    
    await slicer.setSlicerState({ filters: [filter] });
    

    Screenshot che mostra un esempio di filtro dei dati della gerarchia che seleziona tutto, ad eccezione dei valori specificati. Gli anni da 2010 a 2014 sono selezionati. 2008 è selezionato senza Q 1 e 2009 non è selezionato affatto.

API filtro dei dati

È possibile usare i metodi seguenti per gli oggetti visivi con il slicer tipo:

Nota

La configurazione dei filtri dei dati di sincronizzazione salvata in un report viene riconosciuta dalle API del filtro dei dati. Ciò significa che se si imposta un filtro dei dati usando l'API, tutti i filtri dei dati nello stesso gruppo di sincronizzazione verranno interessati.

Ottenere lo stato del filtro dei dati

Per ottenere uno stato del filtro dei dati, è necessario trovare l'istanza visiva del filtro dei dati e chiamare getSlicerState. Il risultato è di tipo ISlicerState.

Per impostazione predefinita, il filtro dei dati non avrà alcun filtro applicato. In questi casi, getSlicerState restituirà ISlicerState una matrice vuota di filtri.

getSlicerStatefunziona sia per gli oggetti visivi predefiniti che per gli oggetti visivi da AppSource o file filtro dei dati.

let state = await visual.getSlicerState();

Impostare lo stato del filtro dei dati

Per impostare uno stato del filtro dei dati, è necessario trovare l'istanza visiva del filtro dei dati, creare lo stato del filtro dei dati e chiamare setSlicerState con lo stato del filtro dei dati creato.

await visual.setSlicerState(state);

Lo stato del filtro dei dati è un ISlicerState oggetto.

interface ISlicerState {
    filters: ISlicerFilter[];
    targets?: SlicerTarget[];
}

Per reimpostare un filtro dei dati, chiamare setSlicerState con una matrice vuota di filtri.

Impostazione di un filtro dei dati per gli oggetti visivi da AppSource o file

Per impostare un oggetto visivo dalla selezione del filtro dei dati AppSource o file , è necessario creare un ISlicerFilter oggetto, che può essere dei tipi seguenti:

  • IBasicFilter
  • IAdvancedFilter
  • IRelativeDateFilter
  • IRelativeTimeFilter

Oggetti visivi diversi da AppSource o file filtro dei dati, supportano diversi tipi di filtri. Per determinare il tipo di filtro necessario per modificare il filtro dei dati, chiamare visual.getSlicerState().

Per altre informazioni sui tipi di filtro, vedere Filtri del report di controllo.

Impostazione dei filtri dei dati sul carico del report

La configurazione del carico del report supporta la modifica dello stato dei filtri dei dati. In questo modo è possibile modificare lo stato dei filtri dei dati del report durante il caricamento del report. A tale scopo, passare una ISlicer matrice.

interface IReportLoadConfiguration {
    ...
    slicers?: ISlicer[];
}

Ogni ISlicer oggetto contiene un selettore e uno stato del filtro dei dati.

interface ISlicer {
    selector: SlicerSelector;
    state: ISlicerState;
}

Usare un selettore di destinazione del filtro dei dati o un nome visivo per selezionare il filtro dei dati da modificare. Per altre informazioni, vedere Usare selettori per controllare quali oggetti visivi vengono applicati.

Nota

Se si passano oggetti diversi ISlicer che si trovano nello stesso gruppo di sincronizzazione, il risultato sarà imprevisto.

Applicare il filtro dei dati agli esempi di carico

Questa sezione include due esempi di configurazione del carico con filtri dei dati.

  • Impostare un filtro dei dati specifico in base al nome

    let slicers = [
      {
        selector: {
          $schema: "http://powerbi.com/product/schema#visualSelector",
          visualName: "d1feb8891635af3b335a"
        },
        state: {
          filters: [advancedFilter]
        }
      }
    ];
    
    let embedConfig = {
      ...
      slicers: slicers,
    };
    
  • Impostare filtri dei dati in base alla destinazione del filtro dei dati

    let target = {
      table: "Store",
      column: "StoreNumber"
    };
    
    let slicers = [
      {
        selector: {
          $schema: "http://powerbi.com/product/schema#slicerTargetSelector",
          target: target 
        },
        state: {
          filters: [advancedFilter]
        }
      }
    ];
    
    let embedConfig = {
      ...
      slicers: slicers,
    };
    

Considerazioni e limitazioni

  • I filtri dei dati delle tuple non sono supportati.

  • Il filtro dei dati Hierarchy è supportato dall'SDK versione 2.21.

  • I filtri dei dati predefiniti supportano solo un singolo filtro.

  • La chiamata setSlicerState a un oggetto visivo che non è un filtro dei dati restituirà una promessa rifiutata con l'operazione di errore funziona solo sui filtri dei dati.

  • Non esiste alcuna API per modificare la configurazione di sincronizzazione dei filtri dei dati.

Passaggi successivi