سرویس های پیشرفته استودیو Looker

اگر کانکتور شما داده‌ها را از BigQuery دریافت می‌کند، می‌توانید از سرویس‌های پیشرفته Looker Studio برای بهینه‌سازی کانکتور خود استفاده کنید. به جای فراخوانی مستقیم API BigQuery، پیکربندی کوئری را ارائه می‌دهید و 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 Advanced Services استفاده می‌کنند، یک شیء پیکربندی پرس‌وجو برای 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)
}