A Visual Filters API Power BI-vizualizációkban
A Visual Filters API lehetővé teszi az adatok szűrését a Power BI-vizualizációkban. A szűrő API és az adatok kiválasztásának egyéb módjai közötti fő különbség az, hogy az hogyan befolyásolja a jelentés más vizualizációit. Ha szűrőt alkalmaz egy vizualizációra, csak a szűrt adatok jelennek meg minden vizualizációban, annak ellenére, hogy más vizualizációk támogatják.
A vizualizáció szűrésének engedélyezéséhez a capabilities.json fájlnak tartalmaznia kell egy filter
objektumot a general
szakaszban.
"objects": {
"general": {
"displayName": "General",
"displayNameKey": "formattingGeneral",
"properties": {
"filter": {
"type": {
"filter": true
}
}
}
}
}
Megjegyzés:
A vizualizációszűrők API-felületei a powerbi-models csomagban érhetők el. Ez a csomag a szűrőpéldányok létrehozásához is tartalmaz osztályokat.
npm install powerbi-models --save
Ha az eszközök régebbi (3.x.x-nél korábbi) verzióját használja, vegye fel
powerbi-models
a vizualizációk csomagba. További információt a Speciális szűrő API hozzáadása az egyéni vizualizációhoz című rövid útmutatóban talál. Ha meg szeretné tudni, hogy melyik verziót használja, ellenőrizze aapiVersion
pbiviz.json fájlban.
Az összes szűrő az interfészt IFilter
használja, ahogy az a következő kódban is látható:
export interface IFilter {
$schema: string;
target: IFilterTarget;
}
Hol target
található egy táblaoszlop az adatforrásban?
Három szűrő API létezik:
Az Alapszintű szűrő API
Az alapszintű szűrőfelület a következő kódban jelenik meg:
export interface IBasicFilter extends IFilter {
operator: BasicFilterOperators;
values: (string | number | boolean)[];
}
Ahol:
operator
az In, NotIn és All értékeket tartalmazó enumerálás.values
a feltétel értékei.
Példa alapszintű szűrőre
Az alábbi példa az összes olyan sort adja vissza, ahol col1
az érték 1, 2 vagy 3.
let basicFilter = {
target: {
column: "Col1"
},
operator: "In",
values: [1,2,3]
}
A fenti példa SQL-megfelelője a következő:
SELECT * FROM table WHERE col1 IN ( 1 , 2 , 3 )
Szűrő létrehozásához használhatja a BasicFilter osztályt a következőben powerbi-models
: .
Ha az eszköz régebbi verzióját használja, a következő kódban látható módon le kell szereznie egy modellpéldányt az ablakobjektumban window['powerbi-models']
:
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);
A vizualizáció meghívja a szűrőt úgy, hogy meghívja a applyJsonFilter()
metódust a gazdafelületen, IVisualHost
amelyet a vizualizáció a konstruktor metódusban biztosít.
IVisualHost.applyJsonFilter(filter, "general", "filter", FilterAction.merge);
Az Advanced Filter API
Az Advanced Filter API összetett, több feltételen alapuló adatpont-kiválasztást és szűrést tesz lehetővé, például LessThan, Contains, IsBlank stb.).
Ez a szűrő a Visuals API 1.7.0-s verziójában lett bevezetve.
Az Alapszintű API-val szemben az Advanced Filter API-ban:
- Ehhez
target
egy éscolumn
egytable
név is szükséges (az Egyszerű API-nak most voltcolumn
). - Az operátorok and and or (szemben az Invel).
- A szűrő a felülettel rendelkező értékek helyett feltételeket használ (kisebb, nagyobb, mint stb.):
interface IAdvancedFilterCondition {
value: (string | number | boolean);
operator: AdvancedFilterConditionOperators;
}
A paraméter feltételes operátorai a operator
következők: None, LessThan, LessThanOrEqual, GreaterThan, GreaterThanOrEqual, Contains, DoesNotContain, StartsWith, DoesNotStartWith, Is, IsNot, IsBlank és "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);
Az SQL-ekvivalens a következő:
SELECT * FROM table WHERE col1 < 0;
Az Advanced Filter API használatához szükséges teljes mintakódot a Sampleslicer vizualizációs adattárban keresheti meg.
A Tuple Filter API (többoszlopos szűrő)
A Tuple Filter API a Visuals API 2.3.0-s kiadásában jelent meg. Hasonló az Alapszintű szűrő API-hoz, de lehetővé teszi több oszlop és tábla feltételeinek meghatározását.
A szűrőfelület a következő kódban jelenik meg:
interface ITupleFilter extends IFilter {
$schema: string;
filterType: FilterType;
operator: TupleFilterOperators;
target: ITupleFilterTarget;
values: TupleValueType[];
}
Ahol
target
táblázatnevekkel rendelkező oszlopok tömbje:declare type ITupleFilterTarget = IFilterTarget[];
A szűrő különböző táblák oszlopait képes kezelni.
$schema
az https://powerbi.com/product/schema#tuple.filterType
a FilterType.Tuple.operator
csak az In operátorban használható.values
az érték-skálák tömbje. Minden rekord a céloszlop értékeinek egy engedélyezett kombinációját jelöli.
declare type TupleValueType = ITupleElementValue[];
interface ITupleElementValue {
value: PrimitiveValueType
}
Teljes példa:
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);
Fontos
Az oszlopnevek és a feltételértékek sorrendje fontos.
A fenti kód SQL-megfelelője a következő:
SELECT * FROM DataTable WHERE ( Team = "Team1" AND Value = 5 ) OR ( Team = "Team2" AND Value = 6 );
A JSON-szűrő visszaállítása az adatnézetből
Az API 2.2.0-s verziójától kezdve visszaállíthatja a JSON-szűrőt a VisualUpdateOptions szolgáltatásból, ahogyan az az alábbi kódban látható:
export interface VisualUpdateOptions extends extensibility.VisualUpdateOptions {
viewport: IViewport;
dataViews: DataView[];
type: VisualUpdateType;
viewMode?: ViewMode;
editMode?: EditMode;
operationKind?: VisualDataChangeOperationKind;
jsonFilters?: IFilter[];
}
Könyvjelzők váltásakor a Power BI meghívja a update
vizualizáció metódusát, és a vizualizáció egy megfelelő filter
objektumot kap. További információ: Könyvjelző-támogatás hozzáadása Power BI-vizualizációkhoz.
JSON-mintaszűrő
Az alábbi képen néhány JSON-szűrőkód látható:
A JSON-szűrő törlése
A szűrő alaphelyzetbe állításához vagy törléséhez adjon át egy null
értéket a szűrő API-nak.
// invoke the filter
visualHost.applyJsonFilter(null, "general", "filter", FilterAction.merge);
Kapcsolódó tartalom
A Power BI-vizualizációk kijelöléseinek használata a vizualizációk interaktivitásának hozzáadásához