Looker Studio にはレポート用の独自のキャッシュ システムがあります。コネクタの作成時にカスタム キャッシュを実装すると、レポートの作成時間を短縮し、API レート制限を回避することができます。
たとえば、過去の気象データを提供するコネクタを作成しているとします。 過去 7 日間のデータを表示したとしますコネクタの使い勝手がよくなりました 人気がありますが、データの取得元の外部 API のレートは できます。API がデータを更新するのは 1 日 1 回なので、郵便番号によっては、 同じデータを 1 日に何度も取得する必要はありません。こちらの 郵便番号ごとに日次キャッシュを実装できます。
要件
- Firebase Realtime Database。このデータベースへのアクセス権限がない場合は、Google Cloud Platform(GCP)プロジェクトを作成し、スタートガイドの手順に沿って、ご自身の Firebase Realtime Database インスタンスを作成してください。
- Firebase リアルタイムからのデータの読み取りと書き込みを行うための GCP サービス アカウント データベース。
- ソースからデータを取得するコミュニティ コネクタ。
制限事項
- このソリューションは、Looker Studio の高度なサービスでは使用できません。日時 Looker Studio Advanced Services(アプリのコネクタコード)を使用します。 スクリプトはデータにアクセスできません。したがって、データをキャッシュに保存することは 作成できます
- レポートの編集者と閲覧者は、このキャッシュをリセットすることはできません。
解決方法
サービス アカウントを実装する
- Google Cloud プロジェクトでサービス アカウントを作成します。
- このサービス アカウントには、Cloud プロジェクトでの BigQuery へのアクセス権限が必要です。
- 必要な Identity and Access Management(IAM)の役割:
Firebase Admin
- 必要な Identity and Access Management(IAM)の役割:
- JSON ファイルをダウンロードして、サービス アカウント キーを取得します。ファイルに含まれるキーを、コネクタ プロジェクトのスクリプト プロパティに保存します。追加すると、
Apps Script UI では
のようになります。 - Apps Script プロジェクトに Apps Script 向け OAuth2 ライブラリを含めます。
- サービス アカウントに必要な OAuth2 コードを実装します。
Firebase からデータを読み書きするためのコードを実装する
Firebase Realtime Database からデータを読み書きするには、Firebase Database REST API を使用します。以下のコードで、この API にアクセスするために必要なメソッドを実装します。
getData() を実装する
キャッシュを使用しない既存の getData()
コードの構造は、次のようになっています。
getData()
コードでキャッシュを使用するには、次の手順を行います。
- キャッシュするデータの「チャンク」、すなわち「単位」を決定します。
キャッシュにデータの最小単位を保存する一意のキーを作成します。
実装例では、configparams
のzipcode
が使用されています。 使用します。
(省略可)ユーザーごとにキャッシュを作成する場合は、基本キーとユーザー ID を組み合わせた複合キーを作成します。実装例:
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 コネクタは、20 GB 以下の BigQuery テーブルに基づくダッシュボードを、数千人のユーザーに提供しています。このコネクタでは、Firebase Realtime Database と Apps Script キャッシュ サービスを使用する 2 層キャッシュ方式が採用されています。実装方法について詳しくは、コードをご覧ください。