Mengambil lebih banyak data dari Power BI
API fetchMoreData memungkinkan Anda memuat potongan data dengan ukuran yang berbeda sebagai cara mengaktifkan visual Power BI untuk melewati batas keras tampilan data baris 30K. Selain pendekatan asli untuk menggabungkan semua gugus yang diminta, API sekarang juga mendukung pemuatan potongan data secara bertahap.
Anda dapat mengonfigurasi jumlah baris untuk diambil pada satu waktu sebelumnya, atau Anda dapat menggunakan dataReductionCustomization
untuk mengizinkan penulis laporan mengatur ukuran gugus secara dinamis.
Catatan
fetchMoreData
API tersedia dalam versi 3.4 ke atas.
API dinamis dataReductionCustomization
tersedia dalam versi 5.2 ke atas.
Untuk mengetahui versi mana yang Anda gunakan, periksa apiVersion
di file pbiviz.json .
Mengaktifkan pengambilan tersegmentasi dari model semantik besar
Tentukan ukuran jendela untuk dataReductionAlgorithm
dalam file capabilities.json visual untuk yang diperlukandataViewMapping
. count
menentukan ukuran jendela, yang membatasi jumlah baris data baru yang dapat Anda tambahkan ke dataview
di setiap pembaruan.
Misalnya, tambahkan kode berikut dalam file capabilities.json untuk menambahkan 100 baris data pada satu waktu:
"dataViewMappings": [
{
"table": {
"rows": {
"for": {
"in": "values"
},
"dataReductionAlgorithm": {
"window": {
"count": 100
}
}
}
}
]
Segmen baru ditambahkan ke dataview
yang ada dan diberikan ke visual sebagai panggilan update
.
Menggunakan fetchMoreData di visual Power BI
Di Power BI, Anda dapat fetchMoreData
dengan salah satu dari dua cara berikut:
- mode agregasi segmen
- mode pembaruan inkremental
Mode agregasi segmen (default)
Dengan mode agregasi segmen, tampilan data yang disediakan untuk visual berisi data akumulasi dari semua sebelumnya fetchMoreData requests
. Oleh karena itu, ukuran tampilan data tumbuh dengan setiap pembaruan sesuai dengan ukuran jendela. Misalnya, jika total 100.000 baris diharapkan, dan ukuran jendela diatur ke 10.000, tampilan data pembaruan pertama harus menyertakan 10.000 baris, tampilan data pembaruan kedua harus menyertakan 20.000 baris, dan sebagainya.
Pilih mode agregasi segmen dengan memanggil fetchMoreData
dengan aggregateSegments = true
.
Anda dapat menentukan apakah data ada dengan memeriksa keberadaan dataView.metadata.segment
:
public update(options: VisualUpdateOptions) {
const dataView = options.dataViews[0];
console.log(dataView.metadata.segment);
// output: __proto__: Object
}
Anda juga dapat memeriksa untuk melihat apakah pembaruan adalah pembaruan pertama atau pembaruan berikutnya dengan memeriksa options.operationKind
. Dalam kode berikut, VisualDataChangeOperationKind.Create
mengacu pada segmen pertama dan VisualDataChangeOperationKind.Append
mengacu pada segmen berikutnya.
// CV update implementation
public update(options: VisualUpdateOptions) {
// indicates this is the first segment of new data.
if (options.operationKind == VisualDataChangeOperationKind.Create) {
}
// on second or subsequent segments:
if (options.operationKind == VisualDataChangeOperationKind.Append) {
}
// complete update implementation
}
Anda juga dapat memanggil fetchMoreData
metode dari penanganan aktivitas UI:
btn_click(){
{
// check if more data is expected for the current data view
if (dataView.metadata.segment) {
// request for more data if available; as a response, Power BI will call update method
let request_accepted: bool = this.host.fetchMoreData(true);
// handle rejection
if (!request_accepted) {
// for example, when the 100 MB limit has been reached
}
}
}
Sebagai respons untuk memanggil metode this.host.fetchMoreData
, Power BI memanggil metode update
visual dengan segmen data baru.
Catatan
Untuk menghindari batasan memori klien, Power BI membatasi total data yang diambil hingga 100 MB. Ketika batas ini tercapai, fetchMoreData()
mengembalikan false
.
Mode pembaruan inkremental
Dengan mode pembaruan bertahap, tampilan data yang disediakan untuk visual hanya berisi kumpulan data inkremental berikutnya. Ukuran tampilan data sama dengan ukuran jendela yang ditentukan (atau lebih kecil, jika bit data terakhir lebih kecil dari ukuran jendela). Misalnya, jika total 101.000 baris diharapkan dan ukuran jendela diatur ke 10.000, visual akan mendapatkan 10 pembaruan dengan ukuran tampilan data 10.000 dan satu pembaruan dengan tampilan data berukuran 1.000.
Mode pembaruan inkremental dipilih dengan memanggil fetchMoreData
dengan aggregateSegments = false
.
Anda dapat menentukan apakah data ada dengan memeriksa keberadaan dataView.metadata.segment
:
public update(options: VisualUpdateOptions) {
const dataView = options.dataViews[0];
console.log(dataView.metadata.segment);
// output: __proto__: Object
}
Anda juga dapat memeriksa apakah pembaruan adalah pembaruan pertama atau pembaruan berikutnya dengan memeriksa options.operationKind
. Dalam kode berikut, VisualDataChangeOperationKind.Create
mengacu pada segmen pertama, dan VisualDataChangeOperationKind.Segment
mengacu pada segmen berikutnya.
// CV update implementation
public update(options: VisualUpdateOptions) {
// indicates this is the first segment of new data.
if (options.operationKind == VisualDataChangeOperationKind.Create) {
}
// on second or subsequent segments:
if (options.operationKind == VisualDataChangeOperationKind.Segment) {
}
// skip overlapping rows
const rowOffset = (dataView.table['lastMergeIndex'] === undefined) ? 0 : dataView.table['lastMergeIndex'] + 1;
// Process incoming data
for (var i = rowOffset; i < dataView.table.rows.length; i++) {
var val = <number>(dataView.table.rows[i][0]); // Pick first column
}
// complete update implementation
}
Anda juga dapat memanggil fetchMoreData
metode dari penanganan aktivitas UI:
btn_click(){
{
// check if more data is expected for the current data view
if (dataView.metadata.segment) {
// request for more data if available; as a response, Power BI will call update method
let request_accepted: bool = this.host.fetchMoreData(false);
// handle rejection
if (!request_accepted) {
// for example, when the 100 MB limit has been reached
}
}
}
Sebagai respons untuk memanggil metode this.host.fetchMoreData
, Power BI memanggil metode update
visual dengan segmen data baru.
Catatan
Meskipun data dalam berbagai pembaruan tampilan data sebagian besar eksklusif, ada beberapa tumpang tindih antara tampilan data berturut-turut.
Untuk pemetaan data tabel dan kategoris, baris tampilan data pertama N
dapat diharapkan berisi data yang disalin dari tampilan data sebelumnya.
N
dapat ditentukan oleh: (dataView.table['lastMergeIndex'] === undefined) ? 0 : dataView.table['lastMergeIndex'] + 1
Visual menjaga tampilan data tetap diteruskan ke dalamnya sehingga dapat mengakses data tanpa komunikasi tambahan dengan Power BI.
Pengurangan data yang disesuaikan
Karena pengembang tidak selalu dapat mengetahui terlebih dahulu jenis data apa yang akan ditampilkan visual, mereka mungkin ingin mengizinkan penulis laporan untuk mengatur ukuran potongan data secara dinamis. Dari API versi 5.2, Anda dapat mengizinkan penulis laporan untuk mengatur ukuran potongan data yang diambil setiap kali.
Untuk mengizinkan penulis laporan mengatur hitungan, pertama-tama tentukan objek panel properti yang dipanggil dataReductionCustomization
dalam file capabilities.json Anda:
"objects": {
"dataReductionCustomization": {
"displayName": "Data Reduction",
"properties": {
"rowCount": {
"type": {
"numeric": true
},
"displayName": "Row Reduction",
"description": "Show Reduction for all row groups",
"suppressFormatPainterCopy": true
},
"columnCount": {
"type": {
"numeric": true
},
"displayName": "Column Reduction",
"description": "Show Reduction for all column groups",
"suppressFormatPainterCopy": true
}
}
}
},
Kemudian, setelah dataViewMappings
, tentukan nilai default untuk dataReductionCustomization
.
"dataReductionCustomization": {
"matrix": {
"rowCount": {
"propertyIdentifier": {
"objectName": "dataReductionCustomization",
"propertyName": "rowCount"
},
"defaultValue": "100"
},
"columnCount": {
"propertyIdentifier": {
"objectName": "dataReductionCustomization",
"propertyName": "columnCount"
},
"defaultValue": "10"
}
}
}
Informasi pengurangan data muncul di bawah visual di panel format.
Pertimbangan dan batasan
Ukuran jendela dibatasi hingga kisaran 2-30.000.
Jumlah baris total tampilan data dibatasi hingga 1.048.576 baris.
Ukuran memori tampilan data dibatasi hingga 100 MB Dalam mode agregasi segmen.