Looker Studio 報表有專屬的快取系統。建立連結器時,您可以實作自訂快取,加快報表產生速度,並避免達到 API 速率限制。
舉例來說,您要建立的連接器會提供特定郵遞區號過去 7 天的歷史天氣資料。您的連接器越來越受歡迎,但您從中擷取資料的外部 API 設有嚴格的速率限制。API 每天只會更新一次資料,因此針對特定郵遞區號,一天內不必多次擷取相同資料。使用這份解決方案指南,即可為每個郵遞區號實作每日快取。
需求條件
- Firebase 即時資料庫。如果沒有,請建立 Google Cloud Platform (GCP) 專案,然後按照「開始使用」指南建立自己的 Firebase Realtime Database 執行個體。
- 用來讀取及寫入 Firebase 即時資料庫資料的 GCP 服務帳戶。
- 從來源擷取資料的社群連結器。
限制
- 這項解決方案無法與 Looker Studio 進階服務搭配使用。使用 Looker Studio 進階服務時,Apps Script 中的連結器程式碼無法存取資料。因此您無法使用 Apps Script 快取資料。
- 報表編輯者和檢視者無法重設這個特定快取。
解決方案
實作服務帳戶
- 在 Google Cloud 專案中建立服務帳戶。
- 請確認這個服務帳戶在雲端專案中具有 BigQuery 存取權。
- 必要的身分與存取權管理 (IAM) 角色:
Firebase Admin
- 必要的身分與存取權管理 (IAM) 角色:
- 下載 JSON 檔案,取得服務帳戶金鑰。將檔案內容儲存在連接器專案的指令碼屬性中。新增金鑰後,Apps Script UI 應會顯示類似下列的內容:
- 在 Apps Script 專案中加入 OAuth2 for Apps Script 程式庫。
- 為服務帳戶實作必要的 OAuth2 程式碼:
導入程式碼,以便從 Firebase 讀取及寫入資料
您將使用 Firebase Database REST API,在 Firebase 即時資料庫中讀取及寫入資料。下列程式碼會實作存取這個 API 所需的方法。
實作 getData()
不含快取的現有 getData()
程式碼結構應如下所示:
如要在 getData()
程式碼中使用快取,請按照下列步驟操作:
- 判斷應快取的資料「區塊」或「單位」。
建立專屬鍵,在快取中儲存最小資料單位。
以範例實作方式來說,configparams
中的zipcode
會做為金鑰。
選用:如要使用個別使用者的快取,請使用基本金鑰和使用者身分建立複合鍵。導入範例:
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 可根據約 20 GB 的 BigQuery 表格,為數千名使用者提供資訊主頁。這個連接器會使用 Firebase 即時資料庫和 Apps Script 快取服務,採取雙層快取方法。如需導入詳情,請參閱程式碼。