अगर आपका कनेक्टर, BigQuery से डेटा फ़ेच करता है, तो कनेक्टर को ऑप्टिमाइज़ करने के लिए, Looker Studio की ऐडवांस सेवाओं का इस्तेमाल किया जा सकता है. BigQuery API को सीधे तौर पर कॉल करने के बजाय, क्वेरी कॉन्फ़िगरेशन दें. इसके बाद, Looker Studio आपके लिए डेटा और स्कीमा फ़ेच करेगा.
यह कैसे काम करता है
Looker Studio की ऐडवांस सेवाओं का इस्तेमाल करने वाले कम्यूनिटी कनेक्टर, सामान्य कनेक्टर की तरह ही काम करते हैं.
इन दोनों फ़ंक्शन के बीच मुख्य अंतर यह है कि getSchema() और/या getData() फ़ंक्शन को लागू करने पर, अलग-अलग जवाब मिलते हैं. ये फ़ंक्शन, स्कीमा और डेटा फ़ेच करने और उन्हें वापस लाने के बजाय, क्वेरी कॉन्फ़िगरेशन दिखा सकते हैं.
क्वेरी कॉन्फ़िगरेशन वापस मिलने पर, Looker Studio सीधे तौर पर दिए गए क्वेरी कॉन्फ़िगरेशन के आधार पर स्कीमा और/या डेटा फ़ेच करेगा.
कनेक्टर डेवलप करना
Looker Studio की ऐडवांस सेवाओं का इस्तेमाल करने वाले कम्यूनिटी कनेक्टर, सामान्य कनेक्टर की तरह ही होते हैं. हालांकि, इनमें दो अपवाद होते हैं.
मेनिफ़ेस्ट रेफ़रंस
मेनिफ़ेस्ट में, इन प्रॉपर्टी को true पर सेट करें.
getSchema()के लिए, प्रॉपर्टीdataStudio.advancedServices.schemaका इस्तेमाल करेंgetData()के लिए, प्रॉपर्टीdataStudio.advancedServices.dataका इस्तेमाल करें
true वैल्यू से पता चलता है कि संबंधित फ़ंक्शन के लिए, आपका कनेक्टर स्टैंडर्ड जवाब के बजाय क्वेरी कॉन्फ़िगरेशन दिखाएगा.
स्टैंडर्ड getSchema() रिस्पॉन्स का इस्तेमाल करके, अपना स्कीमा तय करने के लिए, मेनिफ़ेस्ट में dataStudio.advancedServices.schema को false पर सेट करें या इस प्रॉपर्टी को छोड़ दें. इसकी ज़रूरत तब होती है, जब आपके स्कीमा के सभी फ़ील्ड को एक BigQuery क्वेरी से नहीं दिखाया जा सकता. उदाहरण के लिए, जब आपको मल्टी-स्कीमा कनेक्टर बनाना हो.
BigQuery क्वेरी, अनुमति पा चुके उपयोगकर्ता की ओर से लागू की जाएगी. इसलिए, आपको अनुमति का अनुरोध करने के लिए, मेनिफ़ेस्ट में BigQuery OAuth स्कोप ("https://www.googleapis.com/auth/bigquery.readonly") भी शामिल करना होगा.
यहां एक कनेक्टर मेनिफ़ेस्ट दिया गया है. इसमें, BigQuery से कनेक्ट करने के लिए, अनुमति पा चुके उपयोगकर्ता के क्रेडेंशियल का इस्तेमाल किया गया है:
{
"dataStudio": {
"name": "BigQuery Public Dataset Demo",
"logoUrl": "https://www.gstatic.com/images/branding/product/1x/data_connector_48dp.png",
"company": "Looker DevRel",
"companyUrl": "https://developers.google.com/looker-studio/",
"addOnUrl": "https://developers.google.com/looker-studio/",
"supportUrl": "https://developers.google.com/looker-studio/",
"description": "Use BigQuery public dataset with Looker Studio's Advanced Services.",
"advancedServices": {
"schema": true,
"data": true
}
},
"oauthScopes": ["https://www.googleapis.com/auth/bigquery.readonly"]
}
अगर BigQuery को ऐक्सेस करने के लिए सेवा खाते का इस्तेमाल किया जा रहा है, तो मेनिफ़ेस्ट में bigquery.readonly OAuth स्कोप की ज़रूरत नहीं होती. हालांकि, स्कोप को सेवा खाते के लिए स्कोप की सूची में जोड़ा जाना चाहिए.
getData और getSchema के बारे में जानकारी
Looker Studio की ऐडवांस सेवाओं का इस्तेमाल करने वाले कनेक्टर, getSchema() और/या getData() के लिए क्वेरी कॉन्फ़िगरेशन ऑब्जेक्ट दिखाते हैं. डेटा सोर्स के आधार पर, इस कॉन्फ़िगरेशन के लिए अतिरिक्त प्रॉपर्टी की ज़रूरत पड़ सकती है.
इस कॉन्फ़िगरेशन ऑब्जेक्ट को बनाने के लिए, DataStudioApp सेवा का इस्तेमाल करने का उदाहरण यहां दिया गया है:
var bqTypes = DataStudioApp.createCommunityConnector().BigQueryParameterType;
var configuration = DataStudioApp.createCommunityConnector().newBigQueryConfig()
// BigQuery billing project's Id.
.setBillingProjectId('billingProjectId')
// The query that will be executed.
.setQuery('myQueryString')
// Set to `true` to use StandardSQL.
.setUseStandardSql(true)
// The accessToken used for service execution.
.setAccessToken('myAccessToken')
// Adding a `STRING` query parameter. Other supported types are `BOOL`,
// `FLOAT64`, and `INT64`.
.addQueryParameter('myUrlParameterName', bqTypes.STRING, 'myUrlParameterValue')
.build();
getSchema() और getData() फ़ंक्शन का उदाहरण
var sqlString = "" +
"SELECT " +
" _TABLE_SUFFIX AS yyyymm, " +
" ROUND(SUM(IF(fcp.start < @fast_fcp, fcp.density, 0)), 4) AS fast_fcp, " +
" ROUND(SUM(IF(fcp.start >= 1000 AND fcp.start < 3000, fcp.density, 0)), 4) AS avg_fcp, " +
" ROUND(SUM(IF(fcp.start >= 3000, fcp.density, 0)), 4) AS slow_fcp " +
"FROM " +
" `chrome-ux-report.all.*`, " +
" UNNEST(first_contentful_paint.histogram.bin) AS fcp " +
"WHERE " +
" origin = @url " +
"GROUP BY " +
" yyyymm " +
"ORDER BY " +
" yyyymm ";
function getQueryConfig(request) {
var url = (request.configParams && request.configParams.url);
var projectId = (request.configParams && request.configParams.projectId);
var authToken = ScriptApp.getOAuthToken();
return DataStudioApp.createCommunityConnector().newBigQueryConfig()
.setAccessToken(authToken)
.setUseStandardSql(true)
.setBillingProjectId(projectId)
.setQuery(sqlString)
.addQueryParameter('url', bqTypes.STRING, url)
.addQueryParameter('fast_fcp', bqTypes.INT64, '' + 1000)
.build();
}
function getSchema(request) {
return getQueryConfig(request);
}
function getData(request) {
return getQueryConfig(request)
}