Looker Studio ma własny system pamięci podręcznej raportów. Tworząc oprogramowanie sprzęgające, możesz wdrożyć niestandardową pamięć podręczną, aby przyspieszyć generowanie raportów i uniknąć limitów RRSO.
Tworzysz na przykład oprogramowanie sprzęgające, które udostępnia historyczne dane o pogodzie z ostatnich 7 dni dla określonego kodu pocztowego. Twoje oprogramowanie sprzęgające staje się dość popularne, ale zewnętrzny interfejs API, z którego pobierasz dane, ma rygorystyczne ograniczenia szybkości. Dane interfejsu API są aktualizowane tylko codziennie, więc w przypadku konkretnego kodu pocztowego nie trzeba pobierać tych samych danych wiele razy w ciągu jednego dnia. Korzystając z tego przewodnika, możesz wdrożyć codzienną pamięć podręczną dla każdego kodu pocztowego.
Wymagania
- Bazę danych czasu rzeczywistego Firebase. Jeśli nie masz do niego dostępu, utwórz projekt Google Cloud Platform (GCP) i wykonaj czynności opisane w przewodniku 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.
- Społeczność oprogramowanie sprzęgające, które pobiera dane ze źródła.
Ograniczenia
- Tego rozwiązania nie można używać z zaawansowanymi usługami Looker Studio. Gdy używasz usług zaawansowanych Looker Studio, kod oprogramowania sprzęgającego w Apps Script nie ma dostępu do danych. Nie można więc buforować danych przy użyciu Apps Script.
- Edytujący raporty i osoby przeglądające 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.
- Sprawdź, czy to konto usługi ma dostęp do BigQuery w projekcie w chmurze.
- Wymagane role zarządzania tożsamościami i dostępem:
Firebase Admin
- Wymagane role zarządzania tożsamościami i dostępem:
- Pobierz plik JSON, aby uzyskać klucze kont usługi. Przechowuj zawartość pliku we właściwościach skryptu projektu oprogramowania sprzęgającego. Po dodaniu kluczy w interfejsie Apps Script strona powinna wyglądać podobnie do tej:
- Dodaj bibliotekę OAuth2 dla Apps Script do projektu Apps Script.
- Zaimplementuj wymagany kod OAuth2 na koncie usługi:
Implementowanie kodu do odczytu i zapisu z Firebase
Do odczytu i zapisu w bazie danych Firebase Realtime możesz używać interfejsu API typu REST Firebase. Poniższy kod implementuje metody potrzebne do uzyskania dostępu do tego interfejsu API.
Implementacja getData()
Struktura istniejącego kodu getData()
bez zapisywania w pamięci podręcznej powinna wyglądać tak:
Aby w kodzie getData()
korzystać z pamięci podręcznej, wykonaj te czynności:
- Określ fragment lub jednostkę danych, które mają być zapisane w pamięci podręcznej.
Utwórz unikalny klucz do przechowywania minimalnej jednostki danych w pamięci podręcznej.
W przykładowej implementacji kluczem jestzipcode
zconfigparams
.
Opcjonalnie: w przypadku pamięci podręcznej dla poszczególnych użytkowników utwórz klucz złożony z kluczem podstawowym 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 w pamięci podręcznej znajdują się dane, sprawdź, czy jest ona aktualna.
W tym przykładzie dane w pamięci podręcznej dotyczące konkretnego kodu pocztowego są zapisywane z aktualną datą. Gdy dane są pobierane z pamięci podręcznej, data jej przechowywania jest porównywana 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 dane przechowywane w pamięci podręcznej są nieaktualne, pobierz dane ze źródła i zapisz je w pamięci podręcznej.
W poniższym przykładzie main.js
zawiera kod getData()
z zaimplementowanym buforowaniem.
Przykładowy kod
Dodatkowe zasoby
Oprogramowanie sprzęgające Chrome UX umożliwia tysiącom użytkowników dostęp do panelu opartego na 20 GB tabeli BigQuery. To oprogramowanie sprzęgające korzysta z Bazy danych czasu rzeczywistego Firebase i usługi Apps Script Cache, by zapewnić dwuwarstwowe buforowanie. Szczegóły implementacji znajdziesz w kodzie.