إذا كانت الوصلة تجلب البيانات من BigQuery، يمكنك استخدام Looker Studio. "الخدمات المتقدمة" لتحسين الموصل. بدلاً من استدعاء BigQuery مباشرةً، يجب تقديم إعدادات طلب البحث وستجلب أداة Looker Studio البيانات والمخطط من أجلك.
آلية العمل
تعمل موصِّلات المنتدى التي تستخدم الخدمات المتقدّمة في Looker Studio بشكل مشابه موصل عادي.
يكمن الاختلاف الملحوظ في مدى الاستجابة المتوقعة من تنفيذ
دالات getSchema()
و/أو getData()
. بدلاً من استرجاع
بإرجاع مخطط وبيانات، يمكن أن تعرض هذه الدوال تكوينات الاستعلام.
عند عرض إعدادات طلب بحث، ستجلب أداة Looker Studio مباشرةً
المخطط و/أو البيانات استنادًا إلى تهيئة طلب البحث المقدمة.
تطوير الموصل
تكون موصِّلات المنتدى التي تستخدم خدمات Looker Studio Advanced هي نفسها موصل عادي مع استثناءين.
مرجع البيان
في البيان، اضبط السمات التالية على 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)
}