Με το API τοπικού χώρου αποθήκευσης, μπορείτε να αποθηκεύσετε δεδομένα στον τοπικό χώρο αποθήκευσης του προγράμματος περιήγησης. Για να χρησιμοποιήσετε το API τοπικού χώρου αποθήκευσης, πρέπει να ενεργοποιηθεί ο τοπικός διαχειριστής χώρου αποθήκευσης του πελάτη.
Ο τοπικός χώρος αποθήκευσης είναι απομονωμένος, έτσι ώστε κάθε τύπος απεικόνισης να έχει τη δική του ξεχωριστή πρόσβαση στον χώρο αποθήκευσης.
Σημείωμα
Είναι ευθύνη του προγραμματιστή να διασφαλίσει ότι τα αποθηκευμένα δεδομένα συμμορφώνονται με τις εταιρικές πολιτικές του καταναλωτή και να ενημερώσει τους χρήστες σχετικά με τις πληροφορίες που αποθηκεύονται, εάν αυτό απαιτείται από την ευαισθησία των δεδομένων. Συγκεκριμένα, οι προγραμματιστές προσαρμοσμένων απεικονίσεων θα πρέπει να κρυπτογραφούν τα δεδομένα, εάν τα αναμένουν επιχειρηματικοί στόχοι ή σενάρια.
Αυτή η έκδοση του API τοπικού χώρου αποθήκευσης έχει προγραμματιστεί για απόσυρση. Δεν δεχόμαστε άλλες αιτήσεις. Όταν είναι δυνατό, χρησιμοποιήστε την Έκδοση 2.
Στο παρακάτω παράδειγμα, αυξάνεται ένας μετρητής κάθε φορά που καλείται η μέθοδος ενημέρωσης . Η τιμή του μετρητή αποθηκεύεται τοπικά και καλείται κάθε φορά που ξεκινά η απεικόνιση. Με αυτόν τον τρόπο, ο μετρητής συνεχίζει να καταμετράται από το σημείο όπου είχε σταματήσει αντί να ξεκινά κάθε φορά που εκκινείται η απεικόνιση:
Το API τοπικού χώρου αποθήκευσης διαθέτει τέσσερις μεθόδους:
status:
Επιστρέφει την κατάσταση του API τοπικού χώρου αποθήκευσης v2.
PrivilegeStatus.DisabledByAdmin: ο διακόπτης διαχειριστή μισθωτή είναι απενεργοποιημένος
PrivilegeStatus.NotDeclared: η απεικόνιση δεν διαθέτει δήλωση για τον τοπικό χώρο αποθήκευσης στον πίνακα δικαιωμάτων
PrivilegeStatus.NotSupported: το API δεν υποστηρίζεται (ανατρέξτε στους περιορισμούς για περισσότερες πληροφορίες)
PrivilegeStatus.Allowed: Το API υποστηρίζεται και επιτρέπεται
Πριν χρησιμοποιήσετε τις μεθόδους λήψης, ορισμού ή κατάργησης , συνιστάται να χρησιμοποιήσετε τη μέθοδο κατάστασης για να ελέγξετε την κατάσταση του API και να εξασφαλίσετε ότι η απεικόνισή σας συμπεριφέρεται όπως αναμένεται.
λήψη:
Αυτή η μέθοδος αναμένει μία παράμετρο:
key – το κλειδί του οποίου την τιμή θέλετε να λάβετε.
Επιστρέφει μια υπόσχεση που επιλύεται με την τιμή εάν το κλειδί υπάρχει και απορρίπτει το αντίθετο.
set:
Αυτή η μέθοδος αναμένει δύο παραμέτρους:
key – το κλειδί που θέλετε να ορίσετε για την τιμή του
data – η τιμή για το κλειδί
Επιστρέφει μια υπόσχεση που επιλύεται σε μια συμβολοσειρά του τύπου StorageV2ResultInfoή απορρίπτει εάν παρουσιάστηκε σφάλμα.
remove:
Αυτή η μέθοδος αναμένει μία παράμετρο:
key – το κλειδί του ζεύγους που θέλετε να καταργήσετε
Το παρακάτω παράδειγμα δείχνει πώς μπορείτε να ορίσετε και να ανακτήσετε δεδομένα από τον τοπικό χώρο αποθήκευσης χρησιμοποιώντας την έκδοση 2 του API τοπικού χώρου αποθήκευσης:
import IVisualLocalStorageV2Service = powerbi.extensibility.IVisualLocalStorageV2Service;
import StorageV2ResultInfo = powerbi.extensibility.StorageV2ResultInfo;
import PrivilegeStatus = powerbi.PrivilegeStatus;
export class Visual implements IVisual {
// ...
private updateCountName: string = 'updateCount';
private updateCount: number;
private storageV2Service: IVisualLocalStorageV2Service;
constructor(options: VisualConstructorOptions) {
this.storageV2Service = options.host.storageV2Service;
this.init();
}
private async init() {
try {
let status: powerbi.PrivilegeStatus = await this.storageV2Service.status();
if (status === PrivilegeStatus.DisabledByAdmin) {
//handle if the api blocked by admin
} else if (status === PrivilegeStatus.Allowed) {
this.updateCount = await this.storageV2Service.get(this.updateCountName);
}
} catch (error) {
//handle error
}
}
private async updateCount(count: number) {
try {
let status: PrivilegeStatus = await this.storageV2Service.status();
if (status === PrivilegeStatus.Allowed) {
let resultInfo: StorageV2ResultInfo = this.storageV2Service.set(this.updateCountName, count);
if (resultInfo.success) {
//updateCount was set.
} else {
}
}
} catch (error) {
// handle error
}
}
private async removeUpdateCount() {
let status: PrivilegeStatus = await this.storageV2Service.status();
if (status === PrivilegeStatus.Allowed) {
this.storageV2Service.remove(this.updateCountName);
}
}
}
Το όριο τοπικού χώρου αποθήκευσης είναι 1 mb ανά GUID.
Τα δεδομένα μπορούν να κοινοποιούνται μεταξύ απεικονίσεων μόνο με το ίδιο GUID.
Δεν είναι δυνατή η κοινή χρήση δεδομένων με άλλη παρουσία του Power BI Desktop.
Το API τοπικού χώρου αποθήκευσης δεν είναι ενεργοποιημένο από προεπιλογή. Για να το ενεργοποιήσετε για την απεικόνισή σας Power BI, στείλτε μια αίτηση στην υποστήριξη απεικονίσεων Power BI, pbicvsupport@microsoft.com.
Το API τοπικού χώρου αποθήκευσης δεν υποστηρίζει await κατασκευές. Επιτρέπονται μόνο then οι μέθοδοι και catch .
Το κλειδί (η παράμετρος που παρέχεται για ορισμό, λήψη, κατάργηση) έχει τους ακόλουθους περιορισμούς:
Το μήκος πρέπει να περιέχει λιγότερους από 128 χαρακτήρες
Δεν μπορεί να περιέχει τον χαρακτήρα '|'
Εάν το πρόγραμμα περιήγησης βρίσκεται σε λειτουργία κέντρου πληροφοριών, η διαθεσιμότητα τοπικού χώρου αποθήκευσης ενδέχεται να διαφέρει μεταξύ των προγραμμάτων περιήγησης και των ρυθμίσεων του κατόχου του κέντρου πληροφοριών.
Υπάρχουν πολλοί λόγοι για τους οποίους αυτό το API ενδέχεται να μην υποστηρίζεται. Για παράδειγμα, το περιβάλλον μπορεί να μην υποστηρίζεται ή ο τοπικός χώρος αποθήκευσης του προγράμματος περιήγησης να μην είναι διαθέσιμος. Συνιστούμε να ελέγχετε την κατάσταση του API πριν χρησιμοποιήσετε τις μεθόδους set/get/remove . Ο χειρισμός σφαλμάτων είναι σημαντικός καθώς ακόμη και αν υποστηρίζεται το API, ενδέχεται να αποτύχει.