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:
Atribut objek filter
Semua jenis filter mewarisi antarmuka IFilter
. 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 -
-
https://powerbi.com/product/schema#advanced
Tingkat Lanjut tanggal relatif waktu relatif N Teratas
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 benar 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 powerbi-model pustaka.
Filter dasar
filter Dasar memiliki satu operator dengan satu atau beberapa nilai.
interface IBasicFilter extends IFilter {
operator: BasicFilterOperators;
values: (string | number | boolean)[];
requireSingleSelection?: boolean;
}
operator
- Untuk filter dasar, operator bisa 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 mungkin untuk memilih beberapa nilai pada filter. Jika diatur ke true, hanya satu nilai yang dapat dipilih.
Misalnya:
const basicFilter = {
$schema: "https://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 satu operator logis dan satu atau dua kondisi yang memiliki operator dan nilainya sendiri.
interface IAdvancedFilter extends IFilter {
logicalOperator: AdvancedFilterLogicalOperators;
conditions: IAdvancedFilterCondition[];
}
logicalOperator
- Operator logis bisa menjadi 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";
Misalnya:
const advancedFilter = {
$schema: "https://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
}
Nota
Jika Anda membuat AdvancedFilter
hanya dengan satu kondisi, atur logicalOperator
ke "And"
. Operator logis diabaikan saat diurai oleh Power BI karena hanya ada satu kondisi, dan ketika filter diserialisasikan, operator logika default "And"
. Ini memastikan filter yang dikembalikan saat memanggil getFilters
, cocok dengan 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 bisa menjadi salah satu hal berikut: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.
Misalnya:
const topNFilter = {
$schema: "https://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 antarmuka IRelativeDateTimeFilter
:
interface IRelativeDateTimeFilter extends IFilter {
operator: RelativeDateOperators;
timeUnitsCount: number;
timeUnitType: RelativeDateFilterTimeUnit;
}
operator
- Operator untuk filter tanggal dan waktu relatif bisa menjadi salah satu hal berikut:enum RelativeDateOperators { InLast = 0, InThis = 1, InNext = 2, }
timeUnitsCount
- Jumlah unit waktu.timeUnitType
- Menentukan 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; }
Contoh filter tanggal relatif:
const relativeDateFilter = {
$schema: "https://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: "https://powerbi.com/product/schema#relativeTime",
target: {
table: "Sales",
column: "OrderDate"
},
operator: models.RelativeDateOperators.InLast,
timeUnitsCount: 12,
timeUnitType: models.RelativeDateFilterTimeUnit.Hours,
filterType: models.FilterType.RelativeTime
};
MEMfilter API
Gunakan metode berikut untuk mendapatkan dan memperbarui filter yang diterapkan ke laporan:
-
Dapatkan filter -
getFilters
-
Memperbarui filter-
updateFilters
.
Mendapatkan filter
Gunakan getFilters
untuk mendapatkan semua filter untuk salah satu objek berikut:
- Lapor
- Halaman
- Visual
getFilters(): Promise<IFilter[]>
Memperbarui 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 ingin Anda preformasi. 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.
Nota
Saat memanggil API dengan RemoveAll
, argumen filter harus undefined
. Untuk operasi lain, operasi 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 yang lain. Misalnya, menghapus filter halaman, tidak menghapusnya dari halaman lain dalam laporan.
Tingkat yang didukung untuk filter adalah:
- Report - Filter diterapkan ke semua halaman dalam laporan.
- Halaman - Filter diterapkan ke halaman laporan saat ini.
- Visual - Filter diterapkan ke visual tertentu.
Nota
Hanya filter tingkat visual yang mendukung jenis filter ITopNFilter
.
Filter tingkat laporan
Untuk mendapatkan atau memperbarui filter yang berlaku untuk semua halaman dalam laporan, panggil API yang relevan pada objek laporan. Misalnya:
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();
Mengganti 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 tertentu 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);
Pertimbangan dan batasan
Memiliki lebih dari dua kondisi saat membangun filter tingkat lanjut dapat menyebabkan perilaku yang tidak ditentukan.
jenis filter
IncludeExclude
danTuple
tidak didukung.Target filter tuple dan hierarki tidak didukung.
Konten terkait
- Mengonfigurasi pengaturan laporan
- pemotong laporan Kontrol
- Mempersonalisasi tata letak laporan