Data Studio में, रिपोर्ट के लिए अपना कैश मेमोरी सिस्टम होता है. कनेक्टर बनाते समय, कस्टम कैश मेमोरी लागू की जा सकती है. इससे रिपोर्ट तेज़ी से जनरेट होती हैं और एपीआई कॉल की संख्या पर लगी सीमा से बचा जा सकता है.
उदाहरण के लिए, आपको एक ऐसा कनेक्टर बनाना है जो किसी ज़िप कोड के लिए, पिछले सात दिनों का मौसम का डेटा उपलब्ध कराता हो. आपका कनेक्टर काफ़ी लोकप्रिय हो रहा है, लेकिन जिस बाहरी एपीआई से डेटा फ़ेच किया जा रहा है उस पर दर की सीमाएं लागू हैं. यह एपीआई, डेटा को सिर्फ़ हर दिन अपडेट करता है. इसलिए, किसी पिन कोड के लिए एक दिन में एक ही डेटा को कई बार फ़ेच करने की ज़रूरत नहीं होती. इस समाधान गाइड का इस्तेमाल करके, हर पिन कोड के लिए रोज़ाना कैश मेमोरी लागू की जा सकती है.
ज़रूरी शर्तें
- Firebase रीयलटाइम डेटाबेस. अगर आपके पास ऐसा कोई प्रोजेक्ट नहीं है, तो Google Cloud Platform (GCP) प्रोजेक्ट बनाएं. इसके बाद, शुरू करें गाइड में दिए गए निर्देशों का पालन करके, अपना Firebase Realtime Database इंस्टेंस बनाएं.
- Firebase रीयलटाइम डेटाबेस से डेटा पढ़ने और लिखने के लिए, GCP सेवा खाता.
- ऐसा कम्यूनिटी कनेक्टर जो किसी सोर्स से डेटा फ़ेच करता है.
सीमाएं
- इस समाधान का इस्तेमाल [Data Studio की ऐडवांस सेवाएं] के साथ नहीं किया जा सकता. Data Studio की ऐडवांस सेवाओं का इस्तेमाल करने पर, Apps Script में मौजूद आपके कनेक्टर कोड के पास डेटा का ऐक्सेस नहीं होता. इसलिए, Apps Script का इस्तेमाल करके डेटा को कैश नहीं किया जा सकता.
- रिपोर्ट एडिटर और दर्शक, इस कैश मेमोरी को रीसेट नहीं कर सकते.
समाधान
सेवा खाता लागू करना
- अपने Google Cloud प्रोजेक्ट में, एक सेवा खाता बनाएं.
- पक्का करें कि इस सेवा खाते के पास, Cloud प्रोजेक्ट में BigQuery का ऐक्सेस हो.
- पहचान और ऐक्सेस मैनेजमेंट (आईएएम) की ज़रूरी भूमिकाएं:
Firebase Admin
- पहचान और ऐक्सेस मैनेजमेंट (आईएएम) की ज़रूरी भूमिकाएं:
- सेवा खातों की कुंजियां पाने के लिए, JSON फ़ाइल डाउनलोड करें. फ़ाइल के कॉन्टेंट को अपने कनेक्टर प्रोजेक्ट की स्क्रिप्ट प्रॉपर्टी में सेव करें. कुंजियां जोड़ने के बाद, Apps Script के यूज़र इंटरफ़ेस (यूआई) में यह इस तरह दिखनी चाहिए:

- अपने Apps Script प्रोजेक्ट में, Apps Script के लिए OAuth2 लाइब्रेरी को शामिल करें.
- सेवा खाते के लिए ज़रूरी OAuth2 कोड लागू करें:
Firebase से डेटा पढ़ने और लिखने के लिए कोड लागू करना
आपको Firebase Realtime Database में डेटा पढ़ने और लिखने के लिए, Firebase Database REST API का इस्तेमाल करना होगा. नीचे दिए गए कोड में, इस एपीआई को ऐक्सेस करने के लिए ज़रूरी तरीके लागू किए गए हैं.
getData() लागू करना
कैशिंग के बिना, आपके मौजूदा getData() कोड का स्ट्रक्चर ऐसा दिखना चाहिए:
अपने getData() कोड में कैश मेमोरी का इस्तेमाल करने के लिए, यह तरीका अपनाएं:
- डेटा के उस 'चंक' या 'यूनिट' का पता लगाएं जिसे कैश मेमोरी में सेव किया जाना चाहिए.
कैश मेमोरी में डेटा की सबसे छोटी यूनिट को सेव करने के लिए, एक यूनीक कुंजी बनाएं.
लागू करने के उदाहरण के लिए,configparamsसेzipcodeका इस्तेमाल कुंजी के तौर पर किया जा रहा है.
ज़रूरी नहीं: हर उपयोगकर्ता के लिए कैश मेमोरी बनाने के लिए, बेस की और उपयोगकर्ता की पहचान की मदद से कंपोज़िट की बनाएं. लागू करने का उदाहरण:
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() कोड शामिल है. इसमें कैश मेमोरी की सुविधा लागू की गई है.
कोड का उदाहरण
अन्य संसाधन
Chrome UX कनेक्टर, हज़ारों उपयोगकर्ताओं को ~20 जीबी की BigQuery टेबल पर आधारित डैशबोर्ड उपलब्ध कराता है. यह कनेक्टर, दो लेयर वाली कैश मेमोरी की सुविधा के लिए, Firebase Realtime Database के साथ-साथ Apps Script Cache Service का इस्तेमाल करता है. लागू करने से जुड़ी जानकारी के लिए, कोड देखें.