Looker Studio có hệ thống lưu vào bộ nhớ đệm riêng cho báo cáo. Khi tạo trình kết nối, bạn có thể triển khai bộ nhớ đệm tuỳ chỉnh để tạo báo cáo nhanh hơn và tránh giới hạn về tốc độ APR.
Ví dụ: bạn đang tạo một trình kết nối cung cấp dữ liệu thời tiết trước đây trong 7 ngày qua cho một mã bưu chính cụ thể. Trình kết nối của bạn đang trở nên khá phổ biến nhưng API bên ngoài mà bạn đang tìm nạp dữ liệu có giới hạn nghiêm ngặt về tốc độ. API này chỉ cập nhật dữ liệu hằng ngày, vì vậy, đối với một mã bưu chính cụ thể, bạn không cần tìm nạp cùng một dữ liệu nhiều lần trong một ngày. Khi sử dụng hướng dẫn về giải pháp này, bạn có thể triển khai bộ nhớ đệm hằng ngày cho từng mã bưu chính.
Yêu cầu
- Một Cơ sở dữ liệu theo thời gian thực của Firebase. Nếu bạn không có quyền truy cập vào một dự án, hãy tạo một dự án Google Cloud Platform (GCP) rồi làm theo hướng dẫn Bắt đầu để tạo phiên bản Cơ sở dữ liệu theo thời gian thực Firebase của riêng bạn.
- Một tài khoản dịch vụ GCP để đọc và ghi dữ liệu từ Cơ sở dữ liệu thời gian thực của Firebase.
- Một Trình kết nối cộng đồng lấy dữ liệu từ một nguồn.
Các điểm hạn chế
- Bạn không thể sử dụng giải pháp này với Dịch vụ nâng cao của Looker Studio. Khi bạn sử dụng Dịch vụ nâng cao của Looker Studio, mã trình kết nối của bạn trong Apps Script sẽ không có quyền truy cập vào dữ liệu. Do đó, bạn không thể lưu dữ liệu vào bộ nhớ đệm bằng Apps Script.
- Người chỉnh sửa và người xem báo cáo không thể đặt lại bộ nhớ đệm cụ thể này.
Giải pháp
Triển khai tài khoản dịch vụ
- Tạo một tài khoản dịch vụ trong dự án Google Cloud của bạn.
- Đảm bảo tài khoản dịch vụ này có quyền truy cập vào BigQuery trong dự án trên đám mây.
- Các vai trò Quản lý danh tính và quyền truy cập (IAM) bắt buộc:
Firebase Admin
- Các vai trò Quản lý danh tính và quyền truy cập (IAM) bắt buộc:
- Tải tệp JSON xuống để lấy khoá tài khoản dịch vụ. Lưu trữ nội dung của tệp trong thuộc tính tập lệnh của dự án trình kết nối. Sau khi thêm các khoá, giao diện người dùng của Apps Script sẽ có dạng như sau:
- Đưa thư viện OAuth2 cho Apps Script vào dự án Apps Script của bạn.
- Triển khai mã OAuth2 bắt buộc cho tài khoản dịch vụ:
Triển khai mã để đọc và ghi từ Firebase
Bạn sẽ sử dụng Firebase Database REST API để đọc và ghi vào Cơ sở dữ liệu theo thời gian thực của Firebase. Đoạn mã sau đây triển khai các phương thức cần thiết để truy cập vào API này.
Triển khai getData()
Cấu trúc cho mã getData()
hiện có của bạn mà không có tính năng lưu vào bộ nhớ đệm sẽ có dạng như sau:
Để sử dụng tính năng lưu vào bộ nhớ đệm trong mã getData()
, hãy làm theo các bước sau:
- Xác định "khối" hoặc "đơn vị" dữ liệu cần được lưu vào bộ nhớ đệm.
Tạo một khoá duy nhất để lưu trữ đơn vị dữ liệu tối thiểu trong bộ nhớ đệm.
Đối với ví dụ về cách triển khai,zipcode
từconfigparams
đang được dùng làm khoá.
Không bắt buộc: Đối với bộ nhớ đệm cho mỗi người dùng, hãy tạo một khoá kết hợp bằng khoá cơ sở và danh tính người dùng. Ví dụ về cách triển khai:
js var baseKey = getBaseKey(request); var userEmail = Session.getEffectiveUser().getEmail(); var hasheduserEmail = getHashedValue(userEmail); var compositeKey = baseKey + hasheduserEmail;
Nếu có dữ liệu được lưu vào bộ nhớ đệm, hãy kiểm tra xem bộ nhớ đệm có mới hay không.
Trong ví dụ này, dữ liệu được lưu vào bộ nhớ đệm cho một mã bưu chính cụ thể sẽ được lưu cùng với ngày hiện tại. Khi dữ liệu được truy xuất từ bộ nhớ đệm, ngày của bộ nhớ đệm sẽ được kiểm tra dựa trên ngày hiện tại.var cacheForZipcode = { data: <data being cached>, ymd: <current date in YYYYMMDD format> }
Nếu dữ liệu được lưu vào bộ nhớ đệm không tồn tại hoặc dữ liệu được lưu vào bộ nhớ đệm không mới, hãy tìm nạp dữ liệu từ nguồn và lưu trữ dữ liệu đó trong bộ nhớ đệm.
Trong ví dụ sau, main.js
bao gồm mã getData()
có bộ nhớ đệm được triển khai.
Mã mẫu
Tài nguyên khác
Chrome UX Connector hỗ trợ một trang tổng quan dựa trên bảng BigQuery có dung lượng khoảng 20 GB cho hàng nghìn người dùng. Trình kết nối này sử dụng Cơ sở dữ liệu theo thời gian thực của Firebase cùng với Dịch vụ lưu vào bộ nhớ đệm của Apps Script cho phương pháp lưu vào bộ nhớ đệm hai lớp. Hãy xem mã để biết thông tin chi tiết về cách triển khai.