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:
- Filtri dei dati categorici
- Filtri dei dati dell'intervallo
- Filtri dei dati per la data relativa
- Filtri dei dati gerarchici
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.
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 ognunoIHierarchyFilterNode
rappresenta una selezione di un singolo valore.interface IHierarchyFilterNode { value?: PrimitiveValueType; keyValues?: PrimitiveValueType[]; children?: IHierarchyFilterNode[]; operator?: HierarchyFilterNodeOperators; }
- O
value
keyValues
deve essere impostato children
- Elenco dei figli del nodo rilevanti per la selezione correnteoperator
- 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
.- O
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] });
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] });
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] });
API filtro dei dati
È possibile usare i metodi seguenti per gli oggetti visivi con il slicer
tipo:
- Ottenere lo stato del filtro dei dati -
getSlicerState
- Impostare lo stato del filtro dei dati -
setSlicerState
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.
getSlicerState
funziona 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.