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, tarkista apiVersionpbiviz.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

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ä, IVisualHostjoka 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ä -columntable nimeä (perus-ohjelmointirajapinnassa juuri oli column).
  • 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.

  • operatorsallii 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:

Screenshot of sample JSON filter code showing values in an array.

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);

Vuorovaikutteisuuden lisääminen visualisointiin Power BI -visualisointien valintojen avulla