Looker Studio มีระบบแคชของตัวเองสำหรับรายงาน เมื่อสร้างตัวเชื่อมต่อ คุณสามารถใช้แคชที่กำหนดเองเพื่อให้รายงานเร็วขึ้นและหลีกเลี่ยงการจำกัดอัตรา APR ได้
เช่น คุณกำลังสร้างเครื่องมือเชื่อมต่อที่ให้ข้อมูลสภาพอากาศย้อนหลัง ในช่วง 7 วันที่ผ่านมาสำหรับรหัสไปรษณีย์ที่เฉพาะเจาะจง เครื่องมือเชื่อมต่อของคุณเริ่มได้รับความนิยมมากขึ้น แต่ API ภายนอกที่คุณดึงข้อมูลมามีขีดจำกัดอัตราที่เข้มงวด API จะอัปเดตข้อมูลวันละครั้งเท่านั้น ดังนั้นสำหรับรหัสไปรษณีย์ที่เฉพาะเจาะจง คุณจึงไม่จำเป็นต้องดึงข้อมูลเดียวกันหลายครั้งภายในวันเดียว คุณสามารถใช้คู่มือโซลูชันนี้เพื่อติดตั้งใช้งานแคชรายวันสำหรับรหัสไปรษณีย์แต่ละรหัส
ข้อกำหนด
- ฐานข้อมูลเรียลไทม์ของ Firebase หากไม่มีสิทธิ์เข้าถึง ให้สร้างโปรเจ็กต์ Google Cloud Platform (GCP) แล้วทำตามคู่มือเริ่มต้นใช้งานเพื่อสร้างอินสแตนซ์ Firebase Realtime Database ของคุณเอง
- บัญชีบริการ GCP เพื่ออ่านและเขียนข้อมูลจากฐานข้อมูลเรียลไทม์ของ Firebase
- เครื่องมือเชื่อมต่อชุมชนที่ดึงข้อมูลจากแหล่งที่มา
ข้อจำกัด
- โซลูชันนี้ใช้กับบริการขั้นสูงของ Looker Studio ไม่ได้ เมื่อคุณใช้บริการขั้นสูงของ Looker Studio โค้ดตัวเชื่อมต่อใน Apps Script จะไม่มีสิทธิ์เข้าถึงข้อมูล ดังนั้นคุณจึงแคชข้อมูลโดยใช้ Apps Script ไม่ได้
- ผู้แก้ไขรายงานและผู้ดูจะรีเซ็ตแคชนี้ไม่ได้
โซลูชัน
ติดตั้งใช้งานบัญชีบริการ
- สร้างบัญชีบริการในโปรเจ็กต์ Google Cloud
- ตรวจสอบว่าบัญชีบริการนี้มีสิทธิ์เข้าถึง BigQuery ในโปรเจ็กต์ระบบคลาวด์
- บทบาท Identity and Access Management (IAM) ที่จำเป็น:
Firebase Admin
- บทบาท Identity and Access Management (IAM) ที่จำเป็น:
- ดาวน์โหลดไฟล์ JSON เพื่อรับคีย์บัญชีบริการ จัดเก็บเนื้อหาของไฟล์ในพร็อพเพอร์ตี้ของสคริปต์ของโปรเจ็กต์ตัวเชื่อมต่อ หลังจากเพิ่มคีย์แล้ว ควรมีลักษณะคล้ายกับตัวอย่างนี้ใน UI ของ Apps Script
- รวมไลบรารี OAuth2 สำหรับ Apps Script ไว้ในโปรเจ็กต์ Apps Script
- ใช้โค้ด OAuth2 ที่จำเป็นสำหรับบัญชีบริการ
ติดตั้งใช้งานโค้ดเพื่ออ่านและเขียนจาก Firebase
คุณจะใช้ Firebase Database REST API เพื่ออ่านและเขียนไปยังฐานข้อมูลเรียลไทม์ของ Firebase โค้ดต่อไปนี้จะใช้เมธอดที่จำเป็นสำหรับ การเข้าถึง API นี้
ใช้ getData()
โครงสร้างสำหรับโค้ด getData()
ที่มีอยู่โดยไม่มีการแคชควรมีลักษณะดังนี้
หากต้องการใช้แคชในโค้ด getData()
ให้ทำตามขั้นตอนต่อไปนี้
- กำหนด "กลุ่ม" หรือ "หน่วย" ของข้อมูลที่ควรแคช
สร้างคีย์ที่ไม่ซ้ำกันเพื่อจัดเก็บหน่วยข้อมูลขั้นต่ำในแคช
สําหรับตัวอย่างการใช้งาน เราใช้zipcode
จากconfigparams
เป็นคีย์
ไม่บังคับ: สำหรับแคชต่อผู้ใช้ ให้สร้างคีย์แบบรวมกับคีย์ฐานและ ข้อมูลประจำตัวผู้ใช้ ตัวอย่างการใช้งาน:
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()
ที่ใช้การแคช
โค้ดตัวอย่าง
แหล่งข้อมูลเพิ่มเติม
ตัวเชื่อมต่อ UX ของ Chrome ช่วยให้แดชบอร์ดทำงานได้โดยอิงตามตาราง BigQuery ขนาดประมาณ 20 GB สำหรับผู้ใช้หลายพันราย เครื่องมือเชื่อมต่อนี้ใช้ฐานข้อมูลเรียลไทม์ของ Firebase ร่วมกับบริการแคชของ Apps Script สำหรับแนวทางการแคช 2 ชั้น ดูรายละเอียดการติดตั้งได้ที่โค้ด