Controllare i filtri dei report
Quando si incorpora un report di Power BI, è possibile applicare automaticamente filtri durante la fase di caricamento oppure modificare i filtri in modo dinamico dopo il caricamento del report. Ad esempio, è possibile creare un riquadro filtro personalizzato e applicare automaticamente tali filtri ai report per visualizzare le informazioni dettagliate specifiche dell'utente. È anche possibile creare un pulsante che consenta all'utente di applicare filtri al report incorporato.
Sono supportati i tipi di filtro seguenti:
- Base -
IBasicFilter
- Avanzate -
IAdvancedFilter
- Primi N -
ITopNFilter
- Data relativa -
IRelativeDateFilter
- Tempo relativo -
IRelativeTimeFilter
Attributi dell'oggetto filtro
Tutti i tipi di filtro ereditano l'interfaccia IFilter
. Gli attributi elencati di seguito sono rilevanti per tutti i tipi di filtro.
interface IFilter {
$schema: string;
target: IFilterGeneralTarget;
filterType: FilterType;
displaySettings?: IFilterDisplaySettings;
}
SCHEMA
L'attributo $schema
definisce il tipo di filtro. Sono disponibili cinque schemi, uno per ogni tipo di filtro:
- Base -
http://powerbi.com/product/schema#basic
- Avanzate -
http://powerbi.com/product/schema#advanced
- Data relativa -
http://powerbi.com/product/schema#relativeDate
- Tempo relativo -
http://powerbi.com/product/schema#relativeTime
- Primi N -
http://powerbi.com/product/schema#topN
Impostazioni schermo
L'attributo displaySettings
definisce la modalità di visualizzazione del filtro nel riquadro filtri.
interface IFilterDisplaySettings {
isLockedInViewMode?: boolean;
isHiddenInViewMode?: boolean;
displayName?: string;
}
isLockedInViewMode
- Viene applicato e visualizzato un filtro bloccato nel riquadro filtro. Il valore del filtro non può essere modificato in modalità di visualizzazione. Impostarlo su true per bloccare il filtro.isHiddenInViewMode
- Un filtro nascosto viene applicato al report ma non visualizzato nel riquadro filtro in modalità di visualizzazione. Impostarlo su true per nascondere il filtro.displayName
- È possibile visualizzare un filtro nel riquadro filtro con un nome personalizzato. Usare questo attributo per impostare un nome personalizzato per il filtro. Quando il valore non è definito o Null, verrà visualizzato il nome predefinito del filtro (in genere il nome del campo dati filtrato).
Tipo di filtro
L'attributo filterType
definisce il tipo del filtro. Usare l'enumerazione seguente, definita nella libreria dei modelli:
enum FilterType {
Advanced = 0,
Basic = 1,
Unknown = 2,
IncludeExclude = 3,
RelativeDate = 4,
TopN = 5,
Tuple = 6,
RelativeTime = 7,
}
Destinazione
L'attributo target
definisce la destinazione del filtro. Per altre informazioni, vedere Usare le destinazioni per selezionare il campo dati su cui intervenire.
Attributi aggiuntivi per tipo di filtro
Ogni tipo di filtro ha una propria interfaccia con un set diverso di attributi. Le interfacce di filtro fanno parte della libreria powerbi-models .
Filtro di base
Il filtro basic ha un singolo operatore con uno o più valori.
interface IBasicFilter extends IFilter {
operator: BasicFilterOperators;
values: (string | number | boolean)[];
requireSingleSelection?: boolean;
}
operator
- Per il filtro di base l'operatore può essere uno dei seguenti:type BasicFilterOperators = "In" | "NotIn" | "All"
values
- Matrice di valori per il filtro, tutti i valori devono essere dello stesso tipo.requireSingleSelection
- Definisce se è possibile selezionare più valori nel filtro. Se è impostato su true, è possibile selezionare solo un singolo valore.
Ad esempio:
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,
requireSingleSelection: true
}
Filtro avanzato
Il filtro avanzato ha un singolo operatore logico e una o due condizioni che hanno il proprio operatore e valore.
interface IAdvancedFilter extends IFilter {
logicalOperator: AdvancedFilterLogicalOperators;
conditions: IAdvancedFilterCondition[];
}
logicalOperator
- L'operatore logico può essere uno dei seguenti:type AdvancedFilterLogicalOperators = "And" | "Or";
conditions
- Matrice di condizioni per il filtro avanzato, ogni condizione ha unoperator
oggetto e un oggettovalue
.interface IAdvancedFilterCondition { value?: (string | number | boolean | Date); operator: AdvancedFilterConditionOperators; }
Gli operatori disponibili per una condizione sono:
type AdvancedFilterConditionOperators = "None" | "LessThan" | "LessThanOrEqual" | "GreaterThan" | "GreaterThanOrEqual" | "Contains" | "DoesNotContain" | "StartsWith" | "DoesNotStartWith" | "Is" | "IsNot" | "IsBlank" | "IsNotBlank";
Ad esempio:
const advancedFilter = {
$schema: "http://powerbi.com/product/schema#advanced",
target: {
table: "Store",
column: "Name"
},
logicalOperator: "Or",
conditions: [
{
operator: "Contains",
value: "Wash"
},
{
operator: "Contains",
value: "Park"
}
],
filterType: models.FilterType.AdvancedFilter
}
Nota
Se si crea un AdvancedFilter
oggetto con una sola condizione, impostare su logicalOperator
"And"
. L'operatore logico viene ignorato quando viene analizzato da Power BI perché è presente una sola condizione e quando il filtro viene serializzato, l'operatore logico predefinito è "And"
. In questo modo si garantisce che i filtri restituiti quando si chiama getFilters
, corrispondano a quelli impostati usando setFilters
.
Filtro Top N
Il filtro Top N include un singolo operatore, un contatore di elementi per la quantità di elementi da visualizzare e l'ordine in base alla destinazione.
interface ITopNFilter extends IFilter {
operator: TopNFilterOperators;
itemCount: number;
orderBy: ITarget;
}
operator
- L'operatore per il filtro Top N può essere uno dei seguenti:type TopNFilterOperators = "Top" | "Bottom";
itemCount
- Quantità di elementi da visualizzare.orderBy
- Campo dati di destinazione in base al quale eseguire l'ordinamento. Per altre informazioni, vedere Usare le destinazioni per selezionare il campo dati su cui intervenire.
Ad esempio:
const topNFilter = {
$schema: "http://powerbi.com/product/schema#topN",
target: {
table: "Store",
column: "name"
},
operator: "Top",
itemCount: 5,
orderBy: {
table: "Product",
measure: "Count of Product"
},
filterType: models.FilterType.TopN
};
Filtri relativi di data e ora relativa
Il filtro relativo per la data e il filtro ora relativa ereditano entrambi dall'interfaccia IRelativeDateTimeFilter
:
interface IRelativeDateTimeFilter extends IFilter {
operator: RelativeDateOperators;
timeUnitsCount: number;
timeUnitType: RelativeDateFilterTimeUnit;
}
operator
- L'operatore per i filtri di data e ora relativi può essere uno dei seguenti:enum RelativeDateOperators { InLast = 0, InThis = 1, InNext = 2, }
timeUnitsCount
- Quantità di unità di tempo.timeUnitType
- Definisce l'unità di tempo in cui viene utilizzato il filtro.enum RelativeDateFilterTimeUnit { Days = 0, Weeks = 1, CalendarWeeks = 2, Months = 3, CalendarMonths = 4, Years = 5, CalendarYears = 6, Minutes = 7, Hours = 8 }
Nella tabella seguente sono elencate le ore di unità supportate dai filtri relativi di data e ora relativa.
Unità di tempo Data relativa Tempo relativo Giorni ✔ ✖ Settimane ✔ ✖ CalendarWeeks ✔ ✖ Months ✔ ✖ CalendarMonths ✔ ✖ Anni ✔ ✖ CalendarYears ✔ ✖ Minuti ✖ ✔ Ore ✖ ✔ includeToday
- Accetta un valore booleano che specifica se includere il giorno corrente nel filtro.interface IRelativeDateFilter extends IRelativeDateTimeFilter { includeToday: boolean; }
Nota
includeToday
è supportato solo dal filtro data relativo.
Esempio di filtro data relativo:
const relativeDateFilter = {
$schema: "http://powerbi.com/product/schema#relativeDate",
target: {
table: "Sales",
column: "OrderDate"
},
operator: models.RelativeDateOperators.InLast,
timeUnitsCount: 30,
timeUnitType: RelativeDateFilterTimeUnit.Days,
includeToday: true,
filterType: models.FilterType.RelativeDate
};
Esempio di filtro tempo relativo:
const relativeTimeFilter = {
$schema: "http://powerbi.com/product/schema#relativeTime",
target: {
table: "Sales",
column: "OrderDate"
},
operator: models.RelativeDateOperators.InLast,
timeUnitsCount: 12,
timeUnitType: models.RelativeDateFilterTimeUnit.Hours,
filterType: models.FilterType.RelativeTime
};
API filtri
Usare i metodi seguenti per ottenere e aggiornare i filtri applicati a un report:
- Ottenere filtri -
getFilters
- Aggiornare i filtri-
updateFilters
.
Ottenere filtri
Usare getFilters
per ottenere tutti i filtri per uno degli oggetti seguenti:
- Report
- Pagina
- Oggetto visivo
getFilters(): Promise<IFilter[]>
Aggiornare i filtri
Usare updateFilters
per aggiungere, sostituire o rimuovere filtri nell'oggetto (report, pagina o oggetto visivo). Riceve un'operazione e una matrice di filtri facoltativa.
updateFilters(operation: models.FiltersOperations, filters?: models.IFilter[]): Promise<IHttpPostMessageResponse<void>>
Operazione filtri
Quando si chiama updateFilters
è necessario passare l'operazione di filtro da preformare. Le operazioni disponibili sono:
RemoveAll
- Rimuove tutti i filtri a livello di filtro.ReplaceAll
- Sostituisce tutti i filtri esistenti a livello di filtro con i filtri specificati.Add
- Aggiunge i filtri specificati a livello di filtro (oltre ai filtri esistenti).Replace
- Sostituisce un filtro esistente con un determinato filtro solo se entrambi i filtri si applicano allo stesso campo dati. Se è presente un determinato filtro che non sostituisce un filtro esistente, verrà aggiunto.
Nota
Quando si chiama l'API con RemoveAll
, l'argomento filtri deve essere undefined
. Per qualsiasi altra operazione, deve essere definita.
Livelli di filtri
L'aggiornamento e l'acquisizione dei filtri possono essere eseguiti a tre livelli. I filtri a livello diverso sono indipendenti e l'aggiornamento dei filtri a un livello non cambierà. Ad esempio, la rimozione di un filtro di pagina non la rimuove da altre pagine del report.
I livelli supportati per i filtri sono:
- Report : i filtri vengono applicati a tutte le pagine del report.
- Pagina : i filtri vengono applicati alla pagina del report corrente.
- Oggetto visivo : i filtri vengono applicati a un oggetto visivo specifico.
Nota
Solo i filtri a livello di oggetto visivo supportano il tipo di ITopNFilter
filtro.
Filtri a livello di report
Per ottenere o aggiornare i filtri che si applicano a tutte le pagine del report, chiamare l'API pertinente nell'oggetto report. Ad esempio:
Ottenere i filtri del report
Ottenere i filtri applicati a tutte le pagine.
let reportFilters = await report.getFilters();
Aggiungere nuovi filtri ai filtri del report
Aggiunta di nuovi filtri, insieme ai filtri esistenti, per tutte le pagine.
await report.updateFilters(models.FiltersOperations.Add, filtersArray);
Rimuovere i filtri del report
Rimuovere i filtri applicati a tutte le pagine.
await report.updateFilters(models.FiltersOperations.RemoveAll);
Filtri a livello di pagina
Per ottenere o aggiornare i filtri a livello di pagina, eseguire le operazioni seguenti:
- Ottenere l'oggetto pagina per la pagina di destinazione. Per altre informazioni, vedere Ottenere pagine e oggetti visivi.
- Nell'oggetto pagina chiamare l'API pertinente.
Ottenere i filtri di pagina
Ottenere i filtri applicati a una pagina specifica.
let reportFilters = await page.getFilters();
Sostituire tutti i filtri di pagina
Sostituzione di tutti i filtri esistenti applicati a una pagina specifica, con un nuovo set di filtri.
await page.updateFilters(models.FiltersOperations.ReplaceAll, filtersArray);
Rimuovere i filtri di pagina
Rimozione dei filtri applicati a una pagina specifica.
await page.updateFilters(models.FiltersOperations.RemoveAll);
Filtri a livello di oggetto visivo
Per ottenere o aggiornare i filtri a livello di oggetto visivo, eseguire le operazioni seguenti:
- Ottenere l'oggetto visivo per l'oggetto visivo di destinazione. Per altre informazioni, vedere Ottenere pagine e oggetti visivi.
- Nell'oggetto visivo chiamare l'API pertinente.
Ottenere i filtri visivi
Ottenere i filtri applicati a un oggetto visivo specifico.
let reportFilters = await visual.getFilters();
Sostituire filtri visivi con la stessa destinazione
Sostituzione dei filtri di un oggetto visivo specifico. Se esiste un filtro con lo stesso campo dati di destinazione di un determinato filtro, viene sostituito dal filtro specificato. I filtri specificati che non corrispondono a alcun filtro esistente vengono aggiunti.
await visual.updateFilters(models.FiltersOperations.Replace, filtersArray);
Rimuovere i filtri visivi
Rimozione dei filtri applicati a un oggetto visivo specifico.
await visual.updateFilters(models.FiltersOperations.RemoveAll);
Limitazioni
Quando si compila un filtro avanzato possono verificarsi più di due condizioni, il comportamento non definito.
IncludeExclude
eTuple
i tipi di filtro non sono supportati.Le destinazioni di filtro tuple e gerarchia non sono supportate.