Looker Studio possède son propre système de cache pour les rapports. Lorsque vous créez votre connecteur, vous pouvez implémenter un cache personnalisé pour accélérer les rapports et éviter les limites de fréquence de l'APR.
Par exemple, vous créez un connecteur qui fournit des données météorologiques historiques pour les sept derniers jours pour un code postal spécifique. Votre connecteur devient très populaire, mais l'API externe à partir de laquelle vous récupérez les données est soumise à des limites de fréquence strictes. L'API ne met à jour ses données qu'une fois par jour. Il n'est donc pas nécessaire de récupérer les mêmes données plusieurs fois par jour pour un code postal spécifique. Ce guide de solutions vous permet d'implémenter un cache quotidien pour chaque code postal.
Conditions requises
- Une base de données Firebase Realtime Database. Si vous n'y avez pas accès, créez un projet Google Cloud Platform (GCP) et suivez le guide Premiers pas pour créer votre propre instance Firebase Realtime Database.
- Un compte de service GCP pour lire et écrire des données à partir de Firebase Realtime Database.
- Connecteur de communauté qui récupère des données à partir d'une source.
Limites
- Cette solution ne peut pas être utilisée avec les services avancés Looker Studio. Lorsque vous utilisez les services avancés Looker Studio, votre code de connecteur dans Apps Script n'a pas accès aux données. Vous ne pouvez donc pas mettre en cache les données à l'aide d'Apps Script.
- Les éditeurs et les lecteurs de rapports ne peuvent pas réinitialiser ce cache spécifique.
Solution
Implémenter un compte de service
- Créez un compte de service dans votre projet Google Cloud.
- Assurez-vous que ce compte de service a accès à BigQuery dans le projet cloud.
- Rôles IAM (Identity and Access Management) requis :
Firebase Admin
- Rôles IAM (Identity and Access Management) requis :
- Téléchargez le fichier JSON pour obtenir les clés des comptes de service. Stockez le contenu du fichier dans les propriétés de script de votre projet de connecteur. Une fois les clés ajoutées, l'interface utilisateur Apps Script devrait ressembler à ceci :
- Incluez la bibliothèque OAuth2 for Apps Script dans votre projet Apps Script.
- Implémentez le code OAuth2 requis pour le compte de service :
Implémenter du code pour lire et écrire des données depuis Firebase
Vous utiliserez l'API REST Firebase Database pour lire et écrire dans une base de données Firebase Realtime. Le code suivant implémente les méthodes nécessaires pour accéder à cette API.
Implémenter getData()
La structure de votre code getData()
existant sans mise en cache devrait se présenter comme suit :
Pour utiliser la mise en cache dans votre code getData()
, procédez comme suit :
- Déterminez le "bloc" ou l'"unité" de données à mettre en cache.
Créez une clé unique pour stocker l'unité de données minimale dans le cache.
Pour l'exemple d'implémentation,zipcode
deconfigparams
est utilisé comme clé.
Facultatif : Pour le cache par utilisateur, créez une clé composite avec la clé de base et l'identité de l'utilisateur. Exemple d'implémentation :
js var baseKey = getBaseKey(request); var userEmail = Session.getEffectiveUser().getEmail(); var hasheduserEmail = getHashedValue(userEmail); var compositeKey = baseKey + hasheduserEmail;
Si des données mises en cache existent, vérifiez si le cache est à jour.
Dans l'exemple, les données mises en cache pour un code postal spécifique sont enregistrées avec la date actuelle. Lorsque des données sont récupérées à partir du cache, la date du cache est comparée à la date actuelle.var cacheForZipcode = { data: <data being cached>, ymd: <current date in YYYYMMDD format> }
Si les données mises en cache n'existent pas ou ne sont pas à jour, récupérez les données à partir de la source et stockez-les dans le cache.
Dans l'exemple suivant, main.js
inclut le code getData()
avec la mise en cache implémentée.
Exemple de code
Ressources supplémentaires
Le connecteur Chrome UX facilite la création d'un tableau de bord basé sur une table BigQuery d'environ 20 Go pour des milliers d'utilisateurs. Ce connecteur utilise Firebase Realtime Database ainsi que le service de cache Apps Script pour une approche de mise en cache à deux niveaux. Pour en savoir plus sur l'implémentation, consultez le code.