Rapor filtrelerini denetleme
Power BI raporu eklerken, yükleme aşamasında otomatik olarak
Aşağıdaki filtre türleri desteklenir:
- temel
- gelişmiş
- İlk N
-
Göreli tarih -
IRelativeDateFilter
-
Göreli zaman -
IRelativeTimeFilter
Filtre nesnesi öznitelikleri
Tüm filtre türleri IFilter
arabirimini devralır. Aşağıda listelenen öznitelikler tüm filtre türleri için geçerlidir.
interface IFilter {
$schema: string;
target: IFilterGeneralTarget;
filterType: FilterType;
displaySettings?: IFilterDisplaySettings;
}
Şema
$schema
özniteliği filtre türünü tanımlar. Her filtre türü için bir tane olan beş şema vardır:
- temel
- gelişmiş
-
Göreli tarih -
https://powerbi.com/product/schema#relativeDate
-
Göreli zaman -
https://powerbi.com/product/schema#relativeTime
- İlk N
Görüntü ayarları
displaySettings
özniteliği, filtrenin filtreler bölmesinde görüntülenme şeklini tanımlar.
interface IFilterDisplaySettings {
isLockedInViewMode?: boolean;
isHiddenInViewMode?: boolean;
displayName?: string;
}
isLockedInViewMode
- Filtre bölmesinde kilitli bir filtre uygulanır ve görüntülenir. filtre değerigörünüm modunda değiştirilemez. Filtreyi kilitlemek için true olarak ayarlayın. - Rapora gizli bir filtre uygulanır, ancak görünüm modundaki filtre bölmesinde görüntülenmez. Filtreyi gizlemek için true olarak ayarlayın. displayName
- Filtre bölmesinde kişiselleştirilmiş bir adla bir filtre görüntülenebilir. Filtreniz için kişiselleştirilmiş bir ad ayarlamak için bu özniteliği kullanın. Değer tanımsız veya null olduğunda, filtrenin varsayılan adı (genellikle filtrelenmiş veri alanının adı) görüntülenir.
Filtre türü
filterType
özniteliği filtrenin türünü tanımlar. Model kitaplığında tanımlanan aşağıdaki numaralandırmayı kullanın:
enum FilterType {
Advanced = 0,
Basic = 1,
Unknown = 2,
IncludeExclude = 3,
RelativeDate = 4,
TopN = 5,
Tuple = 6,
RelativeTime = 7,
}
Hedef
target
özniteliği filtrenin hedefini tanımlar. Daha fazla bilgi için bkz. Hedefleri kullanaraküzerinde hangi veri alanının kullanılacağını seçme.
Filtre türüne göre ek öznitelikler
Her filtre türünün farklı öznitelik kümesine sahip kendi arabirimi vardır. Filtre arabirimleri, powerbi-models kitaplığının bir parçasıdır.
Temel filtre
Temel filtre bir veya daha fazla değer içeren tek bir işleç vardır.
interface IBasicFilter extends IFilter {
operator: BasicFilterOperators;
values: (string | number | boolean)[];
requireSingleSelection?: boolean;
}
operator
- Temel filtre için işleç aşağıdakilerden biri olabilir:type BasicFilterOperators = "In" | "NotIn" | "All"
values
- Filtre için bir değer dizisidir ve tüm değerlerin aynı türde olması gerekir.requireSingleSelection
- Filtrede birden çok değer seçmenin mümkün olup olmadığını tanımlar. Trueolarak ayarlanırsa, yalnızca tek bir değer seçilebilir.
Mesela:
const basicFilter = {
$schema: "https://powerbi.com/product/schema#basic",
target: {
table: "Store",
column: "Count"
},
operator: "In",
values: [1, 2, 3, 4],
filterType: models.FilterType.BasicFilter,
requireSingleSelection: true
}
Gelişmiş filtre
Gelişmiş filtre tek bir mantıksal işleç ve kendi işlecine ve değerine sahip bir veya iki koşula sahiptir.
interface IAdvancedFilter extends IFilter {
logicalOperator: AdvancedFilterLogicalOperators;
conditions: IAdvancedFilterCondition[];
}
logicalOperator
- Mantıksal işleç aşağıdakilerden biri olabilir:type AdvancedFilterLogicalOperators = "And" | "Or";
conditions
- Gelişmiş filtre için bir koşul dizisidir ve her koşulun biroperator
ve birvalue
vardır.interface IAdvancedFilterCondition { value?: (string | number | boolean | Date); operator: AdvancedFilterConditionOperators; }
Bir koşul için kullanılabilir işleçler şunlardır:
type AdvancedFilterConditionOperators = "None" | "LessThan" | "LessThanOrEqual" | "GreaterThan" | "GreaterThanOrEqual" | "Contains" | "DoesNotContain" | "StartsWith" | "DoesNotStartWith" | "Is" | "IsNot" | "IsBlank" | "IsNotBlank";
Mesela:
const advancedFilter = {
$schema: "https://powerbi.com/product/schema#advanced",
target: {
table: "Store",
column: "Name"
},
logicalOperator: "Or",
conditions: [
{
operator: "Contains",
value: "Wash"
},
{
operator: "Contains",
value: "Park"
}
],
filterType: models.FilterType.AdvancedFilter
}
Not
Yalnızca tek bir koşula sahip bir AdvancedFilter
oluşturuyorsanız, logicalOperator
"And"
olarak ayarlayın. Mantıksal işleç Power BI tarafından ayrıştırılırken yoksayılır çünkü tek bir koşul vardır ve filtre seri hale getirildiğinde varsayılan mantıksal işleç "And"
olur. Bu, getFilters
çağrılırken döndürülen filtrelerin setFilters
kullanılarak ayarlanan filtrelerle eşleşmesini sağlar.
İlk N filtresi
İlk N filtre tek bir işleç, görüntülenecek öğe miktarı için öğe sayacı ve hedefe göre sıralama vardır.
interface ITopNFilter extends IFilter {
operator: TopNFilterOperators;
itemCount: number;
orderBy: ITarget;
}
operator
- İlk N filtresi işleci aşağıdakilerden biri olabilir:type TopNFilterOperators = "Top" | "Bottom";
itemCount
- Görüntülenecek öğe miktarı.orderBy
- Sıralama ölçütü olarak hedef veri alanı. Daha fazla bilgi için bkz. Hedefleri kullanaraküzerinde hangi veri alanının kullanılacağını seçme.
Mesela:
const topNFilter = {
$schema: "https://powerbi.com/product/schema#topN",
target: {
table: "Store",
column: "name"
},
operator: "Top",
itemCount: 5,
orderBy: {
table: "Product",
measure: "Count of Product"
},
filterType: models.FilterType.TopN
};
Göreli tarih ve göreli saat filtreleri
göreli tarih filtresi ve göreli zaman filtresi her ikisi de IRelativeDateTimeFilter
arabiriminden devralır:
interface IRelativeDateTimeFilter extends IFilter {
operator: RelativeDateOperators;
timeUnitsCount: number;
timeUnitType: RelativeDateFilterTimeUnit;
}
operator
- Göreli tarih ve saat filtrelerinin işleci aşağıdakilerden biri olabilir:enum RelativeDateOperators { InLast = 0, InThis = 1, InNext = 2, }
timeUnitsCount
- Zaman birimlerinin miktarı.timeUnitType
- Filtrenin kullandığı zaman birimini tanımlar.enum RelativeDateFilterTimeUnit { Days = 0, Weeks = 1, CalendarWeeks = 2, Months = 3, CalendarMonths = 4, Years = 5, CalendarYears = 6, Minutes = 7, Hours = 8 }
Aşağıdaki tabloda göreli tarih ve göreli saat filtreleri tarafından desteklenen birim saatleri listelenmektedir.
Zaman birimi Göreli tarih Göreli saat Gün ✔ ✖ Hafta ✔ ✖ CalendarWeeks ✔ ✖ Ay ✔ ✖ CalendarMonths ✔ ✖ Yıl ✔ ✖ TakvimYears ✔ ✖ Tutanak ✖ ✔ Saat ✖ ✔ includeToday
- Geçerli günün filtreye eklenip eklenmeyeceğini belirten bir boole değeri kabul eder.interface IRelativeDateFilter extends IRelativeDateTimeFilter { includeToday: boolean; }
Not
includeToday
yalnızca göreli tarih filtresitarafından desteklenir.
Göreli tarih filtresi örneği:
const relativeDateFilter = {
$schema: "https://powerbi.com/product/schema#relativeDate",
target: {
table: "Sales",
column: "OrderDate"
},
operator: models.RelativeDateOperators.InLast,
timeUnitsCount: 30,
timeUnitType: RelativeDateFilterTimeUnit.Days,
includeToday: true,
filterType: models.FilterType.RelativeDate
};
Göreli zaman filtresi örneği:
const relativeTimeFilter = {
$schema: "https://powerbi.com/product/schema#relativeTime",
target: {
table: "Sales",
column: "OrderDate"
},
operator: models.RelativeDateOperators.InLast,
timeUnitsCount: 12,
timeUnitType: models.RelativeDateFilterTimeUnit.Hours,
filterType: models.FilterType.RelativeTime
};
API'leri filtreler
Bir rapora uygulanan filtreleri almak ve güncelleştirmek için aşağıdaki yöntemleri kullanın:
-
Filtre alma -
getFilters
güncelleştirme filtrelerini .
Filtreleri alma
Aşağıdaki nesnelerden birinin tüm filtrelerini almak için getFilters
kullanın:
- Rapor
- Sayfa
- Görsel
getFilters(): Promise<IFilter[]>
Filtreleri güncelleştirme
Nesneye (rapor, sayfa veya görsel) filtre eklemek, değiştirmek veya kaldırmak için updateFilters
kullanın. Bir işlem ve isteğe bağlı bir filtre dizisi alır.
updateFilters(operation: models.FiltersOperations, filters?: models.IFilter[]): Promise<IHttpPostMessageResponse<void>>
Filtreler işlemi
updateFilters
çağırırken, önceden filtreleme işlemini geçirmeniz gerekir. Kullanılabilir işlemler şunlardır:
-
RemoveAll
- Filtre düzeyindeki tüm filtreleri kaldırır. -
ReplaceAll
- Filtre düzeyindeki tüm mevcut filtreleri verilen filtrelerle değiştirir. -
Add
- Verilen filtreleri filtre düzeyine (mevcut filtrelere ek olarak) ekler. -
Replace
- Var olan bir filtreyi belirli bir filtreyle değiştirir, ancak her iki filtre de aynı veri alanına uygulanırsa. Mevcut bir filtrenin yerini almamış belirli bir filtre varsa, bu filtre eklenir.
Not
API'yi RemoveAll
ile çağırırken filtreler bağımsız değişkeni undefined
olmalıdır. Diğer işlemler için tanımlanmalıdır.
Filtreler düzeyleri
Filtreleri güncelleştirme ve alma işlemi üç düzeyde gerçekleştirilebilir. Farklı düzeydeki filtreler bağımsızdır ve filtrelerin bir düzeyde güncelleştirilmesi başka bir düzeyi değiştirmez. Örneğin, bir sayfa filtresi kaldırılarak rapordaki diğer sayfalardan kaldırılamaz.
Filtreler için desteklenen düzeyler şunlardır:
- rapor
- Filtreler rapordaki tüm sayfalara uygulanır. - sayfa
- Filtreler geçerli rapor sayfasına uygulanır. - Visual - Filtreler belirli bir görsele uygulanır.
Not
Yalnızca görsel düzeyi filtreleri ITopNFilter
filtre türünü destekler.
Rapor düzeyi filtreleri
Rapordaki tüm sayfalara uygulanan filtreleri almak veya güncelleştirmek için rapor nesnesinde ilgili API'yi çağırın. Mesela:
Rapor filtrelerini alma
Tüm sayfalara uygulanan filtreleri alma.
let reportFilters = await report.getFilters();
Rapor filtrelerine yeni filtreler ekleme
Tüm sayfalar için mevcut filtrelerle birlikte yeni filtreler ekleme.
await report.updateFilters(models.FiltersOperations.Add, filtersArray);
Rapor filtrelerini kaldırma
Tüm sayfalara uygulanan filtreleri kaldırın.
await report.updateFilters(models.FiltersOperations.RemoveAll);
Sayfa düzeyi filtreleri
Sayfa düzeyi filtrelerini almak veya güncelleştirmek için aşağıdakileri yapın:
- Hedef sayfa için sayfa nesnesini alın. Daha fazla bilgi için bkz.sayfaları ve görselleri alma
. - Sayfa nesnesinde ilgili API'yi çağırın.
Sayfa filtrelerini alma
Filtreleri belirli bir sayfaya uygulama.
let reportFilters = await page.getFilters();
Tüm sayfa filtrelerini değiştirme
Belirli bir sayfaya uygulanan tüm mevcut filtreleri yeni bir filtre kümesiyle değiştirme.
await page.updateFilters(models.FiltersOperations.ReplaceAll, filtersArray);
Sayfa filtrelerini kaldırma
Belirli bir sayfaya uygulanan filtreleri kaldırma.
await page.updateFilters(models.FiltersOperations.RemoveAll);
Görsel düzeyi filtreleri
Görsel düzeyi filtrelerini almak veya güncelleştirmek için aşağıdakileri yapın:
- Hedef görsel için görsel nesnesini alın. Daha fazla bilgi için bkz.sayfaları ve görselleri alma
. - Görsel nesnesinde ilgili API'yi çağırın.
Görsel filtrelerini alma
Filtreleri belirli bir görsele uygulama.
let reportFilters = await visual.getFilters();
Görsel filtreleri aynı hedefle değiştirme
Belirli bir görselin filtrelerini değiştirme. Belirli bir filtreyle aynı hedef veri alanına sahip bir filtre varsa, verilen filtreyle değiştirilir. Mevcut filtreyle eşleşmeyen filtreler eklenir.
await visual.updateFilters(models.FiltersOperations.Replace, filtersArray);
Görsel filtrelerini kaldırma
Belirli bir görsele uygulanan filtreleri kaldırma.
await visual.updateFilters(models.FiltersOperations.RemoveAll);
Dikkat edilmesi gerekenler ve sınırlamalar
Gelişmiş filtre oluştururken ikiden fazla koşul olması tanımsız davranışa neden olabilir.
IncludeExclude
veTuple
filtre türleri desteklenmez.Tanımlama grubu ve hiyerarşi filtresi hedefleri desteklenmez.
İlgili içerik
- Rapor ayarlarını yapılandırma
- rapor dilimleyicilerini
- Rapor düzenini kişiselleştirme