Looker Studio имеет собственную систему кэширования отчетов. При создании соединителя вы можете реализовать собственный кеш, чтобы ускорить создание отчетов и избежать ограничений по годовой процентной ставке.
Например, вы создаете соединитель, который предоставляет исторические данные о погоде за последние 7 дней для определенного почтового индекса. Ваш коннектор становится довольно популярным, но внешний API, из которого вы получаете данные, имеет строгие ограничения по скорости. API обновляет свои данные только ежедневно, поэтому для определенного почтового индекса нет необходимости получать одни и те же данные несколько раз в течение дня. Используя это руководство по решению, вы можете реализовать ежедневный кэш для каждого почтового индекса.
Требования
- База данных Firebase Realtime . Если у вас нет доступа к нему, создайте проект Google Cloud Platform (GCP) и следуйте руководству по началу работы , чтобы создать собственный экземпляр базы данных Firebase Realtime.
- Учетная запись службы GCP для чтения и записи данных из базы данных Firebase Realtime.
- Соединитель сообщества, который извлекает данные из источника.
Ограничения
- Это решение нельзя использовать с Looker Studio Advanced Services . Когда вы используете Looker Studio Advanced Services , ваш код соединителя в Apps Script не имеет доступа к данным. Таким образом, вы не можете кэшировать данные с помощью Apps Script.
- Редакторы и средства просмотра отчетов не могут сбросить этот конкретный кэш.
Решение
Реализация сервисного аккаунта
- Создайте сервисную учетную запись в своем проекте Google Cloud.
- Убедитесь, что у этого сервисного аккаунта есть доступ к BigQuery в облачном проекте.
- Требуемые роли управления идентификацией и доступом (IAM):
Firebase Admin
- Требуемые роли управления идентификацией и доступом (IAM):
- Загрузите файл JSON, чтобы получить ключи сервисных учетных записей . Сохраните содержимое файла в свойствах сценария проекта соединителя. После добавления ключей в пользовательском интерфейсе Apps Script должно выглядеть примерно так:
- Включите библиотеку OAuth2 for Apps Script в свой проект Apps Script.
- Внедрите необходимый код OAuth2 для учетной записи службы:
Реализация кода для чтения и записи из Firebase
Вы будете использовать REST API базы данных Firebase для чтения и записи в базу данных Firebase Realtime. Следующий код реализует методы, необходимые для доступа к этому API.
Реализуйте getData()
Структура существующего кода getData()
без кэширования должна выглядеть следующим образом:
Чтобы использовать кеширование в коде getData()
, выполните следующие действия:
- Определите «кусок» или «единицу» данных, которые следует кэшировать.
Создайте уникальный ключ для хранения минимальной единицы данных в кеше.
В примере реализации в качестве ключа используетсяzipcode
изconfigparams
.
Необязательно : для индивидуального кэша создайте составной ключ с базовым ключом и идентификатором пользователя . Пример реализации:
js var baseKey = getBaseKey(request); var userEmail = Session.getEffectiveUser().getEmail(); var hasheduserEmail = getHashedValue(userEmail); var compositeKey = baseKey + hasheduserEmail;
Если кэшированные данные существуют, проверьте, свежий ли кэш.
В этом примере кэшированные данные для определенного почтового индекса сохраняются с текущей датой. Когда данные извлекаются из кэша, дата кэша сверяется с текущей датой.var cacheForZipcode = { data: <data being cached>, ymd: <current date in YYYYMMDD format> }
Если кэшированные данные не существуют или кэшированные данные несвежие, извлеките данные из источника и сохраните их в кеше.
В следующем примере main.js
включает код getData()
с реализованным кэшированием.
Пример кода
Дополнительные ресурсы
Chrome UX Connector предоставляет тысячам пользователей панель мониторинга на основе таблицы BigQuery размером около 20 ГБ. Этот соединитель использует базу данных Firebase Realtime вместе со службой кэширования сценариев приложений для двухуровневого подхода к кэшированию. Подробности реализации см. в коде .