إذا كان الموصّل يستردّ البيانات من BigQuery، يمكنك استخدام "الخدمات المتقدّمة" في مركز البيانات لتحسين الموصّل. بدلاً من طلب البيانات من واجهة برمجة التطبيقات BigQuery API مباشرةً، يمكنك تقديم إعدادات طلب البيانات، وسيجلب "مركز البيانات" البيانات والمخطط نيابةً عنك.
آلية العمل
تعمل "موصّلات الشركاء" التي تستخدم "الخدمات المتقدّمة" في "مركز البيانات" بشكل مشابه للموصّل العادي.
ويكمن الاختلاف الملحوظ في الردّ المتوقّع من تنفيذ الدالتَين 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 Data Studio's Advanced Services.",
"advancedServices": {
"schema": true,
"data": true
}
},
"oauthScopes": ["https://www.googleapis.com/auth/bigquery.readonly"]
}
إذا كنت تستخدم حساب خدمة للوصول إلى BigQuery، لن تحتاج إلى نطاق OAuth bigquery.readonly في ملف البيان. ومع ذلك، يجب إضافة النطاق إلى قائمة النطاقات الخاصة بحساب الخدمة.
مرجع 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)
}