Jika konektor Anda mengambil data dari BigQuery, Anda dapat menggunakan Looker Studio Layanan Lanjutan untuk mengoptimalkan konektor Anda. Daripada memanggil BigQuery, secara langsung, berikan konfigurasi kueri dan Looker Studio akan mengambil data dan skema untuk Anda.
Cara kerjanya
Konektor Komunitas yang menggunakan Layanan Lanjutan Looker Studio berfungsi serupa dengan konektor normal.
Perbedaan pentingnya adalah respons yang diharapkan dari eksekusi
Fungsi getSchema()
dan/atau getData()
. Alih-alih mengambil dan
menampilkan skema dan data, fungsi ini dapat
menghasilkan konfigurasi kueri.
Saat konfigurasi kueri ditampilkan, Looker Studio akan langsung mengambil
skema dan/atau data berdasarkan
konfigurasi kueri yang disediakan.
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 masing-masing, konektor Anda
akan mengembalikan konfigurasi kueri
alih-alih respons standar.
Untuk menentukan skema Anda sendiri menggunakan respons getSchema()
standar, setel
dataStudio.advancedServices.schema
ke false
dalam manifes atau hapus elemen ini
saat ini. Ini diperlukan jika semua {i>field<i} dalam skema Anda tidak dapat direpresentasikan oleh
satu kueri BigQuery, mis. saat membuat konektor multi-skema.
Karena kueri BigQuery akan dijalankan atas nama pengguna yang diotorisasi, Anda harus
juga perlu menyertakan
cakupan OAuth BigQuery
("https://www.googleapis.com/auth/bigquery.readonly"
) dalam manifes untuk
minta otorisasi.
Berikut adalah manifes konektor yang menggunakan kredensial pengguna yang diotorisasi untuk hubungkan 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,
bigquery.readonly
Cakupan OAuth 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 mungkin memerlukan properti tambahan.
Berikut ini contoh penggunaan layanan DataStudioApp untuk membuat :
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)
}