Mengontrol filter laporan
Saat menyematkan laporan Power BI, Anda bisa menerapkan filter secara otomatis selama fase pemuatan, atau Anda bisa mengubah filter secara dinamis setelah laporan dimuat. Misalnya, Anda dapat membuat panel filter kustom Anda sendiri dan secara otomatis menerapkan filter tersebut ke laporan untuk menampilkan wawasan spesifik pengguna. Anda juga dapat membuat tombol yang memungkinkan pengguna menerapkan filter ke laporan yang disematkan.
Jenis filter berikut ini didukung:
- Dasar -
IBasicFilter
- Lanjutan -
IAdvancedFilter
- N Teratas -
ITopNFilter
- Tanggal relatif -
IRelativeDateFilter
- Waktu relatif -
IRelativeTimeFilter
Atribut objek filter
Semua jenis filter mewarisi IFilter
antarmuka. Atribut yang tercantum di bawah ini relevan untuk semua jenis filter.
interface IFilter {
$schema: string;
target: IFilterGeneralTarget;
filterType: FilterType;
displaySettings?: IFilterDisplaySettings;
}
Skema
Atribut $schema
menentukan jenis filter. Ada lima skema yang tersedia, satu untuk setiap jenis filter:
- Dasar -
http://powerbi.com/product/schema#basic
- Lanjutan -
http://powerbi.com/product/schema#advanced
- Tanggal relatif -
http://powerbi.com/product/schema#relativeDate
- Waktu relatif -
http://powerbi.com/product/schema#relativeTime
- N Teratas -
http://powerbi.com/product/schema#topN
Pengaturan tampilan
Atribut displaySettings
, menentukan cara filter ditampilkan di panel filter.
interface IFilterDisplaySettings {
isLockedInViewMode?: boolean;
isHiddenInViewMode?: boolean;
displayName?: string;
}
isLockedInViewMode
- Filter terkunci diterapkan dan ditampilkan di panel filter. Nilai filter tidak dapat diubah dalam mode tampilan. Atur ke true untuk mengunci filter.isHiddenInViewMode
- Filter tersembunyi diterapkan ke laporan tetapi tidak ditampilkan di panel filter dalam mode tampilan. Atur ke true untuk menyembunyikan filter.displayName
- Filter dapat ditampilkan di panel filter dengan nama yang dipersonalisasi. Gunakan atribut ini untuk mengatur nama yang dipersonalisasi untuk filter Anda. Ketika nilai tidak terdefinisi atau null, nama default filter akan ditampilkan (biasanya nama bidang data yang difilter).
Jenis filter
Atribut filterType
menentukan jenis filter. Gunakan enum berikut, yang ditentukan dalam pustaka model:
enum FilterType {
Advanced = 0,
Basic = 1,
Unknown = 2,
IncludeExclude = 3,
RelativeDate = 4,
TopN = 5,
Tuple = 6,
RelativeTime = 7,
}
Target
Atribut target
menentukan target filter. Untuk informasi selengkapnya, lihat Menggunakan target untuk memilih bidang data mana yang akan ditindak lanjuti.
Atribut tambahan menurut jenis filter
Setiap jenis filter memiliki antarmukanya sendiri dengan sekumpulan atribut yang berbeda. Antarmuka filter adalah bagian dari pustaka powerbi-models .
Filter dasar
Filter dasar memiliki operator tunggal dengan satu atau beberapa nilai.
interface IBasicFilter extends IFilter {
operator: BasicFilterOperators;
values: (string | number | boolean)[];
requireSingleSelection?: boolean;
}
operator
- Untuk filter dasar, operator dapat menjadi salah satu hal berikut:type BasicFilterOperators = "In" | "NotIn" | "All"
values
- Array nilai untuk filter, semua nilai harus memiliki jenis yang sama.requireSingleSelection
- Menentukan apakah dimungkinkan untuk memilih beberapa nilai pada filter. Jika diatur ke true, hanya satu nilai yang dapat dipilih.
Contohnya:
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
}
Filter tingkat lanjut
Filter tingkat lanjut memiliki operator logis tunggal dan satu atau dua kondisi yang memiliki operator dan nilainya sendiri.
interface IAdvancedFilter extends IFilter {
logicalOperator: AdvancedFilterLogicalOperators;
conditions: IAdvancedFilterCondition[];
}
logicalOperator
- Operator logis dapat berupa salah satu hal berikut:type AdvancedFilterLogicalOperators = "And" | "Or";
conditions
- Array kondisi untuk filter tingkat lanjut, setiap kondisi memilikioperator
danvalue
.interface IAdvancedFilterCondition { value?: (string | number | boolean | Date); operator: AdvancedFilterConditionOperators; }
Operator yang tersedia untuk suatu kondisi adalah:
type AdvancedFilterConditionOperators = "None" | "LessThan" | "LessThanOrEqual" | "GreaterThan" | "GreaterThanOrEqual" | "Contains" | "DoesNotContain" | "StartsWith" | "DoesNotStartWith" | "Is" | "IsNot" | "IsBlank" | "IsNotBlank";
Contohnya:
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
}
Catatan
Jika Anda membuat AdvancedFilter
dengan hanya satu kondisi, atur ke logicalOperator
"And"
. Operator logis diabaikan saat diurai oleh Power BI karena hanya ada satu kondisi, dan ketika filter diserialisasikan, operator logika default adalah "And"
. Ini memastikan filter yang dikembalikan saat memanggil getFilters
, cocok dengan filter yang diatur menggunakan setFilters
.
Filter N teratas
Filter N teratas memiliki operator tunggal, penghitung item untuk jumlah item yang ditampilkan, dan urutan berdasarkan target.
interface ITopNFilter extends IFilter {
operator: TopNFilterOperators;
itemCount: number;
orderBy: ITarget;
}
operator
- Operator untuk filter N Teratas dapat menjadi salah satu dari berikut ini:type TopNFilterOperators = "Top" | "Bottom";
itemCount
- Jumlah item yang akan ditampilkan.orderBy
- Bidang data target untuk diurutkan. Untuk informasi selengkapnya, lihat Menggunakan target untuk memilih bidang data mana yang akan ditindak lanjuti.
Contohnya:
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
};
Filter tanggal relatif dan waktu relatif
Filter tanggal relatif dan filter waktu relatif keduanya mewarisi dari IRelativeDateTimeFilter
antarmuka:
interface IRelativeDateTimeFilter extends IFilter {
operator: RelativeDateOperators;
timeUnitsCount: number;
timeUnitType: RelativeDateFilterTimeUnit;
}
operator
- Operator untuk filter tanggal dan waktu relatif dapat menjadi salah satu dari berikut ini:enum RelativeDateOperators { InLast = 0, InThis = 1, InNext = 2, }
timeUnitsCount
- Jumlah unit waktu.timeUnitType
- Mendefinisikan unit waktu yang digunakan filter.enum RelativeDateFilterTimeUnit { Days = 0, Weeks = 1, CalendarWeeks = 2, Months = 3, CalendarMonths = 4, Years = 5, CalendarYears = 6, Minutes = 7, Hours = 8 }
Tabel berikut mencantumkan waktu unit yang didukung oleh filter tanggal relatif dan waktu relatif.
Unit waktu Tanggal relatif Waktu relatif Hari ✔ ✖ Minggu ✔ ✖ CalendarWeeks ✔ ✖ Bulan ✔ ✖ CalendarMonths ✔ ✖ Tahun ✔ ✖ CalendarYears ✔ ✖ Menit ✖ ✔ Jam ✖ ✔ includeToday
- Menerima nilai boolean yang menentukan apakah akan menyertakan hari ini dalam filter.interface IRelativeDateFilter extends IRelativeDateTimeFilter { includeToday: boolean; }
Catatan
includeToday
hanya didukung oleh filter tanggal relatif.
Contoh filter tanggal relatif:
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
};
Contoh filter waktu relatif:
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
};
FILTER API
Gunakan metode berikut untuk mendapatkan dan memperbarui filter yang diterapkan ke laporan:
- Mendapatkan filter -
getFilters
- Memperbarui filter-
updateFilters
.
Mendapatkan filter
Gunakan getFilters
untuk mendapatkan semua filter untuk salah satu objek berikut:
- Laporan
- Halaman
- Visual
getFilters(): Promise<IFilter[]>
Perbarui filter
Gunakan updateFilters
untuk menambahkan, mengganti, atau menghapus filter pada objek (laporan, halaman, atau visual). Menerima operasi dan array filter opsional.
updateFilters(operation: models.FiltersOperations, filters?: models.IFilter[]): Promise<IHttpPostMessageResponse<void>>
Operasi filter
Saat memanggil updateFilters
, Anda perlu meneruskan operasi filter yang ingin Anda preform. Operasi yang tersedia adalah:
RemoveAll
- Menghapus semua filter pada tingkat filter.ReplaceAll
- Mengganti semua filter yang ada pada tingkat filter dengan filter yang diberikan.Add
- Menambahkan filter yang diberikan pada tingkat filter (selain filter yang ada).Replace
- Mengganti filter yang ada dengan filter tertentu hanya jika kedua filter berlaku untuk bidang data yang sama. Jika ada filter tertentu yang tidak menggantikan filter yang ada, filter tersebut akan ditambahkan.
Catatan
Saat memanggil API dengan RemoveAll
, argumen filter harus undefined
. Untuk operasi lainnya, operasi tersebut harus didefinisikan.
Tingkat filter
Memperbarui dan mendapatkan filter dapat dilakukan pada tiga tingkat. Filter pada tingkat yang berbeda bersifat independen, dan memperbarui filter pada satu tingkat, tidak akan mengubah tingkat lainnya. Misalnya, menghapus filter halaman, tidak menghapusnya dari halaman lain dalam laporan.
Tingkat yang didukung untuk filter adalah:
- Laporan - Filter diterapkan ke semua halaman dalam laporan.
- Halaman - Filter diterapkan ke halaman laporan saat ini.
- Visual - Filter diterapkan ke visual tertentu.
Catatan
Hanya filter tingkat visual yang mendukung ITopNFilter
jenis filter.
Filter tingkat laporan
Untuk mendapatkan atau memperbarui filter yang berlaku untuk semua halaman dalam laporan, panggil API yang relevan pada objek laporan. Contohnya:
Mendapatkan filter laporan
Menerapkan filter ke semua halaman.
let reportFilters = await report.getFilters();
Menambahkan filter baru ke filter laporan
Menambahkan filter baru, bersama filter yang ada, untuk semua halaman.
await report.updateFilters(models.FiltersOperations.Add, filtersArray);
Menghapus filter laporan
Hapus filter yang diterapkan ke semua halaman.
await report.updateFilters(models.FiltersOperations.RemoveAll);
Filter tingkat halaman
Untuk mendapatkan atau memperbarui filter tingkat halaman, lakukan hal berikut:
- Dapatkan objek halaman untuk halaman target. Untuk informasi selengkapnya, lihat Mendapatkan halaman dan visual.
- Pada objek halaman, panggil API yang relevan.
Mendapatkan filter halaman
Menerapkan filter ke halaman tertentu.
let reportFilters = await page.getFilters();
Ganti semua filter halaman
Mengganti semua filter yang ada yang diterapkan ke halaman tertentu, dengan sekumpulan filter baru.
await page.updateFilters(models.FiltersOperations.ReplaceAll, filtersArray);
Menghapus filter halaman
Menghapus filter yang diterapkan ke halaman tertentu.
await page.updateFilters(models.FiltersOperations.RemoveAll);
Filter tingkat visual
Untuk mendapatkan atau memperbarui filter tingkat visual, lakukan hal berikut:
- Dapatkan objek visual untuk visual target. Untuk informasi selengkapnya, lihat Mendapatkan halaman dan visual.
- Pada objek visual, panggil API yang relevan.
Mendapatkan filter visual
Menerapkan filter ke visual tertentu.
let reportFilters = await visual.getFilters();
Ganti filter visual dengan target yang sama
Mengganti filter visual tertentu. Jika filter ada dengan bidang data target yang sama dengan filter tertentu, filter tersebut digantikan oleh filter yang diberikan. Filter yang diberikan yang tidak cocok dengan filter yang ada ditambahkan.
await visual.updateFilters(models.FiltersOperations.Replace, filtersArray);
Menghapus filter visual
Menghapus filter yang diterapkan ke visual tertentu.
await visual.updateFilters(models.FiltersOperations.RemoveAll);
Batasan
Memiliki lebih dari dua kondisi saat membangun filter Tingkat Lanjut dapat menyebabkan perilaku yang tidak ditentukan.
IncludeExclude
danTuple
jenis filter tidak didukung.Target filter tuple dan hierarki tidak didukung.