Looker Studio có hệ thống 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 bị hạn chế lãi suất hằng năm.
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 trong quá khứ 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ó tỷ lệ nghiêm ngặt của Google. API chỉ cập nhật dữ liệu hằng ngày, nên đối với một mã bưu chính cụ thể, bạn không cần phải tìm nạp cùng một dữ liệu nhiều lần trong một ngày. Đang dùng hướng dẫn giải pháp, bạn có thể triển khai bộ nhớ đệm hằng ngày cho mỗi mã bưu chính.
Yêu cầu
- 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, hãy tạo một Google Cloud Platform (GCP) và tuân thủ Hướng dẫn Bắt đầu để tạo Firebase của riêng bạn Phiên bản Cơ sở dữ liệu theo thời gian thực.
- Tài khoản dịch vụ GCP để đọc và ghi dữ liệu từ Firebase Realtime Cơ sở dữ liệu.
- Trình kết nối cộng đồng tìm nạp dữ liệu từ một nguồn.
Các điểm hạn chế
- Không thể dùng giải pháp này với Các dịch vụ nâng cao của Looker Studio. Thời gian 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 Ứng dụng Tập lệnh 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 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 trên Google Cloud.
- Đả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ò bắt buộc về quản lý danh tính và quyền truy cập (IAM):
Firebase Admin
- Các vai trò bắt buộc về quản lý danh tính và quyền truy cập (IAM):
- Tải tệp JSON xuống để lấy khoá tài khoản dịch vụ. Lưu trữ
nội dung trong thuộc tính tập lệnh của dự án trình kết nối. Sau khi thêm thuộc tính
khoá, sẽ có dạng như trong giao diện người dùng Apps Script:
- Đưa thư viện OAuth2 cho Apps Script vào dự án Apps Script.
- 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ẽ dùng API REST của cơ sở dữ liệu Firebase để đọc và ghi vào Firebase Cơ sở dữ liệu theo thời gian thực. Mã sau đây triển khai các phương thức cần thiết để truy cập API này.
Triển khai phương thức getData()
Cấu trúc cho mã getData()
hiện tại của bạn mà không cần lưu vào bộ nhớ đệm sẽ phải giố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 "đoạn" hoặc "unit" dữ liệu cần được lưu vào bộ nhớ đệm.
Tạo một khoá duy nhất để lưu đơn vị dữ liệu tối thiểu trong bộ nhớ đệm.
Trong ví dụ này về cách triển khai,zipcode
trongconfigparams
đang được sử 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 có 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ó được làm 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ể được lưu bằng thuộc tính 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ẽ là được kiểm tra so với 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 khỏi nguồn và lưu trữ trong bộ nhớ đệm.
Trong ví dụ sau, main.js
chứa mã getData()
có chức năng lưu vào bộ nhớ đệm
triển khai.
Mã mẫu
Tài nguyên khác
Trình kết nối trải nghiệm người dùng của Chrome hỗ trợ trang tổng quan dựa trên BigQuery khoảng 20 GB bảng tới 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ụ bộ nhớ đệm của Apps Script để sử dụng phương pháp lưu vào bộ nhớ đệm hai lớp. Xem mã để biết chi tiết triển khai.