Looker Studio 고급 서비스

커넥터가 BigQuery에서 데이터를 가져오면 Looker Studio를 사용하여 커넥터를 최적화하기 위한 고급 서비스 BigQuery를 호출하는 대신 API를 직접 사용하여 쿼리 구성을 제공하면 Looker Studio에서 자동으로 생성해 줍니다

작동 방식

Looker Studio 고급 서비스를 사용하는 커뮤니티 커넥터는 일반적인 커넥터입니다

주목할 만한 차이점은 getSchema() 또는 getData() 함수 Google Kubernetes Engine, 이러한 함수는 쿼리 구성을 반환할 수 있습니다. 쿼리 구성이 반환되면 Looker Studio가 스키마 또는 데이터를 선택할 수 있습니다.

커넥터 개발

Looker Studio 고급 서비스를 사용하는 커뮤니티 커넥터는 두 가지 예외가 있습니다

  1. 추가 매니페스트 키
  2. getSchema() 또는 getData()의 다른 응답

매니페스트 참조

매니페스트에서 다음 속성을 true로 설정합니다.

  • getSchema()의 경우 속성 dataStudio.advancedServices.schema 사용
  • getData()의 경우 속성 dataStudio.advancedServices.data 사용

true은 각 함수에서 커넥터가 사용 중임을 나타냅니다. 표준 응답 대신 쿼리 구성을 반환합니다.

표준 getSchema() 응답을 사용하여 자체 스키마를 정의하려면 매니페스트에서 dataStudio.advancedServices.schemafalse로 설정하거나 이를 생략합니다. 속성 스키마의 모든 필드를 단일 BigQuery 쿼리 예: 멀티 스키마 커넥터를 만들 때 사용합니다.

BigQuery 쿼리는 승인된 사용자를 대신하여 실행되므로 BigQuery OAuth 범위도 포함해야 합니다 ("https://www.googleapis.com/auth/bigquery.readonly")를 호출하여 승인을 요청합니다.

다음은 승인된 사용자의 사용자 인증 정보를 사용하는 커넥터 매니페스트입니다. 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에 액세스하는 경우 bigquery.readonly 매니페스트에는 OAuth 범위가 필요하지 않습니다. 그러나 해당 범위를 서비스 계정의 범위 목록에 추가해야 합니다.

getDatagetSchema 참조

Looker Studio 고급 서비스를 사용하는 커넥터가 쿼리 구성 객체를 반환합니다. getSchema() 또는 getData()용. 이 작업은 데이터 소스에 따라 구성에 추가 속성이 필요할 수 있습니다.

다음은 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)
}