Ří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í.
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 nichIHierarchyFilterNode
představuje výběr jedné hodnoty.interface IHierarchyFilterNode { value?: PrimitiveValueType; keyValues?: PrimitiveValueType[]; children?: IHierarchyFilterNode[]; operator?: HierarchyFilterNodeOperators; }
- Buď
value
nebokeyValues
musí být nastaveno children
– Seznam podřízených položek uzlů relevantních pro aktuální výběroperator
– 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 jeInherited
.- Buď
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] });
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] });
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] });
Rozhraní API průřezů
Pro vizuály s typem slicer
můžete použít následující metody:
- Získání stavu průřezu -
getSlicerState
- Nastavení stavu průřezu -
setSlicerState
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ů.