Looker Studio ha un proprio sistema di cache per i report. Quando crei il connettore, puoi implementare una cache personalizzata per facilitare la creazione di report più veloci ed evitare i limiti di frequenza delle API.
Ad esempio, stai creando un connettore che fornisce dati meteo storici degli ultimi 7 giorni per un codice postale specifico. Il tuo connettore sta diventando piuttosto popolare, ma l'API esterna da cui recuperi i dati ha limiti di frequenza rigidi. L'API aggiorna i dati solo una volta al giorno, quindi per un codice postale specifico non è necessario recuperare gli stessi dati più volte al giorno. Utilizzando questa guida alla soluzione, puoi implementare una cache giornaliera per ogni codice postale.
Requisiti
- Un database Firebase Realtime. Se non ne hai accesso, crea un progetto Google Cloud (GCP) e segui la guida Inizia per creare la tua istanza di Firebase Realtime Database.
- Un service account 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 in Apps Script non ha accesso ai dati. Pertanto, non puoi memorizzare nella cache i dati utilizzando Apps Script.
- Gli editor e i visualizzatori dei report non possono reimpostare questa cache specifica.
Soluzione
Implementare un service account
- Crea un service account nel tuo progetto Google Cloud.
- Assicurati che questo service account abbia 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 ottenere le chiavi degli account di servizio. Memorizza i contenuti del file nelle proprietà dello script del progetto del connettore. Dopo aver aggiunto le
chiavi, l'interfaccia utente di Apps Script dovrebbe avere un aspetto simile a questo:
- Includi la libreria OAuth2 per Apps Script nel tuo progetto Apps Script.
- Implementa il codice OAuth2 richiesto per l'account di servizio:
Implementa il codice per leggere e scrivere da Firebase
Utilizzerai l'API REST di Firebase Database per leggere e scrivere in un database Firebase Realtime. Il seguente codice implementa i metodi necessari per accedere a questa API.
Implementa getData()
La struttura del codice getData()
esistente senza memorizzazione nella cache dovrebbe essere
simile a questa:
Per utilizzare la memorizzazione nella cache nel codice getData()
:
- Determina il "blocco" o l'"unità" di dati da memorizzare nella cache.
Crea una chiave univoca per archiviare l'unità minima di dati nella cache.
Per l'implementazione di esempio, viene utilizzatozipcode
daconfigparams
come chiave.
(Facoltativo): per la cache per utente, crea una chiave composita con la chiave di base e l'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, verifica che la cache sia aggiornata.
Nell'esempio, i dati memorizzati nella cache per un codice postale specifico vengono salvati con la data corrente. Quando i dati vengono recuperati dalla cache, la data della cache viene confrontata 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 memorizzali nella cache.
Nel seguente esempio, main.js
include il codice getData()
con la memorizzazione nella cache
implementata.
Esempio di codice
Risorse aggiuntive
Chrome UX Connector facilita una dashboard basata su una tabella BigQuery di circa 20 GB per migliaia di utenti. Questo connettore utilizza Firebase Realtime Database insieme al servizio di cache di Apps Script per un approccio di memorizzazione nella cache a due livelli. Per informazioni dettagliate sull'implementazione, consulta il codice.