Aracılığıyla paylaş


Rapor dilimleyicilerini denetleme

Dilimleyici API'lerini kullanarak Power BI dilimleyicisinin durumunualabilir 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:

  • Hazır - Kullanıma hazır Power BI görselleri için dilimleyiciler. Kullanıma hazır dilimleyiciler, Power BI (Masaüstü ve hizmet) ile birlikte gelen tüm Power BI görsellerini destekler.

  • AppSource'tan Power BI görsellerini ve dosyaları - AppSource'tan veya .pbiviz dosyası olarak sağlanan üçüncü taraf Power BI görselleri için dilimleyiciler. AppSource ve dosyalarındaki Power BI görselleri veya AppSource'taki kısa görseller veyadosyalar için dilimleyiciler, geliştiriciler tarafından oluşturulan Power BI görselleri için 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 nesnesi 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, IFilterHierarchyTarget bir hedef sağlayın. Daha fazla bilgi için bkz. Hedefleri kullanaraküzerinde hangi veri alanının kullanılacağını seçme.

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 dilimleyicisi

Aralık dilimleyicileri aşağıdakiler gibi koşulları destekler:

  • Arasında
  • Önce
  • Sonra

Aralık dilimleyicilerinin seçimini değiştirmek için bir IAdvancedFilter nesnesi 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 dilimleyicisi

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 nesnesi oluşturun. Daha fazla bilgi için bkz. Göreli tarih ve göreli saat filtre 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 nesnesi 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 filtrelemenize olanak sağlar.

Hiyerarşi dilimleyicisinin bir ö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 ile hiyerarşi dilimleyicisinde seçimleri ayarlayın veya getSlicerState APIile geçerli hiyerarşi seçimlerini alın.

hiyerarşi dilimleyicilerine alan ekleme hakkında bilgi edinin.

Hiyerarşi filtresi

IHierarchyFilter dilimleyici hiyerarşisini açıklar. Bu filtreyle getSlicerState ve setSlicerState yöntemlerini kullanın.

interface IHierarchyFilter extends IFilter {
    target: (IFilterTarget | IFilterKeyTarget)[];
    hierarchyData: IHierarchyFilterNode[];
}
  • hierarchyData: Her IHierarchyFilterNode tek bir değer seçimini temsil ettiği hiyerarşi ağacındaki seçili ve seçilmemiş öğeler.

    interface IHierarchyFilterNode {
        value?: PrimitiveValueType;
        keyValues?: PrimitiveValueType[];
        children?: IHierarchyFilterNode[];
        operator?: HierarchyFilterNodeOperators;
    }
    
    • value veya keyValues 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 Inheritedolur.

Hiyerarşi dilimleyici örnekleri

Aşağıdaki örneklerde, setSlicerState API'sini hiyerarşi dilimleyicileriyle kullanmaya yönelik 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' 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 için dışında her şeyi seçmek için işleciyle başlayın. Örneğin, 2008 ve 2009'un '1. Üç Aylık Sayısı' 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

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

Not

Bir 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örseli örneğini bulmanız ve getSlicerStateçağrısı yapmanız gerekir. Sonuç, ISlicerStatetüründedir.

Varsayılan olarak, dilimleyiciye filtre uygulanmaz. Bu gibi durumlarda, getSlicerState boş bir filtre dizisiyle ISlicerState döndürür.

getSlicerState hem hazır hem de AppSource'tan görseller veya dilimleyiciler dosyalar için çalışır.

let state = await visual.getSlicerState();

Dilimleyici durumunu ayarlama

Dilimleyici durumunu ayarlamak için dilimleyici görseli örneğini bulmanız, dilimleyici durumunu oluşturmanız ve oluşturduğunuz dilimleyici durumuyla setSlicerState çağırmanız gerekir.

await visual.setSlicerState(state);

Dilimleyici durumu bir ISlicerState nesnesidir.

interface ISlicerState {
    filters: ISlicerFilter[];
    targets?: SlicerTarget[];
}

Dilimleyiciyi sıfırlamak için boş bir filtre dizisiyle setSlicerState çağırın.

AppSource'tan veya dosyalardan görseller için dilimleyici ayarlama

AppSource'tan görselleri veya dilimleyici seçimi dosyaları ayarlamak için, aşağıdaki türlerden biri olabilecek bir ISlicerFilter nesnesi oluşturmanız gerekir:

  • IBasicFilter
  • IAdvancedFilter
  • IRelativeDateFilter
  • IRelativeTimeFilter

AppSource'tan farklı görselleri veya dilimleyiciler dosyalar, farklı filtre türlerini destekler. Dilimleyiciyi değiştirmek için gereken filtre türünü belirlemek için visual.getSlicerState()öğesini çağırın.

Filtre türleri hakkında daha fazla bilgi için bkz.Rapor filtrelerini denetleme .

Rapor yükünde dilimleyicileri ayarlama

Rapor yük 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 dizisi geçirin.

interface IReportLoadConfiguration {
    ...
    slicers?: ISlicer[];
}

Her ISlicer nesnesi 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çici 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ına yönelik iki örnek 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,
    };
    

Dikkat edilmesi gerekenler ve sınırlamalar

  • Tanımlama grubu dilimleyicileri desteklenmez.

  • Hiyerarşi dilimleyicisi SDK 2.21 sürümünde desteklenir.

  • İlk çalıştırma dilimleyicileri yalnızca tek bir filtreyi destekler.

  • Dilimleyici olmayan bir görselde setSlicerState çağrılması reddedilen bir söz döndürür İşlem yalnızcadilimleyicilerde çalışır.

  • Dilimleyici eşitleme yapılandırmasını değiştirmek için API yoktur.