Looker Studio की बेहतर सेवाएं

अगर आपका कनेक्टर, BigQuery से डेटा फ़ेच करता है, तो अपने कनेक्टर को ऑप्टिमाइज़ करने के लिए, Looker Studio की बेहतर सेवाओं का इस्तेमाल किया जा सकता है. सीधे BigQuery API को कॉल करने के बजाय, आपको क्वेरी कॉन्फ़िगरेशन उपलब्ध कराना होगा और Looker Studio आपके लिए डेटा और स्कीमा फ़ेच कर देगा.

यह सुविधा कैसे काम करती है

Looker Studio की बेहतर सेवाओं का इस्तेमाल करने वाले कम्यूनिटी कनेक्टर, सामान्य कनेक्टर की तरह ही काम करते हैं.

मुख्य अंतर, getSchema() और/या getData() फ़ंक्शन के लागू होने से मिलने वाले रिस्पॉन्स की वजह से है. स्कीमा और डेटा को फ़ेच करने और दिखाने के बजाय, ये फ़ंक्शन क्वेरी कॉन्फ़िगरेशन दिखा सकते हैं. क्वेरी कॉन्फ़िगरेशन मिलने पर, Looker Studio दिए गए क्वेरी कॉन्फ़िगरेशन के आधार पर, सीधे स्कीमा और/या डेटा फ़ेच करेगा.

अपना कनेक्टर बनाना

Looker Studio की बेहतर सेवाओं का इस्तेमाल करने वाले कम्यूनिटी कनेक्टर, सामान्य कनेक्टर की तरह ही होते हैं. हालांकि, इसमें दो अपवाद होते हैं.

  1. एक और मेनिफ़ेस्ट कुंजी
  2. getSchema() और/या getData() से अलग जवाब

मेनिफ़ेस्ट रेफ़रंस

मेनिफ़ेस्ट में, इन प्रॉपर्टी को 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)
}