Rapor filtrelerini denetleme
Power BI raporu eklediğinizde, yükleme aşamasında filtreleri otomatik olarak uygulayabilir veya rapor yüklendikten sonra filtreleri dinamik olarak değiştirebilirsiniz. Örneğin, kendi özel filtre bölmenizi oluşturabilir ve kullanıcıya özgü içgörüleri göstermek için bu filtreleri raporlara otomatik olarak uygulayabilirsiniz. Ayrıca, kullanıcının eklenmiş rapora filtre uygulamasını sağlayan bir düğme de oluşturabilirsiniz.
Aşağıdaki filtre türleri desteklenir:
- Temel -
IBasicFilter
- Gelişmiş -
IAdvancedFilter
- İlk N -
ITopNFilter
- Göreli tarih -
IRelativeDateFilter
- Göreli saat -
IRelativeTimeFilter
Filtre nesnesi öznitelikleri
Tüm filtre türleri arabirimi devralır IFilter
. Aşağıda listelenen öznitelikler tüm filtre türleriyle ilgilidir.
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 -
http://powerbi.com/product/schema#basic
- Gelişmiş -
http://powerbi.com/product/schema#advanced
- Göreli tarih -
http://powerbi.com/product/schema#relativeDate
- Göreli saat -
http://powerbi.com/product/schema#relativeTime
- İlk N -
http://powerbi.com/product/schema#topN
Görüntü ayarları
displaySettings
özniteliği, filtrenin filtreler bölmesinde görüntülenme biçimini 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ğeri görünüm modunda değiştirilemez. Filtreyi kilitlemek için true olarak ayarlayın.isHiddenInViewMode
- Rapora gizli bir filtre uygulanır, ancak görünüm modunda 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 filtrelenen veri alanının adı) görüntülenir.
Filtre türü
filterType
özniteliği filtrenin türünü tanımlar. Modeller 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. Üzerinde işlem yapmak istediğiniz veri alanını seçmek için hedefleri kullanma.
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 filtrenin bir veya daha fazla değer içeren tek bir işleci 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 dizisi, 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. True olarak ayarlanırsa, yalnızca tek bir değer seçilebilir.
Örnek:
const basicFilter = {
$schema: "http://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 dizisi, her koşulun biroperator
value
ve değeri 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";
Örnek:
const advancedFilter = {
$schema: "http://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şulla bir AdvancedFilter
oluşturuyorsanız, olarak ayarlayın logicalOperator
"And"
. 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ç olur "And"
. Bu, çağrısı getFilters
yaparken döndürülen filtrelerin kullanılarak setFilters
ayarlananlarla eşleşmesini sağlar.
Üst N filtresi
İlk N filtresi tek bir işleç, görüntülenecek öğe miktarı için öğe sayacı ve hedefe göre sıralama içerir.
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. Üzerinde işlem yapmak istediğiniz veri alanını seçmek için hedefleri kullanma.
Örnek:
const topNFilter = {
$schema: "http://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 filtresinin her ikisi de arabirimden devralırIRelativeDateTimeFilter
:
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 birimi 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 ✔ ✖ Dakika ✖ ✔ 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 filtresi tarafından desteklenir.
Göreli tarih filtresi örneği:
const relativeDateFilter = {
$schema: "http://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: "http://powerbi.com/product/schema#relativeTime",
target: {
table: "Sales",
column: "OrderDate"
},
operator: models.RelativeDateOperators.InLast,
timeUnitsCount: 12,
timeUnitType: models.RelativeDateFilterTimeUnit.Hours,
filterType: models.FilterType.RelativeTime
};
Filtreler API'leri
Bir rapora uygulanan filtreleri almak ve güncelleştirmek için aşağıdaki yöntemleri kullanın:
- Filtre alma -
getFilters
- Filtreleri-
updateFilters
güncelleştirin.
Filtre alma
Aşağıdaki nesnelerden birinin tüm filtrelerini almak için kullanın getFilters
:
- 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 kullanın updateFilters
. bir işlem ve isteğe bağlı bir filtreler dizisi alır.
updateFilters(operation: models.FiltersOperations, filters?: models.IFilter[]): Promise<IHttpPostMessageResponse<void>>
Filtreler işlemi
Çağrısı updateFilters
yaparken, önceden formlamak istediğiniz filtre 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 ekler (mevcut filtrelere ek olarak).Replace
- Mevcut bir filtreyi belirli bir filtreyle değiştirir, ancak her iki filtre de aynı veri alanına uygulanırsa. Mevcut bir filtrenin yerini almayan belirli bir filtre varsa, bu filtre eklenir.
Not
API'yi ile RemoveAll
çağırırken filtreler bağımsız değişkeni olmalıdır undefined
. 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 bir düzeydeki filtreleri güncelleştirmek 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.
- Görsel - Filtreler belirli bir görsele uygulanır.
Not
Filtre türünü yalnızca görsel düzeyi filtreleri destekler ITopNFilter
.
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. Örnek:
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 filtrelerin yanı sıra 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);
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.