خدمات Looker Studio المتقدّمة

إذا كان الموصّل يستردّ البيانات من BigQuery، يمكنك استخدام "الخدمات المتقدّمة" في Looker Studio لتحسين الموصّل. بدلاً من استدعاء واجهة برمجة التطبيقات 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 نيابةً عن المستخدم الذي لديه إذن، عليك أيضًا تضمين نطاق OAuth الخاص بـ BigQuery ("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، لن تحتاج إلى نطاق OAuth bigquery.readonly في ملف البيان. ومع ذلك، يجب إضافة النطاق إلى قائمة النطاقات الخاصة بحساب الخدمة.

مرجع 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)
}