Looker Studio Gelişmiş Hizmetleri

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.

  1. Ek manifest anahtarı
  2. getSchema() ve/veya getData() kaynağından farklı bir yanıt

Manifest referansı

Manifest'te, aşağıdaki özellikleri true olarak ayarlayın.

  • getSchema() için dataStudio.advancedServices.schema özelliğini kullanın
  • getData() için dataStudio.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)
}