Rapor filtrelerini denetleme

Power BI raporu eklerken, yükleme aşamasında otomatik olarak filtreleri 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ına olanak tanıyan bir düğme de oluşturabilirsiniz.

Aşağıdaki filtre türleri desteklenir:

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, ancakgö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 bir operator ve bir valuevardı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 setFilterskullanı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 RemoveAllile çağırırken filtreler bağımsız değişkeni undefinedolmalı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:

  1. Hedef sayfa için sayfa nesnesini alın. Daha fazla bilgi için bkz.sayfaları ve görselleri alma .
  2. 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:

  1. Hedef görsel için görsel nesnesini alın. Daha fazla bilgi için bkz.sayfaları ve görselleri alma .
  2. 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 ve Tuple filtre türleri desteklenmez.

  • Tanımlama grubu ve hiyerarşi filtresi hedefleri desteklenmez.