Zaawansowane usługi Looker Studio

Jeśli oprogramowanie sprzęgające pobiera dane z BigQuery, możesz użyć zaawansowanych usług Looker Studio, aby zoptymalizować to oprogramowanie. Zamiast bezpośrednio wywoływać interfejs BigQuery API, podajesz konfigurację zapytania, a Looker Studio pobierze dane i schemat za Ciebie.

Jak to działa

Społeczność oprogramowanie sprzęgające korzystające z usług zaawansowanych Looker Studio działa podobnie do zwykłego oprogramowania sprzęgającego.

Ważna różnica to odpowiedź oczekiwana po wykonaniu funkcji getSchema() lub getData(). Zamiast pobierać oraz zwracać schemat i dane, funkcje te mogą zwracać konfiguracje zapytań. Gdy zostanie zwrócona konfiguracja zapytania, Looker Studio bezpośrednio pobierze schemat lub dane na podstawie podanej konfiguracji zapytania.

Opracowywanie oprogramowania sprzęgającego

Społecznościowe oprogramowanie sprzęgające korzystające z usług zaawansowanych Looker Studio jest takie samo jak zwykłe oprogramowanie sprzęgające, z 2 wyjątkami.

  1. Dodatkowy klucz pliku manifestu
  2. Inna odpowiedź ze źródła getSchema() lub getData()

Odwołanie do pliku manifestu

W pliku manifestu ustaw te właściwości na true.

  • W przypadku getSchema() użyj właściwości dataStudio.advancedServices.schema
  • W przypadku getData() użyj właściwości dataStudio.advancedServices.data

Wartość true wskazuje, że w przypadku odpowiedniej funkcji oprogramowanie sprzęgające zwróci konfigurację zapytania zamiast standardowej odpowiedzi.

Aby zdefiniować własny schemat za pomocą standardowej odpowiedzi getSchema(), ustaw opcję dataStudio.advancedServices.schema na false w pliku manifestu lub pomiń tę właściwość. Jest to konieczne, gdy żadne pola w schemacie nie mogą być reprezentowane przez pojedyncze zapytanie BigQuery, np. podczas tworzenia oprogramowania sprzęgającego z wieloma schematami.

Zapytanie BigQuery będzie wykonywane w imieniu autoryzowanego użytkownika, więc aby poprosić o autoryzację, musisz też umieścić w pliku manifestu zakres OAuth BigQuery ("https://www.googleapis.com/auth/bigquery.readonly").

Poniżej zamieściliśmy plik manifestu oprogramowania sprzęgającego z BigQuery przy użyciu danych logowania autoryzowanego użytkownika:

{
  "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"]
}

Jeśli uzyskujesz dostęp do BigQuery za pomocą konta usługi, zakres protokołu OAuth bigquery.readonly nie jest wymagany w pliku manifestu. Zakres należy jednak dodać do listy zakresów konta usługi.

Pliki referencyjne getData i getSchema

Oprogramowanie sprzęgające korzystające z usług zaawansowanych Looker Studio zwraca obiekt konfiguracji zapytania dla funkcji getSchema() lub getData(). W zależności od źródła danych ta konfiguracja może wymagać dodatkowych właściwości.

Poniżej znajdziesz przykład użycia usługi DataStudioApp do utworzenia obiektu konfiguracji:

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

Przykładowa funkcja getSchema() i 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)
}