Řízení průřezů sestav

Pomocí rozhraní API průřezu můžete získat a nastavit stav průřezu Power BI. Kromě toho můžete použít konfiguraci zatížení ke změně stavu průřezu při načítání sestavy.

Existují dva typy vizuálů průřezu:

  • Předefinované – průřezy pro předefinované vizuály Power BI. Předefinované průřezy podporují všechny vizuály Power BI, které se dodávají s Power BI (Desktop a služba).

  • Vizuály Power BI z AppSource a soubory – průřezy pro vizuály Power BI třetích stran, dostupné z AppSource nebo jako soubor .pbiviz . Průřezy pro vizuály Power BI z AppSource a soubory nebo zkráceně vizuály z AppSource nebo soubory jsou průřezy pro vizuály Power BI vytvořené vývojáři.

Objekt Průřez

Existují čtyři typy průřezů:

Průřez kategorií

Průřezy kategorií podporují následující zobrazení:

  • Seznam
  • Rozevírací nabídka
  • Karty hodnot

Výběrem jedné nebo více položek z těchto seznamů můžete sestavu odpovídajícím způsobem filtrovat.

Pokud chcete změnit výběr pro tento typ průřezů, musíte vytvořit IBasicFilter objekt. Další informace o vytvoření základního filtru najdete v tématu Základní filtr.

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

Pokud je cílem průřezu hierarchie, zadejte IFilterHierarchyTarget cíl. Další informace najdete v tématu Použití cílů k výběru datového pole, se kterým se má pracovat.

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

Průřez rozsahu

Průřezy rozsahu podporují podmínky, jako jsou:

  • Mezi
  • Před
  • Po

Pokud chcete změnit výběr průřezů rozsahu IAdvancedFilter , vytvořte objekt. Další informace najdete v tématu Rozšířený filtr.

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

Průřez relativního data

Průřezy relativního data podporují podmínky, jako jsou:

  • Minulý týden
  • Posledních pět let

Pokud chcete změnit výběr pro průřezy relativního IRelativeDateFilter data, vytvořte objekt. Další informace najdete v tématu Objekty filtru relativního data a relativního času.

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

Průřez relativního času

Průřezy relativního času podporují podmínky, jako jsou:

  • Posledních pět minut
  • Tato hodina

Pokud chcete změnit výběr pro průřezy relativního IRelativeTimeFilter času, vytvořte objekt. Další informace najdete v tématu Filtry relativního data a relativního času.

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

Průřez hierarchií

Průřezy hierarchie umožňují filtrovat z více souvisejících polí.

Snímek obrazovky znázorňující příklad průřezu hierarchie Zobrazuje úrovně rok, čtvrtletí a měsíc.

Průřez Hierarchie se podporuje ze sady SDK verze 2.21. Nastavte výběry v průřezu hierarchie pomocí rozhraní API setSlicerState nebo získejte aktuální výběry hierarchie pomocí rozhraní API getSlicerState.

Přečtěte si o přidávání polí do průřezů hierarchie.

Filtr hierarchie

Popisuje IHierarchyFilter hierarchii průřezu. S tímto filtrem getSlicerState použijte metody a setSlicerState .

interface IHierarchyFilter extends IFilter {
    target: (IFilterTarget | IFilterKeyTarget)[];
    hierarchyData: IHierarchyFilterNode[];
}
  • hierarchyData – vybrané a nevybrané položky ve stromu hierarchie, kde každá z nich IHierarchyFilterNode představuje výběr jedné hodnoty.

    interface IHierarchyFilterNode {
        value?: PrimitiveValueType;
        keyValues?: PrimitiveValueType[];
        children?: IHierarchyFilterNode[];
        operator?: HierarchyFilterNodeOperators;
    }
    
    • Buď value nebo keyValues musí být nastaveno
    • children – Seznam podřízených položek uzlů relevantních pro aktuální výběr
    • operator – Operátor pro jednotlivé objekty ve stromu. Operátor může být jeden z následujících:

    type HierarchyFilterNodeOperators = "Selected" | "NotSelected" | "Inherited";

    • Selected – hodnota je explicitně vybrána.
    • NotSelected – hodnota není explicitně vybrána.
    • Inherited – výběr hodnoty je podle nadřazené hodnoty v hierarchii, nebo výchozí, pokud je to kořenová hodnota.

    Parametr operator je volitelný. Pokud není nastavený žádný operátor, výchozí hodnota je Inherited.

Příklady průřezů hierarchie

Následující příklady popisují různé scénáře použití setSlicerState rozhraní API s průřezy hierarchie.

  • Vyberte hodnoty na různých úrovních. Vyberte například Qtr 1 a Qtr 2 v roce 2013 a Qtr 1 a Qtr 2 v roce 2014.

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

    Snímek obrazovky znázorňující příklad průřezu hierarchie s vybranými čtvrtletími 1 a 2 pro roky 2013 a 2014

  • Výběr hodnot na různých úrovních s výjimkami Vyberte například 2014 bez Qtr 1.

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

    Snímek obrazovky znázorňující příklad průřezu hierarchie, který vybírá hodnoty na různých úrovních s výjimkami Má vybraný rok 2014 s výjimkou 1. čtvrtletí.

  • Začněte operátorem a NotSelected vyberte vše kromě určitých hodnot. Vyberte například vše kromě Qtr 1 z roku 2008 a 2009.

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

    Snímek obrazovky znázorňující příklad průřezu hierarchie, který vybírá vše kromě zadaných hodnot Jsou vybrány roky 2010 až 2014. 2008 je vybrán bez Q 1 a 2009 není vybrán vůbec.

Rozhraní API průřezů

Pro vizuály s typem slicer můžete použít následující metody:

Poznámka

Synchronizační průřezy uložené v sestavě rozpoznávají rozhraní API průřezů. To znamená, že pokud nastavíte průřez pomocí rozhraní API, ovlivní to všechny průřezy ve stejné skupině synchronizace.

Získání stavu průřezu

Pokud chcete získat stav průřezu, musíte najít instanci vizuálu průřezu a volat getSlicerState. Výsledek je typu ISlicerState.

Ve výchozím nastavení se na průřez nepoužijí žádné filtry. V takových případech getSlicerState se vrátí ISlicerState s prázdným polem filtrů.

getSlicerState funguje pro předzpracovanévizuály i vizuály z AppSource nebo průřezů souborů.

let state = await visual.getSlicerState();

Nastavení stavu průřezu

Pokud chcete nastavit stav průřezu, musíte najít instanci vizuálu průřezu , vytvořit stav průřezu a volat setSlicerState ho se stavem průřezu, který jste vytvořili.

await visual.setSlicerState(state);

Stav průřezu ISlicerState je objekt.

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

Pokud chcete obnovit průřez, zavolejte setSlicerState s prázdným polem filtrů.

Nastavení průřezu pro vizuály z AppSource nebo souborů

Pokud chcete nastavit vizuály z AppSource nebo výběru průřezu Souborů , musíte vytvořit ISlicerFilter objekt, který může být následujících typů:

  • IBasicFilter
  • IAdvancedFilter
  • IRelativeDateFilter
  • IRelativeTimeFilter

Různé vizuály z AppSource nebo průřezů souborů podporují různé typy filtrů. Pokud chcete určit typ filtru potřebný k úpravě průřezu, zavolejte visual.getSlicerState().

Další informace o typech filtrů najdete v tématu Řízení filtrů sestav.

Nastavení průřezů při načítání sestavy

Konfigurace načtení sestavy podporuje změnu stavu průřezů. To vám umožní změnit stav průřezů sestavy během načítání sestavy. Uděláte to tak, že předáte pole ISlicer .

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

Každý ISlicer objekt obsahuje selektor a stav průřezu.

interface ISlicer {
    selector: SlicerSelector;
    state: ISlicerState;
}

Pomocí selektoru názvu vizuálu nebo cíle průřezu vyberte, který průřez chcete změnit. Další informace najdete v tématu Použití selektorů k řízení vizuálů.

Poznámka

Pokud předáte různé ISlicer objekty, které jsou ve stejné skupině synchronizace, bude výsledek neočekávaný.

Použití průřezu při načítání příkladů

Tato část obsahuje dva příklady konfigurace zatížení s průřezy.

  • Nastavení konkrétního průřezu podle názvu

    let slicers = [
      {
        selector: {
          $schema: "http://powerbi.com/product/schema#visualSelector",
          visualName: "d1feb8891635af3b335a"
        },
        state: {
          filters: [advancedFilter]
        }
      }
    ];
    
    let embedConfig = {
      ...
      slicers: slicers,
    };
    
  • Nastavení průřezů podle cíle průřezu

    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,
    };
    

Důležité informace a omezení

  • Průřezy řazené kolekce členů nejsou podporovány.

  • Průřez Hierarchie se podporuje ze sady SDK verze 2.21.

  • Předefinované průřezy podporují pouze jeden filtr.

  • Volání setSlicerState vizuálu, který není průřezem, vrátí odmítnutý slib s chybou Operace funguje pouze u průřezů.

  • Neexistuje žádné rozhraní API pro změnu konfigurace synchronizace průřezů.

Další kroky