Data Studio Gelişmiş Hizmetleri

Bağlayıcınız BigQuery'den veri getiriyorsa bağlayıcınızı optimize etmek için Data Studio Gelişmiş Hizmetler'i kullanabilirsiniz. BigQuery API'yi doğrudan çağırmak yerine bir sorgu yapılandırması sağlarsınız. Data Studio, verileri ve şemayı sizin için getirir.

İşleyiş şekli

Data 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 Data Studio, sağlanan sorgu yapılandırmasına göre şemayı ve/veya verileri doğrudan getirir.

Bağlayıcınızı geliştirme

Data Studio Gelişmiş Hizmetleri'ni kullanan Topluluk Bağlayıcıları, iki istisna dışında normal bağlayıcılarla aynıdır.

  1. Ek bir manifest anahtarı
  2. getSchema() ve/veya getData()'dan farklı bir yanıt

Manifest referansı

Manifest dosyasında aşağıdaki özellikleri true olarak ayarlayın.

  • getSchema() için dataStudio.advancedServices.schema mülkünü kullanın.
  • getData() için dataStudio.advancedServices.data mülkünü 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 Data 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 manifestte bigquery.readonly OAuth kapsamı gerekli değildir. Ancak kapsam, hizmet hesabının kapsamlar listesine eklenmelidir.

getData ve getSchema referansı

Data Studio Advanced Services'i 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ıldığı 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)
}