In Looker Studio gibt es ein eigenes Cache-System für Berichte. Beim Erstellen Ihrer Connector implementieren, können Sie einen benutzerdefinierten Cache implementieren, um schnellere Berichte und zu vermeiden.
Beispiel: Sie erstellen einen Connector, der historische Wetterdaten bereitstellt. der letzten sieben Tage für eine bestimmte Postleitzahl. Ihr Connector ist mittlerweile ziemlich beliebt, aber die externe API, von der Sie die Daten abrufen, hat eine strenge Rate Beschränkungen. Da die API ihre Daten nur täglich aktualisiert, gibt es für eine bestimmte Postleitzahl dieselben Daten nicht mehrmals am Tag abgerufen werden müssen. Mit diesem Lösungsleitfaden für jede Postleitzahl einen täglichen Cache implementieren.
Voraussetzungen
- Eine Firebase Realtime-Datenbank. Wenn Sie keinen Zugriff darauf haben, erstellen Sie ein Google Cloud Platform-Projekt (GCP) und folgen Sie der Startleitfaden zum Erstellen eines eigenen Firebase Realtime Database-Instanz.
- Ein GCP-Dienstkonto zum Lesen und Schreiben von Daten aus Firebase Realtime Datenbank.
- Community-Connector, der Daten aus einer Quelle abruft.
Beschränkungen
- Diese Lösung kann nicht mit erweiterten Looker Studio-Diensten verwendet werden. Wann? Sie die erweiterten Looker Studio-Dienste, Ihren Connector-Code in Apps, verwenden Das Skript hat keinen Zugriff auf die Daten. Daher können Sie die Daten nicht mit Apps Script.
- Mitbearbeiter und Betrachter des Berichts können diesen Cache nicht zurücksetzen.
Lösung
Dienstkonto implementieren
- Erstellen Sie ein Dienstkonto in Ihrem Google Cloud-Projekt.
- Stellen Sie sicher, dass dieses Dienstkonto im Cloud-Projekt BigQuery-Zugriff hat.
- Erforderliche IAM-Rollen (Identity and Access Management):
Firebase Admin
- Erforderliche IAM-Rollen (Identity and Access Management):
- Laden Sie die JSON-Datei herunter, um die Dienstkontoschlüssel abzurufen. Speichern Sie die
in den Skripteigenschaften Ihres Verbindungsprojekts. Nach dem Hinzufügen der
Schlüssels, sollte in der Apps Script-Benutzeroberfläche so aussehen:
- Binden Sie die Bibliothek OAuth2 for Apps Script in Ihr Apps Script-Projekt ein.
- Implementieren Sie den erforderlichen OAuth2-Code für das Dienstkonto:
Code zum Lesen und Schreiben aus Firebase implementieren
Sie verwenden die REST API von Firebase Database, um in einem Firebase-Projekt Echtzeitdatenbank. Mit dem folgenden Code werden die Methoden implementiert, die für auf diese API zugreifen.
getData() implementieren
Die Struktur Ihres vorhandenen getData()
-Codes ohne Caching sollte so aussehen:
wie hier:
So verwenden Sie Caching in Ihrem getData()
-Code:
- Den „Block“ bestimmen oder 'Einheit' [unit] die im Cache gespeichert werden sollten.
Erstellen Sie einen eindeutigen Schlüssel, um die Mindestdateneinheit im Cache zu speichern.
Für die Beispielimplementierung wirdzipcode
vonconfigparams
verwendet als Schlüssel ein.
Optional: Erstellen Sie für den nutzerspezifischen Cache einen zusammengesetzten Schlüssel mit dem Basisschlüssel und Nutzeridentität. Beispielimplementierung:
js var baseKey = getBaseKey(request); var userEmail = Session.getEffectiveUser().getEmail(); var hasheduserEmail = getHashedValue(userEmail); var compositeKey = baseKey + hasheduserEmail;
Wenn Daten im Cache vorhanden sind, prüfen Sie, ob der Cache aktuell ist.
In diesem Beispiel werden die im Cache gespeicherten Daten für eine bestimmte Postleitzahl mit dem Datum. Wenn Daten aus dem Cache abgerufen werden, ist das Datum für den Cache mit dem aktuellen Datum verglichen.var cacheForZipcode = { data: <data being cached>, ymd: <current date in YYYYMMDD format> }
Daten abrufen, wenn im Cache gespeicherte Daten nicht vorhanden oder nicht aktuell sind aus der Quelle und speichern sie im Cache.
Im folgenden Beispiel enthält main.js
getData()
-Code mit Caching
implementiert.
Beispielcode
Zusätzliche Ressourcen
Mit dem Chrome UX Connector lässt sich ein Dashboard auf der Grundlage von BigQuery mit etwa 20 GB erstellen. für Tausende von Nutzenden bereitstellen. Dieser Connector verwendet die Firebase Realtime Database zusammen mit dem Apps Script Cache Service für einen zweischichtigen Caching-Ansatz. Weitere Informationen finden Sie unter Code.