Looker Studio tiene su propio sistema de caché para los informes. Cuando crees tu puedes implementar una caché personalizada para generar informes y evitar los límites de la TAE.
Por ejemplo, estás creando un conector que proporciona datos meteorológicos históricos de los últimos 7 días para un código postal específico. Tu conector es cada vez más popular, pero la API externa de la que recuperas datos tiene una tasa estricta límites. La API solo actualiza los datos diariamente; por lo tanto, para un código postal específico, hay no es necesario recuperar los mismos datos varias veces durante un día. Uso puedes implementar una caché diaria para cada código postal.
Requisitos
- Una base de datos de Firebase Realtime Si no tienes acceso a una, crea una proyecto de Google Cloud Platform (GCP) y sigue las Guía de primeros pasos para crear tu propio Firebase Instancia de Realtime Database.
- Una cuenta de servicio de GCP para leer y escribir datos desde Firebase Realtime Base de datos.
- Un conector de la comunidad que recupera datos de una fuente.
Limitaciones
- Esta solución no se puede usar con los Servicios avanzados de Looker Studio. Cuándo debes usar los Servicios avanzados de Looker Studio, tu código de conector en Apps La secuencia de comandos no tiene acceso a los datos. Por lo tanto, no puedes almacenar en caché los datos con Apps Script.
- Los editores y lectores de informes no pueden restablecer esta caché específica.
Solución
Cómo implementar 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 la nube.
- Roles de Identity and Access Management (IAM) obligatorios:
Firebase Admin
- Roles de Identity and Access Management (IAM) obligatorios:
- Descarga el archivo JSON para obtener las claves de las cuentas de servicio. Guarda el espacio
contenido en las propiedades de secuencia de comandos del proyecto de conector. Después de agregar
claves, debería verse similar a lo siguiente en la IU de Apps Script:
- Incluye la biblioteca de OAuth2 para Apps Script en tu proyecto de Apps Script.
- Implementa el código de OAuth2 necesario 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 instancia de Firebase Realtime Database El siguiente código implementa los métodos necesarios para antes de acceder a esta API.
Cómo implementar getData()
La estructura de tu código getData()
existente sin almacenamiento en caché debería verse
así:
Para usar el almacenamiento en caché en tu código getData()
, sigue estos pasos:
- Determina el "fragmento" o 'unidad' de datos que deben almacenarse 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 la clave.
Opcional: Para la caché por usuario, crea una clave compuesta con la clave base y 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 el fecha actual. Cuando se recuperan datos de la caché, la fecha de esta es con la fecha actual.var cacheForZipcode = { data: <data being cached>, ymd: <current date in YYYYMMDD format> }
Si los datos almacenados en caché no existen o no están actualizados, recupera los datos. de la fuente y almacenarlos en caché.
En el siguiente ejemplo, main.js
incluye código getData()
con almacenamiento en caché.
cuando se implementa un plan.
Ejemplo de código
Recursos adicionales
El conector de Chrome UX facilita la creación de un panel basado en BigQuery de ~20 GB. a 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 code para conocer los detalles de la implementación.