Looker Studio dispone di un proprio sistema di cache per i report. Quando crei puoi implementare una cache personalizzata per velocizzare i report e evitare i limiti di tasso di TAEG.
Ad esempio, stai creando un connettore che fornisce dati meteo storici negli ultimi 7 giorni per un codice postale specifico. Il connettore sta diventando piuttosto molto popolare, ma l'API esterna da cui stai recuperando i dati ha una frequenza rigorosa limiti. L'API aggiorna i dati solo quotidianamente, quindi per un codice postale specifico, non è necessario recuperare gli stessi dati più volte in un giorno. Utilizzo di questo puoi implementare una cache giornaliera per ogni codice postale.
Requisiti
- Un database Firebase Realtime. Se non ne hai accesso, crea un progetto Google Cloud e segui le Guida introduttiva per creare il tuo Firebase Realtime Database.
- Un account di servizio Google Cloud per leggere e scrivere dati da Firebase Realtime Database.
- Un connettore della community che recupera i dati da un'origine.
Limitazioni
- Questa soluzione non può essere utilizzata con i servizi avanzati di Looker Studio. Quando utilizzi i servizi avanzati di Looker Studio, il codice del connettore nelle app Lo script non ha accesso ai dati. Non puoi quindi memorizzare i dati nella cache usando Apps Script.
- Gli editor e i visualizzatori dei report non possono reimpostare questa cache specifica.
Soluzione
Implementare un account di servizio
- Crea un account di servizio nel tuo progetto Google Cloud.
- Assicurati che questo account di servizio disponga dell'accesso a BigQuery nel progetto cloud.
- Ruoli IAM (Identity and Access Management) richiesti:
Firebase Admin
- Ruoli IAM (Identity and Access Management) richiesti:
- Scarica il file JSON per recuperare le chiavi degli account di servizio. Archivia il percorso
contenuti nelle proprietà dello script del progetto connettore. Dopo aver aggiunto il parametro
, dovrebbero avere un aspetto simile a questo nell'interfaccia utente di Apps Script:
- Includi la libreria OAuth2 per Apps Script nel tuo progetto Apps Script.
- Implementa il codice OAuth2 richiesto per l'account di servizio:
Implementa codice per la lettura e la scrittura da Firebase
Utilizzerai l'API REST Database di Firebase per leggere e scrivere su un database Firebase Realtime Database. Il seguente codice implementa i metodi necessari per che accede a questa API.
Implementare getData()
La struttura del codice getData()
esistente senza memorizzazione nella cache dovrebbe avere il seguente aspetto
nel seguente modo:
Per utilizzare la memorizzazione nella cache nel tuo codice getData()
, segui questi passaggi:
- Determina il "chunk" o "unità" di dati che devono essere memorizzati nella cache.
Crea una chiave univoca per archiviare l'unità minima di dati nella cache.
Per l'implementazione di esempio, viene utilizzatozipcode
diconfigparams
come chiave.
Facoltativo: per la cache per utente, crea una chiave composita con la chiave di base e identità utente. Esempio di implementazione:
js var baseKey = getBaseKey(request); var userEmail = Session.getEffectiveUser().getEmail(); var hasheduserEmail = getHashedValue(userEmail); var compositeKey = baseKey + hasheduserEmail;
Se esistono dati memorizzati nella cache, controlla se la cache è aggiornata.
Nell'esempio, i dati memorizzati nella cache per un codice postale specifico vengono salvati con data corrente. Quando i dati vengono recuperati dalla cache, la data della cache è confrontato con la data corrente.var cacheForZipcode = { data: <data being cached>, ymd: <current date in YYYYMMDD format> }
Se i dati memorizzati nella cache non esistono o non sono aggiornati, recupera i dati dall'origine e memorizzarlo nella cache.
Nell'esempio seguente, main.js
include codice getData()
con memorizzazione nella cache
implementate.
Esempio di codice
Risorse aggiuntive
Il connettore UX di Chrome facilita una dashboard basata su un ambiente BigQuery da circa 20 GB per migliaia di utenti. Questo connettore utilizza Firebase Realtime Database insieme al servizio di cache di Apps Script per un approccio alla memorizzazione nella cache a due livelli. Consulta code per i dettagli dell'implementazione.