Jika konektor Anda mengambil data dari BigQuery, Anda dapat menggunakan Layanan Lanjutan Looker Studio untuk mengoptimalkan konektor tersebut. Daripada memanggil BigQuery API secara langsung, Anda perlu menyediakan konfigurasi kueri dan Looker Studio akan mengambil data serta skemanya untuk Anda.
Cara kerjanya
Konektor Komunitas yang menggunakan Layanan Lanjutan Looker Studio berfungsi serupa dengan konektor normal.
Perbedaan yang signifikan adalah respons yang diharapkan dari eksekusi fungsi
getSchema()
dan/atau getData()
. Sebagai ganti mengambil dan
menampilkan skema dan data, fungsi ini dapat menampilkan konfigurasi kueri.
Saat konfigurasi kueri ditampilkan, Looker Studio akan langsung mengambil
skema dan/atau data berdasarkan konfigurasi kueri yang diberikan.
Mengembangkan konektor Anda
Konektor Komunitas yang menggunakan Layanan Lanjutan Looker Studio sama dengan konektor normal dengan dua pengecualian.
Referensi manifes
Di manifes, tetapkan properti berikut ke true
.
- Untuk
getSchema()
, gunakan propertidataStudio.advancedServices.schema
- Untuk
getData()
, gunakan propertidataStudio.advancedServices.data
Nilai true
menunjukkan bahwa untuk fungsi yang terkait, konektor Anda akan menampilkan konfigurasi kueri, bukan respons standar.
Untuk menentukan skema Anda sendiri menggunakan respons getSchema()
standar, tetapkan
dataStudio.advancedServices.schema
ke false
dalam manifes atau hapus properti
ini. Ini diperlukan jika semua kolom dalam skema Anda tidak dapat direpresentasikan oleh satu kueri BigQuery, misalnya saat Anda membuat konektor multi-skema.
Karena kueri BigQuery akan dieksekusi atas nama pengguna yang diberi otorisasi, Anda juga harus menyertakan cakupan OAuth BigQuery ("https://www.googleapis.com/auth/bigquery.readonly"
) dalam manifes untuk meminta otorisasi.
Berikut adalah manifes konektor yang menggunakan kredensial pengguna yang diotorisasi untuk terhubung ke 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"]
}
Jika Anda menggunakan akun layanan untuk mengakses BigQuery, cakupan OAuth bigquery.readonly
tidak diperlukan dalam manifes. Namun, cakupan harus ditambahkan ke daftar cakupan untuk akun layanan.
Referensi getData
dan getSchema
Konektor yang menggunakan Layanan Lanjutan Looker Studio menampilkan objek konfigurasi kueri untuk getSchema()
dan/atau getData()
. Bergantung pada sumber datanya, konfigurasi ini mungkin memerlukan properti tambahan.
Berikut adalah contoh penggunaan layanan DataStudioApp untuk membuat objek konfigurasi ini:
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();
Contoh fungsi getSchema()
dan 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)
}