Megjegyzés
Az oldalhoz való hozzáféréshez engedély szükséges. Megpróbálhat bejelentkezni vagy módosítani a címtárat.
Az oldalhoz való hozzáféréshez engedély szükséges. Megpróbálhatja módosítani a címtárat.
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 --saveHa az eszközök régebbi (3.x.x-nél korábbi) verzióját használja, vegye fel
powerbi-modelsa 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 aapiVersionpbiviz.json fájlban.
Az összes szűrő az interfészt IFilterhaszná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:
operatoraz In, NotIn és All értékeket tartalmazó enumerálás.valuesa 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, IVisualHostamelyet 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
targetegy éscolumnegytablené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
targettáblázatnevekkel rendelkező oszlopok tömbje:declare type ITupleFilterTarget = IFilterTarget[];A szűrő különböző táblák oszlopait képes kezelni.
$schemaaz https://powerbi.com/product/schema#tuple.filterTypea FilterType.Tuple.operatorcsak az In operátorban használható.valuesaz é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