บริการขั้นสูงของ Looker Studio

หากเครื่องมือเชื่อมต่อดึงข้อมูลจาก BigQuery คุณจะใช้ Looker Studio ได้ บริการขั้นสูงเพื่อเพิ่มประสิทธิภาพเครื่องมือเชื่อมต่อ แทนที่จะเรียกใช้ BigQuery API โดยตรง ให้คุณระบุการกําหนดค่าการค้นหา จากนั้น Looker Studio จะดึงข้อมูล และสคีมาให้คุณ

วิธีการทำงาน

เครื่องมือเชื่อมต่อชุมชนที่ใช้บริการขั้นสูงของ Looker Studio ทำงานคล้ายกับ หัวชาร์จไฟฟ้าปกติ

ความแตกต่างที่เห็นได้ชัดคือการตอบสนองที่คาดหวังจากการดำเนินการ getSchema() และ/หรือ getData() ฟังก์ชัน แทนที่จะดึงข้อมูลและ ที่ส่งคืนสคีมาและข้อมูล ฟังก์ชันเหล่านี้จะส่งคืนการกำหนดค่าการค้นหาได้ เมื่อแสดงผลการกำหนดค่าการค้นหา Looker Studio จะดึงข้อมูลโดยตรง สคีมาและ/หรือข้อมูลตามการกำหนดค่าการค้นหาที่ระบุ

การพัฒนาเครื่องมือเชื่อมต่อ

เครื่องมือเชื่อมต่อชุมชนที่ใช้บริการขั้นสูงของ Looker Studio จะเหมือนกับ แบบปกติที่มีข้อยกเว้น 2 ประการ

  1. คีย์ไฟล์ Manifest เพิ่มเติม
  2. คำตอบต่างจาก getSchema() และ/หรือ getData()

การอ้างอิงไฟล์ Manifest

ในไฟล์ Manifest ให้ตั้งค่าพร็อพเพอร์ตี้ต่อไปนี้เป็น true

  • สำหรับ getSchema() ให้ใช้พร็อพเพอร์ตี้ dataStudio.advancedServices.schema
  • สำหรับ getData() ให้ใช้พร็อพเพอร์ตี้ dataStudio.advancedServices.data

ค่า true บ่งชี้ว่าเครื่องมือเชื่อมต่อสำหรับฟังก์ชันที่เกี่ยวข้อง จะแสดงผลการกำหนดค่าการค้นหาแทนการตอบกลับมาตรฐาน

หากต้องการกำหนดสคีมาของคุณเองโดยใช้การตอบกลับมาตรฐาน getSchema() ให้ตั้งค่า dataStudio.advancedServices.schema ไปยัง false ในไฟล์ Manifest หรือละเว้นข้อความนี้ จำเป็นต้องใช้เมื่อช่องทั้งหมดในสคีมาไม่สามารถแสดงได้ด้วย การค้นหา BigQuery รายการเดียว เช่น เมื่อคุณสร้างเครื่องมือเชื่อมต่อหลายสคีมา

เนื่องจากการค้นหา BigQuery จะดำเนินการในนามของผู้ใช้ที่ได้รับอนุญาต คุณ ต้องรวมขอบเขต OAuth ของ BigQuery ไว้ด้วย ("https://www.googleapis.com/auth/bigquery.readonly") ในไฟล์ Manifest เพื่อ ส่งคำขอการให้สิทธิ์

ต่อไปนี้เป็นไฟล์ Manifest ของเครื่องมือเชื่อมต่อที่ใช้ข้อมูลเข้าสู่ระบบของผู้ใช้ที่ได้รับอนุญาตเพื่อ เชื่อมต่อกับ 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"]
}

หากคุณใช้บัญชีบริการเพื่อเข้าถึง BigQuery ระบบจะดำเนินการต่อไปนี้ ไม่จำเป็นต้องมีขอบเขต OAuth bigquery.readonly ในไฟล์ Manifest อย่างไรก็ตาม ควรเพิ่มขอบเขตลงในรายการขอบเขตสำหรับบัญชีบริการ

ข้อมูลอ้างอิง getData และ getSchema

เครื่องมือเชื่อมต่อที่ใช้บริการขั้นสูงของ Looker Studio จะแสดงออบเจ็กต์การกำหนดค่าการค้นหา สำหรับ getSchema() และ/หรือ getData() ซึ่งขึ้นอยู่กับแหล่งข้อมูล config อาจต้องการพร็อพเพอร์ตี้เพิ่มเติม

ตัวอย่างการใช้บริการ DataStudioApp เพื่อสร้าง ออบเจ็กต์การกำหนดค่า:

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

ตัวอย่างฟังก์ชัน getSchema() และ 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)
}