Bağlayıcınız BigQuery'den veri getiriyorsa bağlayıcınızı optimize etmek için Looker Studio Gelişmiş Hizmetleri'ni kullanabilirsiniz. BigQuery API'yi doğrudan çağırmak yerine bir sorgu yapılandırması sağlarsınız. Looker Studio, verileri ve şemayı sizin için getirir.
İşleyiş şekli
Looker Studio Gelişmiş Hizmetleri'ni kullanan Topluluk Bağlayıcıları normal bir bağlayıcıya benzer şekilde çalışır.
Önemli fark, getSchema()
ve/veya getData()
işlevlerinin yürütülmesinden beklenen yanıttır. Bu işlevler, bir şema ve verileri getirip döndürmek yerine sorgu yapılandırmaları döndürebilir.
Bir sorgu yapılandırması döndürüldüğünde, Looker Studio sağlanan sorgu yapılandırmasına göre şemayı ve/veya verileri doğrudan getirir.
Bağlayıcınızı geliştirme
Looker Studio Gelişmiş Hizmetleri'ni kullanan Topluluk Bağlayıcıları, iki istisna dışında normal bir bağlayıcıyla aynıdır.
Manifest referansı
Manifest'te, aşağıdaki özellikleri true
olarak ayarlayın.
getSchema()
içindataStudio.advancedServices.schema
özelliğini kullanıngetData()
içindataStudio.advancedServices.data
özelliğini kullanın
true
değeri, bağlayıcınızın ilgili işlev için standart yanıt yerine bir sorgu yapılandırması döndüreceğini belirtir.
Standart getSchema()
yanıtını kullanarak kendi şemanızı tanımlamak için manifest dosyasında dataStudio.advancedServices.schema
öğesini false
olarak ayarlayın veya bu özelliği çıkarın. Bu işlem, şemanızdaki tüm alanlar tek bir BigQuery sorgusu ile temsil edilemediğinde (ör. çoklu şema bağlayıcısı oluştururken) gereklidir.
BigQuery sorgusu, yetkili kullanıcı adına yürütüleceğinden, yetkilendirme istemek için BigQuery OAuth kapsamını ("https://www.googleapis.com/auth/bigquery.readonly"
) manifeste de eklemeniz gerekir.
Aşağıda, BigQuery'ye bağlanmak için yetkili kullanıcının kimlik bilgilerini kullanan bir bağlayıcı manifesti verilmiştir:
{
"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'ye erişmek için bir hizmet hesabı kullanıyorsanız manifest dosyasında bigquery.readonly
OAuth kapsamı gerekli değildir. Ancak kapsam, hizmet hesabının kapsam listesine eklenmelidir.
getData
ve getSchema
referansı
Looker Studio Gelişmiş Hizmetleri kullanan bağlayıcılar, getSchema()
ve/veya getData()
için bir sorgu yapılandırma nesnesi döndürür. Veri kaynağına bağlı olarak, bu yapılandırma için ek özellikler gerekebilir.
Aşağıda, bu yapılandırma nesnesini oluşturmak için DataStudioApp hizmetinin kullanılmasına ilişkin bir örnek verilmiştir:
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();
Örnek getSchema()
ve getData()
işlevi
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)
}