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:

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 bir operatorvalueve 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ı getFiltersyaparken döndürülen filtrelerin kullanılarak setFiltersayarlananlarla 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;
}

Ö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

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:

  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);

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.

Sonraki adımlar