Rapor dilimleyicilerini denetleme
Dilimleyici API'lerini kullanarak Power BI dilimleyicisinin durumunu alabilir ve ayarlayabilirsiniz. Ayrıca, bir raporu yüklerken dilimleyici durumunu değiştirmek için yük yapılandırmasını kullanabilirsiniz.
İki tür dilimleyici görseli vardır:
Kullanıma hazır - Kullanıma hazır Power BI görselleri için dilimleyiciler. Kullanıma hazır dilimleyiciler, Power BI (Desktop ve hizmet) ile birlikte gelen tüm Power BI görsellerini destekler.
AppSource'tan ve dosyalardan Power BI görselleri - AppSource'tan veya .pbiviz dosyası olarak kullanılabilen üçüncü taraf Power BI görselleri için dilimleyiciler. AppSource'taki Power BI görselleri ve dosyaları için dilimleyiciler veya AppSource'tan veya dosyalardan kısa görseller, geliştiriciler tarafından oluşturulan Power BI görsellerine yönelik dilimleyicilerdir.
Dilimleyici nesnesi
Dört dilimleyici türü vardır:
- Kategorik dilimleyiciler
- Aralık dilimleyicileri
- Göreli tarih dilimleyicileri
- Hiyerarşi dilimleyicileri
Kategorik dilimleyici
Kategorik dilimleyiciler aşağıdaki ekranları destekler:
- Liste
- Açılan menü
- Değer kartları
Raporu uygun şekilde filtrelemek için bu listelerden tek veya birden çok öğe seçebilirsiniz.
Bu tür dilimleyicilerin seçimini değiştirmek için bir IBasicFilter
nesne oluşturmanız gerekir. Temel filtre oluşturma hakkında daha fazla bilgi için bkz. Temel filtre.
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
};
await visual.setSlicerState({
filters: [basicFilter]
});
Dilimleyici hedefi bir hiyerarşiyse, bir IFilterHierarchyTarget
hedef sağlayın. Daha fazla bilgi için bkz. Üzerinde işlem yapmak istediğiniz veri alanını seçmek için hedefleri kullanma.
const basicFilter = {
$schema: "http://powerbi.com/product/schema#basic",
target: {
table: "Store",
hierarchy: "Country",
hierarchyLevel: "Code"
},
operator: "In",
values: [456, 943],
filterType: models.FilterType.BasicFilter
};
await visual.setSlicerState({
filters: [basicFilter]
});
Aralık dilimleyici
Aralık dilimleyicileri aşağıdakiler gibi koşulları destekler:
- Zaman aralığı
- Önce
- Sonra
Aralık dilimleyicilerinin seçimini değiştirmek için bir IAdvancedFilter
nesne oluşturun. Daha fazla bilgi için bkz . Gelişmiş filtre.
const advancedFilter = {
$schema: "http://powerbi.com/product/schema#advanced",
target: {
table: "Store",
column: "Number"
},
logicalOperator: "And",
conditions: [
{
operator: "GreaterThanOrEqual",
value: 30
},
{
operator: "LessThan",
value: 40
}
],
filterType: models.FilterType.AdvancedFilter
};
await visual.setSlicerState({
filters: [advancedFilter]
});
Göreli tarih dilimleyici
Göreli tarih dilimleyicileri aşağıdakiler gibi koşulları destekler:
- Geçen hafta
- Son beş yıl
Göreli tarih dilimleyicilerinin seçimini değiştirmek için bir IRelativeDateFilter
nesne oluşturun. Daha fazla bilgi için bkz . Göreli tarih ve göreli saat filtresi nesneleri.
const relativeDateFilter = {
$schema: "http://powerbi.com/product/schema#relativeDate",
target: {
table: "Sales",
column: "OrderDate"
},
operator: models.RelativeDateOperators.InLast,
timeUnitsCount: 30,
timeUnitType: models.RelativeDateFilterTimeUnit.Days,
includeToday: true,
filterType: models.FilterType.RelativeDate
};
await visual.setSlicerState({
filters: [relativeDateFilter]
});
Göreli zaman dilimleyicisi
Göreli zaman dilimleyicileri aşağıdakiler gibi koşulları destekler:
- Son beş dakika
- Bu saat
Göreli zaman dilimleyicilerinin seçimini değiştirmek için bir IRelativeTimeFilter
nesne oluşturun. Daha fazla bilgi için bkz . Göreli tarih ve göreli saat filtreleri.
const relativeTimeFilter = {
$schema: "http://powerbi.com/product/schema#relativeTime",
target: {
table: "Sales",
column: "OrderDate"
},
operator: models.RelativeDateOperators.InLast,
timeUnitsCount: 5,
timeUnitType: models.RelativeDateFilterTimeUnit.Minutes,
filterType: models.FilterType.RelativeTime
};
await visual.setSlicerState({
filters: [relativeTimeFilter]
});
Hiyerarşi dilimleyicisi
Hiyerarşi dilimleyicileri , birden çok ilgili alandan filtrelemenizi sağlar.
Hiyerarşi dilimleyicisi SDK 2.21 sürümünde desteklenir. setSlicerState API'siyle hiyerarşi dilimleyicisinde seçimleri ayarlayın veya getSlicerState API'siyle geçerli hiyerarşi seçimlerini alın.
Hiyerarşi dilimleyicilerine alan ekleme hakkında bilgi edinin.
Hiyerarşi filtresi
dilimleyici IHierarchyFilter
hiyerarşisini açıklar. Bu filtreyle getSlicerState
ve setSlicerState
yöntemlerini kullanın.
interface IHierarchyFilter extends IFilter {
target: (IFilterTarget | IFilterKeyTarget)[];
hierarchyData: IHierarchyFilterNode[];
}
hierarchyData
- hiyerarşi ağacında herIHierarchyFilterNode
birinin tek bir değer seçimini temsil ettiği seçili ve seçilmemiş öğeler.interface IHierarchyFilterNode { value?: PrimitiveValueType; keyValues?: PrimitiveValueType[]; children?: IHierarchyFilterNode[]; operator?: HierarchyFilterNodeOperators; }
- Ya da
value
keyValues
ayarlanmalıdır children
– Geçerli seçimle ilgili düğüm alt öğelerinin listesioperator
– Ağaçtaki tek nesnelerin işleci. işleci aşağıdakilerden biri olabilir:
type HierarchyFilterNodeOperators = "Selected" | "NotSelected" | "Inherited";
Selected
– değer açıkça seçilir.NotSelected
– değer açıkça seçilmedi.Inherited
– değer seçimi hiyerarşideki üst değere göre veya kök değerse varsayılan değerdir.
operator
isteğe bağlıdır. Hiçbir işleç ayarlı değilse, varsayılan değer olurInherited
.- Ya da
Hiyerarşi dilimleyici örnekleri
Aşağıdaki örneklerde, API'yi hiyerarşi dilimleyicileriyle kullanmaya yönelik setSlicerState
farklı senaryolar açıklanmaktadır.
Farklı düzeylerdeki değerleri seçin. Örneğin, 2013'te 'Çyr 1' ve 'Çyr 2' ve 2014'te 'Çyr 1' ve 'Çyr 2' seçeneğini belirleyin.
const filter = { "$schema": http://powerbi.com/product/schema#hierarchy, "target": [ { "table": "Dates", "hierarchy": "Date Hierarchy", "hierarchyLevel": "Year" }, { "table": "Dates", "hierarchy": "Date Hierarchy", "hierarchyLevel": "Quarter" } ], "filterType": 9, "hierarchyData": [ { "operator": "Inherited", "value": 2013, "children": [ { "operator": "Selected", "value": "Qtr 1" }, { "operator": "Selected", "value": "Qtr 2" } ] }, { "operator": "Inherited", "value": 2014, "children": [ { "operator": "Selected", "value": "Qtr 1" }, { "operator": "Selected", "value": "Qtr 2" } ] } ] }; await slicer.setSlicerState({ filters: [filter] });
Özel durumlar içeren farklı düzeylerdeki değerleri seçin. Örneğin, '1. Üç Aylık Çeyrek' olmadan 2014'i seçin.
const filter = { "$schema": http://powerbi.com/product/schema#hierarchy, "target": [ { "table": "Dates", "hierarchy": "Date Hierarchy", "hierarchyLevel": "Year" }, { "table": "Dates", "hierarchy": "Date Hierarchy", "hierarchyLevel": "Quarter" } ], "filterType": 9, "hierarchyData": [ { "operator": "Selected", "value": 2014, "children": [ { "operator": "NotSelected", "value": "Qtr 1" } ] } ] }; await slicer.setSlicerState({ filters: [filter] });
Belirli değerler dışında her şeyi seçmek için işleçle
NotSelected
başlayın. Örneğin, 2008 ve 2009'un '1. Üç Aylık Bölümü' dışında her şeyi seçin.const filter = { "$schema": http://powerbi.com/product/schema#hierarchy, "target": [ { "table": "Dates", "column": "Year" }, { "table": "Dates", "column": "Quarter" } ], "filterType": 9, "hierarchyData": [ { "operator": "NotSelected", "value": 2009 }, { "operator": "Inherited", "value": 2008, "children": [ { "operator": "NotSelected", "value": "Q1" } ] } ] } await slicer.setSlicerState({ filters: [filter] });
Dilimleyici API'leri
Türü olan görseller slicer
için aşağıdaki yöntemleri kullanabilirsiniz:
- Dilimleyici durumunu alma -
getSlicerState
- Dilimleyici durumunu ayarlama -
setSlicerState
Not
Rapora kaydedilen dilimleyicileri eşitleme yapılandırması, dilimleyici API'leri tarafından tanınır. Bu, API kullanarak bir dilimleyici ayarlarsanız, aynı eşitleme grubundaki tüm dilimleyicilerin etkileneceği anlamına gelir.
Dilimleyici durumunu alma
Dilimleyici durumunu almak için dilimleyici görsel örneğini bulmanız ve çağrısı getSlicerState
yapmanız gerekir. Sonuç türündedir ISlicerState
.
Varsayılan olarak, dilimleyiciye filtre uygulanmaz. Böyle durumlarda boş getSlicerState
bir filtre dizisiyle geri döner ISlicerState
.
getSlicerState
Hem kullanıma hazır hem de AppSource'tan veya dosya dilimleyicilerinden gelen görseller için çalışır.
let state = await visual.getSlicerState();
Dilimleyici durumunu ayarlama
Dilimleyici durumunu ayarlamak için dilimleyici görsel örneğini bulmanız, dilimleyici durumunu oluşturmanız ve oluşturduğunuz dilimleyici durumuyla çağrısı setSlicerState
yapmanız gerekir.
await visual.setSlicerState(state);
Dilimleyici durumu bir ISlicerState
nesnedir.
interface ISlicerState {
filters: ISlicerFilter[];
targets?: SlicerTarget[];
}
Dilimleyiciyi sıfırlamak için boş bir filtre dizisiyle çağrısında setSlicerState
bulunur.
AppSource'tan veya dosyalardan görseller için dilimleyici ayarlama
AppSource'tan veya dosya dilimleyici seçiminden bir görsel ayarlamak için, aşağıdaki türlerden biri olabilecek bir ISlicerFilter
nesne oluşturmanız gerekir:
IBasicFilter
IAdvancedFilter
IRelativeDateFilter
IRelativeTimeFilter
AppSource'tan veya dosya dilimleyicilerinden farklı görseller, farklı filtre türlerini destekler. Dilimleyiciyi değiştirmek için gereken filtre türünü belirlemek için öğesini çağırın visual.getSlicerState()
.
Filtre türleri hakkında daha fazla bilgi için bkz. Rapor filtrelerini denetleme.
Rapor yükünde dilimleyicileri ayarlama
Rapor yükleme yapılandırması , dilimleyicilerin durumunu değiştirmeyi destekler. Bu, rapor yükleme sırasında rapor dilimleyicilerinin durumunu değiştirmenize olanak tanır. Bunu yapmak için bir ISlicer
dizi geçirin.
interface IReportLoadConfiguration {
...
slicers?: ISlicer[];
}
Her ISlicer
nesne bir seçici ve dilimleyici durumu içerir.
interface ISlicer {
selector: SlicerSelector;
state: ISlicerState;
}
Hangi dilimleyicinin değiştireceğini seçmek için görsel bir ad veya dilimleyici hedef seçicisi kullanın. Daha fazla bilgi için bkz. Hangi görsellerin etkilendiğini denetlemek için seçicileri kullanma.
Not
Aynı eşitleme grubundaki farklı ISlicer
nesneleri geçirirseniz, sonuç beklenmeyen olur.
Yük örneklerine dilimleyici uygulama
Bu bölüm, dilimleyicilerle yük yapılandırmasının iki örneğini içerir.
Belirli bir dilimleyiciyi ada göre ayarlama
let slicers = [ { selector: { $schema: "http://powerbi.com/product/schema#visualSelector", visualName: "d1feb8891635af3b335a" }, state: { filters: [advancedFilter] } } ]; let embedConfig = { ... slicers: slicers, };
Dilimleyicileri dilimleyici hedeflerine göre ayarlama
let target = { table: "Store", column: "StoreNumber" }; let slicers = [ { selector: { $schema: "http://powerbi.com/product/schema#slicerTargetSelector", target: target }, state: { filters: [advancedFilter] } } ]; let embedConfig = { ... slicers: slicers, };
Önemli noktalar ve sınırlamalar
Tanımlama grubu dilimleyicileri desteklenmez.
Hiyerarşi dilimleyicisi SDK 2.21 sürümünde desteklenir.
Kullanıma yetersiz dilimleyiciler yalnızca tek bir filtreyi destekler.
Dilimleyici olmayan bir görselde çağrılması
setSlicerState
, İşlem yalnızca dilimleyicilerde çalışır hatasıyla reddedilen bir söz döndürür.Dilimleyici eşitleme yapılandırmasını değiştirmek için api yoktur.