Power BI görsellerindeki Görsel Filtreler API'si
Görsel Filtreler API'si, Power BI görsellerindeki verileri filtrelemenize olanak tanır. Filtre API'si ile veri seçmenin diğer yolları arasındaki temel fark, rapordaki diğer görselleri nasıl etkilediğidir. Bir görsele filtre uygulandığında, diğer görsellerin vurgu desteğine rağmen tüm görsellerde yalnızca filtrelenmiş veriler görünür.
Görsel için filtrelemeyi etkinleştirmek için capabilities.json dosyası bölümünde bir filter
nesne general
içermelidir.
"objects": {
"general": {
"displayName": "General",
"displayNameKey": "formattingGeneral",
"properties": {
"filter": {
"type": {
"filter": true
}
}
}
}
}
Dekont
Görsel filtreler API arabirimleri powerbi-models paketinde kullanılabilir. Bu paket ayrıca filtre örnekleri oluşturmaya yönelik sınıflar içerir.
npm install powerbi-models --save
Araçların eski (3.x.x'ten önceki) bir sürümünü kullanıyorsanız görseller paketine ekleyin
powerbi-models
. Daha fazla bilgi için, Özel görsele Gelişmiş Filtre API'sini ekleme kısa kılavuzuna bakın. Hangi sürümü kullandığınızı öğrenmek için pbiviz.json dosyasını denetleyinapiVersion
.
Aşağıdaki kodda IFilter
gösterildiği gibi tüm filtreler arabirimini kullanır:
export interface IFilter {
$schema: string;
target: IFilterTarget;
}
Burada target
, veri kaynağındaki bir tablo sütunudur.
Üç filtre API'leri vardır:
Temel Filtre API'si
Temel filtre arabirimi aşağıdaki kodda gösterilmiştir:
export interface IBasicFilter extends IFilter {
operator: BasicFilterOperators;
values: (string | number | boolean)[];
}
Where:
operator
, In, NotIn ve All değerlerine sahip bir numaralandırmadır.values
koşulun değerleridir.
Temel filtre örneği
Aşağıdaki örnek, 1, 2 veya 3 değerine eşit olan col1
tüm satırları döndürür.
let basicFilter = {
target: {
column: "Col1"
},
operator: "In",
values: [1,2,3]
}
Yukarıdaki örneğin SQL eşdeğeri:
SELECT * FROM table WHERE col1 IN ( 1 , 2 , 3 )
Filtre oluşturmak için içindeki BasicFilter sınıfını powerbi-models
kullanabilirsiniz.
Aracın eski bir sürümünü kullanıyorsanız, aşağıdaki kodda gösterildiği gibi kullanarak window['powerbi-models']
pencere nesnesinde model örneği almanız gerekir:
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);
Görsel, IVisualHost
oluşturucu yöntemindeki applyJsonFilter()
görsele sağlanan konak arabiriminde yöntemini çağırarak filtreyi çağırır.
IVisualHost.applyJsonFilter(filter, "general", "filter", FilterAction.merge);
Gelişmiş Filtre API'si
Gelişmiş Filtre API'si, LessThan, Contains, Is, IsBlank gibi birden çok ölçüte dayalı karmaşık görseller arası veri noktası seçimi ve filtreleme sorgularını etkinleştirir.
Bu filtre, Visuals API'sinin 1.7.0 sürümünde kullanıma sunulmuştur.
Temel API'nin aksine Gelişmiş Filtre API'sinde:
- hem
target
hemtable
column
de adı gerektirir (Temel API'nin az önce sahip olduğucolumn
). - İşleçler And ve Or 'dır (in'in aksine).
- Filtre, arabirime sahip değerler yerine koşulları (küçüktür, büyüktür vb.) kullanır:
interface IAdvancedFilterCondition {
value: (string | number | boolean);
operator: AdvancedFilterConditionOperators;
}
parametresinin operator
koşul işleçleri şunlardır: None, LessThan, LessThanOrEqual, GreaterThan, GreaterThanOrEqual, Contains, DoesNotContain, StartsWith, DoesNotStartWith, Is, IsNot, IsBlank ve "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);
SQL eşdeğeri:
SELECT * FROM table WHERE col1 < 0;
Gelişmiş Filtre API'sini kullanmaya yönelik örnek kodun tamamı için Sampleslicer görsel deposuna gidin.
Tanımlama Grubu Filtresi API'si (çok sütunlu filtre)
Tanımlama Grubu Filtresi API'si, Visuals API 2.3.0'da kullanıma sunulmuştur. Temel Filtre API'sine benzer, ancak birkaç sütun ve tablo için koşullar tanımlamanıza olanak tanır.
Filtre arabirimi aşağıdaki kodda gösterilir:
interface ITupleFilter extends IFilter {
$schema: string;
filterType: FilterType;
operator: TupleFilterOperators;
target: ITupleFilterTarget;
values: TupleValueType[];
}
Konumu
target
tablo adlarını içeren bir sütun dizisidir:declare type ITupleFilterTarget = IFilterTarget[];
Filtre, çeşitli tablolardaki sütunları adresleyebilir.
filterType
FilterType.Tuple şeklindedir.operator
yalnızca In işlecinde kullanıma izin verir.values
bir değer tanımlama grubu dizisidir. Her tanımlama grubu, hedef sütun değerlerinin izin verilen bir birleşimini temsil eder.
declare type TupleValueType = ITupleElementValue[];
interface ITupleElementValue {
value: PrimitiveValueType
}
Tam örnek:
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);
Önemli
Sütun adlarının ve koşul değerlerinin sırası önemlidir.
Yukarıdaki kodun SQL eşdeğeri:
SELECT * FROM DataTable WHERE ( Team = "Team1" AND Value = 5 ) OR ( Team = "Team2" AND Value = 6 );
JSON filtresini veri görünümünden geri yükleme
API 2.2.0 sürümünden başlayarak, aşağıdaki kodda gösterildiği gibi VisualUpdateOptions'tan JSON filtresini geri yükleyebilirsiniz:
export interface VisualUpdateOptions extends extensibility.VisualUpdateOptions {
viewport: IViewport;
dataViews: DataView[];
type: VisualUpdateType;
viewMode?: ViewMode;
editMode?: EditMode;
operationKind?: VisualDataChangeOperationKind;
jsonFilters?: IFilter[];
}
Yer işaretlerini değiştirdiğinizde Power BI görselin update
yöntemini çağırır ve görsele karşılık gelen filter
bir nesne gelir. Daha fazla bilgi için bkz . Power BI görselleri için yer işareti desteği ekleme.
Örnek JSON filtresi
Aşağıdaki görüntüde bazı örnek JSON filtre kodu gösterilmiştir:
JSON filtresini temizleme
Filtreyi sıfırlamak veya temizlemek için filtre API'sine bir null
değer geçirin.
// invoke the filter
visualHost.applyJsonFilter(null, "general", "filter", FilterAction.merge);
İlgili içerik
Görsele etkileşim eklemek için Power BI görsel seçimlerini kullanma