Layanan Lanjutan Looker Studio

Jika konektor Anda mengambil data dari BigQuery, Anda dapat menggunakan Looker Studio Layanan Lanjutan untuk mengoptimalkan konektor Anda. Daripada memanggil BigQuery, secara langsung, berikan konfigurasi kueri dan Looker Studio akan mengambil data dan skema untuk Anda.

Cara kerjanya

Konektor Komunitas yang menggunakan Layanan Lanjutan Looker Studio berfungsi serupa dengan konektor normal.

Perbedaan pentingnya adalah respons yang diharapkan dari eksekusi Fungsi getSchema() dan/atau getData(). Alih-alih mengambil dan menampilkan skema dan data, fungsi ini dapat menghasilkan konfigurasi kueri. Saat konfigurasi kueri ditampilkan, Looker Studio akan langsung mengambil skema dan/atau data berdasarkan konfigurasi kueri yang disediakan.

Mengembangkan konektor Anda

Konektor Komunitas yang menggunakan Layanan Lanjutan Looker Studio sama dengan konektor normal dengan dua pengecualian.

  1. Kunci manifes tambahan
  2. Respons yang berbeda dari getSchema() dan/atau getData()

Referensi manifes

Di manifes, tetapkan properti berikut ke true.

  • Untuk getSchema(), gunakan properti dataStudio.advancedServices.schema
  • Untuk getData(), gunakan properti dataStudio.advancedServices.data

Nilai true menunjukkan bahwa untuk fungsi masing-masing, konektor Anda akan mengembalikan konfigurasi kueri alih-alih respons standar.

Untuk menentukan skema Anda sendiri menggunakan respons getSchema() standar, setel dataStudio.advancedServices.schema ke false dalam manifes atau hapus elemen ini saat ini. Ini diperlukan jika semua {i>field<i} dalam skema Anda tidak dapat direpresentasikan oleh satu kueri BigQuery, mis. saat membuat konektor multi-skema.

Karena kueri BigQuery akan dijalankan atas nama pengguna yang diotorisasi, Anda harus juga perlu menyertakan cakupan OAuth BigQuery ("https://www.googleapis.com/auth/bigquery.readonly") dalam manifes untuk minta otorisasi.

Berikut adalah manifes konektor yang menggunakan kredensial pengguna yang diotorisasi untuk hubungkan ke 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"]
}

Jika Anda menggunakan akun layanan untuk mengakses BigQuery, bigquery.readonly Cakupan OAuth tidak diperlukan dalam manifes. Namun, cakupan harus ditambahkan ke daftar cakupan untuk akun layanan.

Referensi getData dan getSchema

Konektor yang menggunakan Layanan Lanjutan Looker Studio menampilkan objek konfigurasi kueri untuk getSchema() dan/atau getData(). Bergantung pada sumber datanya, konfigurasi mungkin memerlukan properti tambahan.

Berikut ini contoh penggunaan layanan DataStudioApp untuk membuat :

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();

Contoh fungsi getSchema() dan 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)
}