Controllare i filtri dei dati dei report

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:

  • predefinite: filtri dei dati per gli oggetti visivi predefiniti di Power BI. I filtri dei dati predefiniti 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 in AppSource o come file con estensione pbiviz. I filtri dei dati per gli oggetti visivi di Power BI da AppSource e file o, in breve, 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

filtri dei dati categorici supportano le visualizzazioni seguenti:

  • Elenco
  • Menu a discesa
  • Schede valore

È possibile selezionare uno 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 oggetto IBasicFilter. Per altre informazioni sulla creazione di un filtro di base, vedere filtro Basic.

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 destinazione IFilterHierarchyTarget. Per altre informazioni, vedere Usare le destinazioni per selezionare il campo dati da usare su.

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 intervallo

filtri dei dati Intervallo condizioni di supporto, ad esempio:

  • Tra
  • Prima
  • Dopo

Per modificare una selezione per i filtri dei dati di intervallo, creare un oggetto IAdvancedFilter. 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 relativo per la data

filtri dei dati data relativa condizioni di supporto, ad esempio:

  • La settimana scorsa
  • Ultimi cinque anni

Per modificare una selezione per i filtri dei dati delle date relative, creare un oggetto IRelativeDateFilter. Per altre informazioni, vedere oggetti filtro 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 temporale relativo

i filtri dei dati temporali relativi condizioni di supporto, ad esempio:

  • Ultimi cinque minuti
  • Questa ora

Per modificare una selezione per i filtri dei dati temporali relativi, creare un oggetto IRelativeTimeFilter. 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 gerarchia

i filtri dei dati 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 Hierarchy è 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 'API getSlicerState.

Leggere aggiungere campi ai filtri dei dati della gerarchia.

Filtro gerarchia

Il IHierarchyFilter descrive la gerarchia del filtro dei dati. Usare i metodi getSlicerState 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 ogni IHierarchyFilterNode rappresenta una selezione di un singolo valore.

    interface IHierarchyFilterNode {
        value?: PrimitiveValueType;
        keyValues?: PrimitiveValueType[];
        children?: IHierarchyFilterNode[];
        operator?: HierarchyFilterNodeOperators;
    }
    
    • È necessario impostare value o keyValues
    • children: elenco degli elementi figlio 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 del valore è in base al valore padre nella gerarchia o all'impostazione predefinita se si tratta del 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 della 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 gli 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 del Q 1.

  • Iniziare con l'operatore NotSelected per selezionare tutto tranne per 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 tranne i valori specificati. Vengono selezionati gli anni da 2010 a 2014. 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 tipo di slicer:

Nota

La configurazione dei filtri dei dati sincronizzata 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 saranno interessati.

Ottenere lo stato del filtro dei dati

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

Per impostazione predefinita, al filtro dei dati non verranno applicati filtri. In questi casi, getSlicerState restituirà ISlicerState con una matrice vuota di filtri.

getSlicerState funziona sia per predefinite che per gli oggetti visivi da AppSource o file filtri 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'oggetto visivo filtro dei dati'istanza, 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 oggetto ISlicerState.

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 da AppSource o file selezione del filtro dei dati, è necessario creare un oggetto ISlicerFilter, che può essere dei tipi seguenti:

  • IBasicFilter
  • IAdvancedFilter
  • IRelativeDateFilter
  • IRelativeTimeFilter

Diversi oggetti visivi da AppSource o file filtri 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 caricamento del report

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 matrice di ISlicer.

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

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

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

Usare un nome visivo o destinazione del filtro dei dati selettore 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 ISlicer diversi che si trovano nello stesso gruppo di sincronizzazione, il risultato sarà imprevisto.

Applicare il filtro dei dati agli esempi di caricamento

Questa sezione include due esempi di configurazione del caricamento 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 i 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.

  • Chiamando setSlicerState in un oggetto visivo che non è un filtro dei dati, restituirà una promessa rifiutata con l'errore Operazione funziona solo nei filtri dei dati.

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