Bağlayıcınız BigQuery'den veri getiriyorsa bağlayıcınızı optimize etmek için Looker Studio Gelişmiş Hizmetler'i kullanabilirsiniz. BigQuery API'yi doğrudan çağırmak yerine bir sorgu yapılandırması sağlarsınız. Looker Studio da verileri ve şemayı sizin için getirir.
İşleyiş şekli
Looker Studio Advanced Services'i kullanan topluluk bağlayıcıları, normal bağlayıcılarla benzer şekilde çalışır.
Önemli fark, getSchema() ve/veya getData() işlevlerinin yürütülmesinden beklenen yanıttır. Bu işlevler, şema ve veri getirmek ve döndürmek yerine sorgu yapılandırmalarını 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 bağlayıcılarla aynıdır.
Manifest referansı
Manifest dosyasında aşağıdaki özellikleri true olarak ayarlayın.
getSchema()içindataStudio.advancedServices.schemaözelliğini kullanın.getData()içindataStudio.advancedServices.dataözelliğini kullanın.
true değeri, ilgili işlev için bağlayıcınızın standart yanıt yerine bir sorgu yapılandırması döndüreceğini gösterir.
Standart getSchema() yanıtını kullanarak kendi şemanızı tanımlamak için manifestte dataStudio.advancedServices.schema değerini false olarak ayarlayın veya bu özelliği atlayın. Bu, şemanızdaki tüm alanlar tek bir BigQuery sorgusuyla temsil edilemediğinde (ör. çok şemalı bir bağlayıcı oluşturduğunuzda) gereklidir.
BigQuery sorgusu yetkili kullanıcı adına yürütüleceğinden, yetkilendirme isteğinde bulunmak için manifest dosyasına BigQuery OAuth kapsamını ("https://www.googleapis.com/auth/bigquery.readonly") da 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 hizmet hesabı kullanıyorsanız manifest dosyasında bigquery.readonly OAuth kapsamı gerekli değildir. Ancak kapsam, hizmet hesabının kapsamlar listesine eklenmelidir.
getData ve getSchema referansı
Looker Studio Gelişmiş Hizmetleri'ni 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.
Bu yapılandırma nesnesini oluşturmak için DataStudioApp hizmetinin kullanımına ilişkin bir örneği aşağıda bulabilirsiniz:
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)
}