Looker Studio ma własny system pamięci podręcznej dla raportów. Podczas tworzenia konektora możesz wdrożyć niestandardową pamięć podręczną, aby przyspieszyć generowanie raportów i uniknąć limitów żądań interfejsu API.
Na przykład tworzysz łącznik, który udostępnia historyczne dane pogodowe z ostatnich 7 dni dla określonego kodu pocztowego. Twój łącznik staje się coraz bardziej popularny, ale zewnętrzny interfejs API, z którego pobierasz dane, ma ścisłe limity szybkości. Interfejs API aktualizuje dane tylko raz dziennie, więc w przypadku konkretnego kodu pocztowego nie ma potrzeby pobierania tych samych danych wielokrotnie w ciągu dnia. Korzystając z tego przewodnika, możesz wdrożyć codzienną pamięć podręczną dla każdego kodu pocztowego.
Wymagania
- Baza danych czasu rzeczywistego Firebase. Jeśli nie masz dostępu do takiego projektu, utwórz projekt Google Cloud Platform (GCP) i postępuj zgodnie z przewodnikiem Pierwsze kroki, aby utworzyć własną instancję bazy danych czasu rzeczywistego Firebase.
- Konto usługi GCP do odczytywania i zapisywania danych z Bazy danych czasu rzeczywistego Firebase.
- Oprogramowanie sprzęgające utworzone przez społeczność, które pobiera dane ze źródła.
Ograniczenia
- Tego rozwiązania nie można używać z usługami zaawansowanymi Looker Studio. Gdy korzystasz z usług zaawansowanych Looker Studio, kod oprogramowania sprzęgającego w Apps Script nie ma dostępu do danych. Dlatego nie możesz zapisywać danych w pamięci podręcznej za pomocą Apps Script.
- Osoby edytujące i wyświetlające raporty nie mogą zresetować tej konkretnej pamięci podręcznej.
Rozwiązanie
Wdrażanie konta usługi
- Utwórz konto usługi w projekcie Google Cloud.
- Upewnij się, że to konto usługi ma dostęp do BigQuery w projekcie w chmurze.
- Wymagane role Identity and Access Management (IAM):
Firebase Admin
- Wymagane role Identity and Access Management (IAM):
- Pobierz plik JSON, aby uzyskać klucze kont usługi. Przechowuj zawartość pliku we właściwościach skryptu projektu łącznika. Po dodaniu kluczy interfejs Apps Script powinien wyglądać podobnie do tego:
- Dołącz bibliotekę OAuth2 for Apps Script do projektu Apps Script.
- Wdróż wymagany kod OAuth2 na koncie usługi:
Wdróż kod do odczytywania i zapisywania danych w Firebase
Do odczytywania i zapisywania danych w bazie danych czasu rzeczywistego Firebase będziesz używać interfejsu Firebase Database REST API. Poniższy kod implementuje metody potrzebne do uzyskania dostępu do tego interfejsu API.
Implementacja funkcji getData()
Struktura dotychczasowego kodu getData()
bez buforowania powinna wyglądać tak:
Aby używać pamięci podręcznej w kodzie getData()
, wykonaj te czynności:
- Określ „fragment” lub „jednostkę” danych, które mają być buforowane.
Utwórz unikalny klucz do przechowywania w pamięci podręcznej minimalnej jednostki danych.
W przykładowej implementacji jako klucz używana jest wartośćzipcode
zconfigparams
.
Opcjonalnie: w przypadku pamięci podręcznej dla poszczególnych użytkowników utwórz klucz złożony z klucza podstawowego i tożsamości użytkownika. Przykładowa implementacja:
js var baseKey = getBaseKey(request); var userEmail = Session.getEffectiveUser().getEmail(); var hasheduserEmail = getHashedValue(userEmail); var compositeKey = baseKey + hasheduserEmail;
Jeśli dane w pamięci podręcznej istnieją, sprawdź, czy są aktualne.
W tym przykładzie dane w pamięci podręcznej dla określonego kodu pocztowego są zapisywane z bieżącą datą. Gdy dane są pobierane z pamięci podręcznej, data pamięci podręcznej jest sprawdzana pod kątem zgodności z bieżącą datą.var cacheForZipcode = { data: <data being cached>, ymd: <current date in YYYYMMDD format> }
Jeśli dane w pamięci podręcznej nie istnieją lub są nieaktualne, pobierz dane ze źródła i zapisz je w pamięci podręcznej.
W tym przykładzie main.js
zawiera kod getData()
z zastosowanym buforowaniem.
Przykładowy kod
Dodatkowe materiały
Chrome UX Connector udostępnia tysiącom użytkowników panel oparty na tabeli BigQuery o rozmiarze około 20 GB. To oprogramowanie sprzęgające korzysta z Bazy danych czasu rzeczywistego Firebase i usługi pamięci podręcznej Apps Script, co zapewnia dwuwarstwowe podejście do buforowania. Szczegółowe informacje o implementacji znajdziesz w sekcji kod.