ডেটা স্টুডিও অ্যাডভান্সড সার্ভিসেস

যদি আপনার কানেক্টর BigQuery থেকে ডেটা সংগ্রহ করে, তাহলে আপনি আপনার কানেক্টরকে অপ্টিমাইজ করতে Data Studio Advanced Services ব্যবহার করতে পারেন। সরাসরি BigQuery API কল করার পরিবর্তে, আপনি একটি কোয়েরি কনফিগারেশন প্রদান করবেন এবং Data Studio আপনার জন্য ডেটা ও স্কিমা সংগ্রহ করে দেবে।

এটি কীভাবে কাজ করে

ডেটা স্টুডিও অ্যাডভান্সড সার্ভিসেস ব্যবহারকারী কমিউনিটি কানেক্টরগুলো একটি সাধারণ কানেক্টরের মতোই কাজ করে।

উল্লেখযোগ্য পার্থক্যটি হলো getSchema() এবং/অথবা getData() ফাংশনগুলো চালানোর পর প্রত্যাশিত প্রতিক্রিয়া। একটি স্কিমা এবং ডেটা ফেচ করে ফেরত দেওয়ার পরিবর্তে, এই ফাংশনগুলো কোয়েরি কনফিগারেশন ফেরত দিতে পারে। যখন একটি কোয়েরি কনফিগারেশন ফেরত দেওয়া হয়, তখন ডেটা স্টুডিও প্রদত্ত কোয়েরি কনফিগারেশনের উপর ভিত্তি করে সরাসরি স্কিমা এবং/অথবা ডেটা ফেচ করে।

আপনার সংযোগকারী তৈরি করা

ডেটা স্টুডিও অ্যাডভান্সড সার্ভিসেস ব্যবহারকারী কমিউনিটি কানেক্টরগুলো দুটি ব্যতিক্রম ছাড়া একটি সাধারণ কানেক্টরের মতোই।

  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 Data Studio's Advanced Services.",
    "advancedServices": {
      "schema": true,
      "data": true
    }
  },
  "oauthScopes": ["https://www.googleapis.com/auth/bigquery.readonly"]
}

আপনি যদি BigQuery অ্যাক্সেস করার জন্য একটি সার্ভিস অ্যাকাউন্ট ব্যবহার করেন, তাহলে ম্যানিফেস্টে bigquery.readonly OAuth স্কোপটির প্রয়োজন নেই। তবে, সার্ভিস অ্যাকাউন্টটির স্কোপ তালিকায় স্কোপটি যোগ করতে হবে।

getData এবং getSchema রেফারেন্স

ডেটা স্টুডিও অ্যাডভান্সড সার্ভিসেস ব্যবহারকারী কানেক্টরগুলো 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)
}