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

في حال كان الموصِّل يجلب البيانات من BigQuery، يمكنك استخدام الخدمات المتقدمة في Looker Studio لتحسين الموصِّل. بدلاً من استدعاء BigQuery API مباشرةً، يمكنك توفير ضبط طلب بحث وستجلب 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، لن يكون نطاق 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)
}