Looker Studio tiene su propio sistema de caché para los informes. Cuando crees tu conector, puedes implementar una caché personalizada para facilitar la generación de informes más rápidos y evitar los límites de frecuencia de la API.
Por ejemplo, estás creando un conector que proporciona datos históricos del clima de los últimos 7 días para un código postal específico. Tu conector se está volviendo muy popular, pero la API externa de la que recuperas los datos tiene límites de frecuencia estrictos. La API solo actualiza sus datos a diario, por lo que, para un código postal específico, no es necesario recuperar los mismos datos varias veces en un día. Con esta guía de soluciones, puedes implementar una caché diaria para cada código postal.
Requisitos
- Una base de datos de Firebase Realtime Database Si no tienes acceso a uno, crea un proyecto de Google Cloud Platform (GCP) y sigue la guía de Primeros pasos para crear tu propia instancia de Realtime Database de Firebase.
- Una cuenta de servicio de GCP para leer y escribir datos desde Firebase Realtime Database
- Es un conector comunitario que recupera datos de una fuente.
Limitaciones
- Esta solución no se puede usar con los Servicios avanzados de Looker Studio. Cuando usas los Servicios avanzados de Looker Studio, el código de tu conector en Apps Script no tiene acceso a los datos. Por lo tanto, no puedes almacenar en caché los datos con Apps Script.
- Los editores y visualizadores de informes no pueden restablecer esta caché específica.
Solución
Implementa una cuenta de servicio
- Crea una cuenta de servicio en tu proyecto de Google Cloud.
- Asegúrate de que esta cuenta de servicio tenga acceso a BigQuery en el proyecto de Cloud.
- Roles de Identity and Access Management (IAM) requeridos:
Firebase Admin
- Roles de Identity and Access Management (IAM) requeridos:
- Descarga el archivo JSON para obtener las claves de las cuentas de servicio. Almacena el contenido del archivo en las propiedades de la secuencia de comandos de tu proyecto de conector. Después de agregar las claves, debería verse similar a esto en la IU de Apps Script:
- Incluye la biblioteca OAuth2 para Apps Script en tu proyecto de Apps Script.
- Implementa el código de OAuth2 requerido para la cuenta de servicio:
Implementa código para leer y escribir desde Firebase
Usarás la API de REST de Firebase Database para leer y escribir en una base de datos de Firebase Realtime. El siguiente código implementa los métodos necesarios para acceder a esta API.
Implementa getData()
La estructura de tu código getData()
existente sin almacenamiento en caché debería verse de la siguiente manera:
Para usar el almacenamiento en caché en tu código de getData()
, sigue estos pasos:
- Determina la "unidad" o el "fragmento" de datos que se deben almacenar en caché.
Crea una clave única para almacenar la unidad mínima de datos en la caché.
Para la implementación de ejemplo, se usazipcode
deconfigparams
como clave.
Opcional: Para la caché por usuario, crea una clave compuesta con la clave base y la identidad del usuario. Ejemplo de implementación:
js var baseKey = getBaseKey(request); var userEmail = Session.getEffectiveUser().getEmail(); var hasheduserEmail = getHashedValue(userEmail); var compositeKey = baseKey + hasheduserEmail;
Si existen datos almacenados en caché, verifica si la caché está actualizada.
En el ejemplo, los datos almacenados en caché para un código postal específico se guardan con la fecha actual. Cuando se recuperan datos de la caché, se compara la fecha de la caché con la fecha actual.var cacheForZipcode = { data: <data being cached>, ymd: <current date in YYYYMMDD format> }
Si no existen datos almacenados en caché o no están actualizados, recupera los datos de la fuente y almacénalos en la caché.
En el siguiente ejemplo, main.js
incluye código getData()
con almacenamiento en caché implementado.
Ejemplo de código
Recursos adicionales
El Conector de UX de Chrome facilita un panel basado en una tabla de BigQuery de ~20 GB para miles de usuarios. Este conector usa Firebase Realtime Database junto con el servicio de caché de Apps Script para un enfoque de almacenamiento en caché de dos capas. Consulta el código para obtener detalles sobre la implementación.