Ανάκτηση περισσότερων δεδομένων από το Power BI
Το API fetchMoreData σάς επιτρέπει να φορτώσετε τμήματα δεδομένων διαφορετικών μεγεθών ως έναν τρόπο ενεργοποίησης των απεικονίσεων Power BI για την παράκαμψη του σκληρού ορίου μιας προβολής δεδομένων γραμμής 30 χιλ. Εκτός από την αρχική προσέγγιση της συνάθροισης όλων των ζητούμενων τμημάτων, το API υποστηρίζει πλέον τη φόρτωση τμημάτων δεδομένων σταδιακά.
Μπορείτε να ρυθμίσετε τον αριθμό των γραμμών για ανάκτηση ταυτόχρονα εκ των προτέρων ή μπορείτε να χρησιμοποιήσετε για να επιτρέψετε dataReductionCustomization
στον συντάκτη της αναφοράς να ορίσει δυναμικά το μέγεθος του τμήματος.
Σημείωμα
Το fetchMoreData
API διατίθεται στην έκδοση 3.4 και νεότερες εκδόσεις.
Το δυναμικό dataReductionCustomization
API διατίθεται στην έκδοση 5.2 και νεότερες εκδόσεις.
Για να μάθετε ποια έκδοση χρησιμοποιείτε, ελέγξτε το apiVersion
στο αρχείο pbiviz.json .
Ενεργοποίηση τμηματικής ανάκτησης μεγάλων σημασιολογικών μοντέλων
Καθορίστε ένα μέγεθος παραθύρου για dataReductionAlgorithm
το στο αρχείο capabilities.json της απεικόνισης για το υποχρεωτικό dataViewMapping
. Το count
προσδιορίζει το μέγεθος του παραθύρου, το οποίο περιορίζει τον αριθμό των νέων γραμμών δεδομένων που μπορείτε να προσαρτήσετε στο dataview
σε κάθε ενημέρωση.
Για παράδειγμα, προσθέστε τον παρακάτω κώδικα στο αρχείο capabilities.json για να προσαρτάτε 100 γραμμές δεδομένων κάθε φορά:
"dataViewMappings": [
{
"table": {
"rows": {
"for": {
"in": "values"
},
"dataReductionAlgorithm": {
"window": {
"count": 100
}
}
}
}
]
Τα νέα τμήματα προσαρτώνται στην υπάρχουσα dataview
και παρέχονται στην απεικόνιση ως update
κλήση.
Χρήση της fetchMoreData στην απεικόνιση Power BI
Στο Power BI, μπορείτε με fetchMoreData
έναν από τους εξής δύο τρόπους:
- λειτουργία συνάθροισης τμημάτων
- λειτουργία επαυξητικών ενημερώσεων
Λειτουργία συνάθροισης τμημάτων (προεπιλογή)
Με τη λειτουργία συνάθροισης τμημάτων, η προβολή δεδομένων που παρέχεται στην απεικόνιση περιέχει τα δεδομένα που έχουν συσσωρευτεί από όλα τα προηγούμενα fetchMoreData requests
. Επομένως, το μέγεθος της προβολής δεδομένων αυξάνεται με κάθε ενημέρωση σύμφωνα με το μέγεθος του παραθύρου. Για παράδειγμα, εάν αναμένονται συνολικά 100.000 γραμμές και το μέγεθος του παραθύρου έχει οριστεί σε 10.000, η πρώτη προβολή ενημέρωσης δεδομένων θα πρέπει να περιλαμβάνει 10.000 γραμμές, η δεύτερη προβολή δεδομένων ενημέρωσης θα πρέπει να περιλαμβάνει 20.000 γραμμές και ούτω καθεξής.
Επιλέξτε τη λειτουργία συνάθροισης τμημάτων με κλήση fetchMoreData
aggregateSegments = true
της μεθόδου .
Μπορείτε να προσδιορίσετε εάν υπάρχουν δεδομένα ελέγχοντας για παρουσία :dataView.metadata.segment
public update(options: VisualUpdateOptions) {
const dataView = options.dataViews[0];
console.log(dataView.metadata.segment);
// output: __proto__: Object
}
Μπορείτε επίσης να ελέγξετε εάν η ενημέρωση είναι η πρώτη ενημέρωση ή μια μεταγενέστερη ενημέρωση επιλέγοντας options.operationKind
. Στον παρακάτω κώδικα, VisualDataChangeOperationKind.Create
το αναφέρεται στο πρώτο τμήμα και VisualDataChangeOperationKind.Append
το αναφέρεται σε επόμενα τμήματα.
// 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
}
Μπορείτε επίσης να καλέσετε τη fetchMoreData
μέθοδο από ένα πρόγραμμα χειρισμού συμβάντων περιβάλλοντος εργασίας χρήστη:
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
}
}
}
Ως απάντηση στην κλήση της μεθόδου , το this.host.fetchMoreData
Power BI καλεί τη update
μέθοδο της απεικόνισης με ένα νέο τμήμα δεδομένων.
Σημείωμα
Για να αποφύγετε τους περιορισμούς μνήμης του υπολογιστή-πελάτη, το Power BI περιορίζει το σύνολο δεδομένων ανάκτησης στα 100 MB. Όταν συμπληρωιστεί αυτό το όριο, fetchMoreData()
επιστρέφει false
.
Λειτουργία επαυξητικών ενημερώσεων
Με τη λειτουργία επαυξητικών ενημερώσεων, η προβολή δεδομένων που παρέχεται στην απεικόνιση περιέχει μόνο το επόμενο σύνολο επαυξητικών δεδομένων. Το μέγεθος της προβολής δεδομένων ισούται με το καθορισμένο μέγεθος παραθύρου (ή μικρότερο, εάν το τελευταίο bit δεδομένων είναι μικρότερο από το μέγεθος του παραθύρου). Για παράδειγμα, εάν αναμένονται συνολικά 101.000 γραμμές και το μέγεθος του παραθύρου οριστεί σε 10.000, η απεικόνιση θα λαμβάνει 10 ενημερώσεις με μέγεθος προβολής δεδομένων 10.000 και μία ενημέρωση με προβολή δεδομένων μέγεθος 1.000.
Η λειτουργία επαυξητικών ενημερώσεων επιλέγεται με aggregateSegments = false
κλήση fetchMoreData
της μεθόδου .
Μπορείτε να προσδιορίσετε εάν υπάρχουν δεδομένα ελέγχοντας για παρουσία :dataView.metadata.segment
public update(options: VisualUpdateOptions) {
const dataView = options.dataViews[0];
console.log(dataView.metadata.segment);
// output: __proto__: Object
}
Μπορείτε επίσης να ελέγξετε εάν η ενημέρωση είναι η πρώτη ενημέρωση ή μια μεταγενέστερη ενημέρωση επιλέγοντας options.operationKind
. Στον παρακάτω κώδικα, VisualDataChangeOperationKind.Create
το αναφέρεται στο πρώτο τμήμα και VisualDataChangeOperationKind.Segment
το αναφέρεται σε επόμενα τμήματα.
// 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
}
Μπορείτε επίσης να καλέσετε τη fetchMoreData
μέθοδο από ένα πρόγραμμα χειρισμού συμβάντων περιβάλλοντος εργασίας χρήστη:
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
}
}
}
Ως απάντηση στην κλήση της μεθόδου , το this.host.fetchMoreData
Power BI καλεί τη update
μέθοδο της απεικόνισης με ένα νέο τμήμα δεδομένων.
Σημείωμα
Παρόλο που τα δεδομένα στις διαφορετικές ενημερώσεις των προβολών δεδομένων είναι κυρίως αποκλειστικά, υπάρχει κάποια επικάλυψη μεταξύ διαδοχικών προβολών δεδομένων.
Για τον πίνακα και την κατηγορηματική αντιστοίχιση δεδομένων, οι πρώτες N
γραμμές προβολής δεδομένων αναμένεται να περιέχουν δεδομένα που έχουν αντιγραφεί από την προηγούμενη προβολή δεδομένων.
N
μπορεί να προσδιοριστεί από: (dataView.table['lastMergeIndex'] === undefined) ? 0 : dataView.table['lastMergeIndex'] + 1
Η απεικόνιση διατηρεί την προβολή δεδομένων μεταβιβαστική σε αυτή, ώστε να μπορεί να έχει πρόσβαση στα δεδομένα χωρίς επιπλέον επικοινωνίες με το Power BI.
Προσαρμοσμένη μείωση δεδομένων
Δεδομένου ότι ο προγραμματιστής δεν μπορεί να γνωρίζει εκ των προτέρων τον τύπο δεδομένων που θα εμφανίζει η απεικόνιση, μπορεί να θέλει να επιτρέψει στον συντάκτη αναφοράς να ορίσει δυναμικά το μέγεθος του τμήματος δεδομένων. Από την έκδοση API 5.2, μπορείτε να επιτρέψετε στον συντάκτη της αναφοράς να ορίζει το μέγεθος των κομματιών δεδομένων που ανακτάται κάθε φορά.
Για να επιτρέψετε στον συντάκτη της αναφοράς να ορίσει το πλήθος, ορίστε πρώτα ένα αντικείμενο παραθύρου ιδιοτήτων που ονομάζεται dataReductionCustomization
στο αρχείο capabilities.json:
"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
}
}
}
},
Στη συνέχεια, μετά από το dataViewMappings
, καθορίστε τις προεπιλεγμένες τιμές για dataReductionCustomization
.
"dataReductionCustomization": {
"matrix": {
"rowCount": {
"propertyIdentifier": {
"objectName": "dataReductionCustomization",
"propertyName": "rowCount"
},
"defaultValue": "100"
},
"columnCount": {
"propertyIdentifier": {
"objectName": "dataReductionCustomization",
"propertyName": "columnCount"
},
"defaultValue": "10"
}
}
}
Οι πληροφορίες μείωσης δεδομένων εμφανίζονται στην απεικόνιση στο τμήμα παραθύρου μορφοποίησης.
Ζητήματα προς εξέταση και περιορισμοί
Το μέγεθος του παραθύρου περιορίζεται σε ένα εύρος 2-30.000.
Το συνολικό πλήθος γραμμών προβολής δεδομένων περιορίζεται σε 1.048.576 γραμμές.
Το μέγεθος μνήμης της προβολής δεδομένων περιορίζεται σε 100 MB Σε λειτουργία συνάθροισης τμημάτων.