如果連接器會從 BigQuery 擷取資料,您可以使用 Looker Studio 用於最佳化連接器的進階服務。不要呼叫 BigQuery 直接提供查詢設定,Looker Studio 就會擷取 各種資料類型和架構
運作方式
採用 Looker Studio 進階服務的社群連接器,運作方式與 使用一般連接器
主要差異在於
getSchema()
和/或 getData()
函式。您不必擷取和
傳回結構定義和資料,這類函式即可傳回查詢設定。
傳回查詢設定時,Looker Studio 會直接擷取
結構定義和/或資料。
開發連接器
使用 Looker Studio 進階服務的社群連接器 以及有兩個例外情況的一般連接器
資訊清單參考資料
在資訊清單中,將下列屬性設為 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,則
資訊清單中沒有 bigquery.readonly
個 OAuth 範圍。不過,
範圍應新增至服務帳戶的範圍清單。
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)
}