Visuaalisten suodattimien ohjelmointirajapinta Power BI:n visualisoinneissa
Visuaalisten suodattimien ohjelmointirajapinnan avulla voit suodattaa tietoja Power BI:n visualisoinneissa. Suodattimen ohjelmointirajapinnan ja muiden tietojenvalintatapojen tärkein ero on se, miten se vaikuttaa raportin muihin visualisointeihin. Kun suodatinta käytetään visualisoinnissa, vain suodatetut tiedot näkyvät kaikissa visualisoinneissa, vaikka muut visualisoinnit tukevat korostuksia.
Visualisoinnin suodattamisen mahdollistamiseksi capabilities.json-tiedoston tulee sisältää filter
-objekti general
-osassa.
"objects": {
"general": {
"displayName": "General",
"displayNameKey": "formattingGeneral",
"properties": {
"filter": {
"type": {
"filter": true
}
}
}
}
}
Muistiinpano
Visuaalisten suodattimien ohjelmointirajapinnat ovat käytettävissä powerbi-models-paketissa. Tämä paketti sisältää myös luokkia, joilla luodaan suodatinesiintymiä.
npm install powerbi-models --save
Jos käytät työkalujen vanhempaa versiota (aiempi kuin 3.x.x), sisällytä
powerbi-models
visualisointipakettiin. Lisätietoja on lyhyessä oppaassa Lisäsuodattimen ohjelmointirajapinnan lisääminen mukautettuun visualisointiin. Jos haluat tietää, mitä versiota käytät, tarkistaapiVersion
pbiviz.json-tiedostosta .
Kaikki suodattimet käyttävät - IFilter
liittymää seuraavassa koodissa esitetyllä tavalla:
export interface IFilter {
$schema: string;
target: IFilterTarget;
}
tässä target
on tietolähteen taulukkosarake.
Suodatinten ohjelmointirajapintoja on kolme:
- Perussuodattimen ohjelmointirajapinta
- Lisäsuodatuksen ohjelmointirajapinta
- Monikkosuodattimen (monisarakkeinen) suodattimen ohjelmointirajapinta
Perussuodattimen ohjelmointirajapinta
Perussuodatinliittymä näkyy seuraavassa koodissa:
export interface IBasicFilter extends IFilter {
operator: BasicFilterOperators;
values: (string | number | boolean)[];
}
Jossa:
operator
on luettelointi arvoilla In, NotIn ja All.values
ovat ehdon arvoja.
Esimerkki perussuodattimesta
Seuraava esimerkki palauttaa kaikki rivit, joissa col1
on yhtä suuri kuin arvo 1, 2 tai 3.
let basicFilter = {
target: {
column: "Col1"
},
operator: "In",
values: [1,2,3]
}
Yllä olevaa esimerkkiä vastaava SQL on:
SELECT * FROM table WHERE col1 IN ( 1 , 2 , 3 )
Voit luoda suodattimen käyttämällä BasicFilter-luokkaa kohteessa powerbi-models
.
Jos käytät työkalun vanhempaa versiota, sinun pitäisi saada malliesiintymä ikkunaobjektiin käyttämällä kohdetta window['powerbi-models']
seuraavassa koodissa esitetyllä tavalla:
let categories: DataViewCategoricalColumn = this.dataView.categorical.categories[0];
let target: IFilterColumnTarget = {
table: categories.source.queryName.substr(0, categories.source.queryName.indexOf('.')),
column: categories.source.displayName
};
let values = [ 1, 2, 3 ];
let filter: IBasicFilter = new window['powerbi-models'].BasicFilter(target, "In", values);
Visualisointi käynnistää suodattimen kutsumalla applyJsonFilter()
-menetelmää isäntäliittymässä, IVisualHost
joka on annettu visualisoinnille konstruktorimenetelmässä.
IVisualHost.applyJsonFilter(filter, "general", "filter", FilterAction.merge);
Lisäsuodattimen ohjelmointirajapinta
Lisäsuodattimen ohjelmointirajapinta mahdollistaa monimutkaiset visualisointien väliset arvopisteiden valinta- ja suodatuskyselyt, jotka perustuvat useisiin ehtoihin, kuten LessThan, Contains, Is ja IsBlank.
Tämä suodatin otettiin käyttöön visualisointien ohjelmointirajapinnan versiossa 1.7.0.
Perus-ohjelmointirajapintaan verrattuna lisäsuodattimen ohjelmointirajapinnassa:
target
edellyttää sekä -nimeä että -column
table
nimeä (perus-ohjelmointirajapinnassa juuri olicolumn
).- Operaattorit ovat And ja Or (toisin kuin In).
- Suodatin käyttää käyttöliittymässä ehtoja (pienempi kuin, suurempi kuin jne.) liittymän arvojen sijaan:
interface IAdvancedFilterCondition {
value: (string | number | boolean);
operator: AdvancedFilterConditionOperators;
}
Parametrin operator
ehto-operaattorit ovat: None, LessThan, LessThanOrEqual, GreaterThan, GreaterThanOrEqual, Contains, DoesNotContain, StartsWith, DoesNotStartWith, Is, IsNot, IsBlank ja "IsNotBlank"'
let categories: DataViewCategoricalColumn = this.dataView.categorical.categories[0];
let target: IFilterColumnTarget = {
table: categories.source.queryName.substr(0, categories.source.queryName.indexOf('.')), // table
column: categories.source.displayName // col1
};
let conditions: IAdvancedFilterCondition[] = [];
conditions.push({
operator: "LessThan",
value: 0
});
let filter: IAdvancedFilter = new window['powerbi-models'].AdvancedFilter(target, "And", conditions);
// invoke the filter
visualHost.applyJsonFilter(filter, "general", "filter", FilterAction.merge);
Vastaava SQL on:
SELECT * FROM table WHERE col1 < 0;
Jos haluat nähdä lisäsuodattimen ohjelmointirajapinnan koko mallikoodin, siirry Sampleslicer-visualisointisäilöön.
Monikkosuodattimen ohjelmointirajapinta (monisarakesuodatin)
Monikkosuodattimen ohjelmointirajapinta otettiin käyttöön visualisointien ohjelmointirajapinnassa 2.3.0. Se muistuttaa perussuodattimen ohjelmointirajapintaa, mutta sen avulla voit määrittää useiden sarakkeiden ja taulukoiden ehdot.
Suodatinliittymä näkyy seuraavassa koodissa:
interface ITupleFilter extends IFilter {
$schema: string;
filterType: FilterType;
operator: TupleFilterOperators;
target: ITupleFilterTarget;
values: TupleValueType[];
}
Missä
target
on sarakematriisi, joissa on taulukon nimet:declare type ITupleFilterTarget = IFilterTarget[];
Suodatin voi käsitellä eri taulukoista peräisin olevia sarakkeita.
$schema
on https://powerbi.com/product/schema#tuple.filterType
on FilterType.Tuple.operator
sallii käytön vain In-operaattorissa.values
on arvomonikon matriisi. Jokainen monikko edustaa yhtä sallittua kohdesarakearvojen yhdistelmää.
declare type TupleValueType = ITupleElementValue[];
interface ITupleElementValue {
value: PrimitiveValueType
}
Täydellinen esimerkki:
let target: ITupleFilterTarget = [
{
table: "DataTable",
column: "Team"
},
{
table: "DataTable",
column: "Value"
}
];
let values = [
[
// the first column combination value (or the column tuple/vector value) that the filter will pass through
{
value: "Team1" // the value for the `Team` column of the `DataTable` table
},
{
value: 5 // the value for the `Value` column of the `DataTable` table
}
],
[
// the second column combination value (or the column tuple/vector value) that the filter will pass through
{
value: "Team2" // the value for `Team` column of `DataTable` table
},
{
value: 6 // the value for `Value` column of `DataTable` table
}
]
];
let filter: ITupleFilter = {
$schema: "https://powerbi.com/product/schema#tuple",
filterType: FilterType.Tuple,
operator: "In",
target: target,
values: values
}
// invoke the filter
visualHost.applyJsonFilter(filter, "general", "filter", FilterAction.merge);
Tärkeä
Sarakkeiden nimien ja ehtoarvojen järjestys on tärkeä.
Yllä olevaa koodia vastaava SQL on:
SELECT * FROM DataTable WHERE ( Team = "Team1" AND Value = 5 ) OR ( Team = "Team2" AND Value = 6 );
JSON-suodattimen palauttaminen tietonäkymästä
Ohjelmointirajapinnan versiosta 2.2.0 alkaen voit palauttaa JSON-suodattimen VisualUpdateOptions-kohteesta seuraavassa koodissa esitetyllä tavalla:
export interface VisualUpdateOptions extends extensibility.VisualUpdateOptions {
viewport: IViewport;
dataViews: DataView[];
type: VisualUpdateType;
viewMode?: ViewMode;
editMode?: EditMode;
operationKind?: VisualDataChangeOperationKind;
jsonFilters?: IFilter[];
}
Kun vaihdat kirjanmerkkejä, Power BI kutsuu update
visualisoinnin -menetelmää, ja visualisointi saa vastaavan filter
-objektin. Lisätietoja on artikkelissa Kirjanmerkkien tuen lisääminen Power BI -visualisointeihin.
Esimerkki JSON-suodattimesta
Seuraavassa kuvassa näkyy malli JSON-suodatinkoodista:
Tyhjennä JSON-suodatin
Voit nollata tai tyhjentää suodattimen välittämällä null
arvon suodattimen ohjelmointirajapinnalle.
// invoke the filter
visualHost.applyJsonFilter(null, "general", "filter", FilterAction.merge);
Liittyvä sisältö
Vuorovaikutteisuuden lisääminen visualisointiin Power BI -visualisointien valintojen avulla