خدمات پیشرفته استودیو داده

اگر کانکتور شما داده‌ها را از BigQuery دریافت می‌کند، می‌توانید از خدمات پیشرفته Data Studio برای بهینه‌سازی کانکتور خود استفاده کنید. به جای فراخوانی مستقیم API BigQuery، پیکربندی کوئری را ارائه می‌دهید و Data Studio داده‌ها و طرحواره را برای شما دریافت می‌کند.

چگونه کار می‌کند؟

رابط‌های انجمنی که از خدمات پیشرفته دیتا استودیو استفاده می‌کنند، مشابه یک رابط معمولی کار می‌کنند.

تفاوت قابل توجه، پاسخی است که از اجرای توابع getSchema() و/یا getData() انتظار می‌رود. این توابع به جای واکشی و بازگرداندن یک طرحواره و داده‌ها، می‌توانند پیکربندی‌های پرس‌وجو را برگردانند. هنگامی که یک پیکربندی پرس‌وجو بازگردانده می‌شود، Data 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 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)
}