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

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

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

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

تفاوت قابل توجه پاسخ مورد انتظار از اجرای توابع getSchema() و/یا getData() است. این توابع به جای واکشی و برگرداندن یک طرح و داده و داده ها، می توانند پیکربندی های پرس و جو را برگردانند. هنگامی که یک پیکربندی پرس و جو برگردانده می شود، استودیوی Looker مستقیماً طرح و/یا داده ها را بر اساس پیکربندی پرس و جو ارائه شده واکشی می کند.

در حال توسعه کانکتور شما

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

  1. یک کلید مانیفست اضافی
  2. پاسخی متفاوت از getSchema() و/یا getData()

مرجع آشکار

در مانیفست ، ویژگی های زیر را روی true تنظیم کنید.

  • برای getSchema() از ویژگی dataStudio.advancedServices.schema استفاده کنید
  • برای getData() از ویژگی dataStudio.advancedServices.data استفاده کنید

مقدار true نشان می دهد که برای تابع مربوطه، رابط شما به جای پاسخ استاندارد، یک پیکربندی query را برمی گرداند.

برای تعریف طرحواره خود با استفاده از پاسخ استاندارد 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 استفاده می‌کنند، یک شی پیکربندی query را برای 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)
}