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 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 örneğini gösteren ekran görüntüsü. Yıl, çeyrek ve ay düzeylerini gösterir.

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 her IHierarchyFilterNode 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 valuekeyValues ayarlanmalıdır
    • children – Geçerli seçimle ilgili düğüm alt öğelerinin listesi
    • operator – 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 olur Inherited.

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

    2013 ve 2014 yılları için bir ve iki üç aylık dönemlerin seçili olduğu bir hiyerarşi dilimleyici örneğini gösteren ekran görüntüsü.

  • Ö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] });
    

    Özel durumlarla farklı düzeylerdeki değerleri seçen bir hiyerarşi dilimleyici örneğini gösteren ekran görüntüsü. 1. S hariç 2014 yılı seçilmiştir.

  • 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] });
    

    Belirtilen değerler dışında her şeyi seçen bir hiyerarşi dilimleyici örneğini gösteren ekran görüntüsü. 2010 ile 2014 yılları seçilir. 1. S olmadan 2008 seçilir ve 2009 hiç seçilmez.

Dilimleyici API'leri

Türü olan görseller slicer için aşağıdaki yöntemleri kullanabilirsiniz:

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ı getSlicerStateyapmanı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.

Sonraki adımlar