Zaawansowane usługi Looker Studio

Jeśli Twoje oprogramowanie sprzęgające pobiera dane z BigQuery, możesz używać narzędzia Looker Studio usługi zaawansowane umożliwiające optymalizację oprogramowania sprzęgającego. Zamiast wywoływać BigQuery bezpośrednio przez interfejs API, podasz konfigurację zapytania, a Looker Studio pobierze dane i schemat.

Jak to działa

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

Istotną różnicą jest odpowiedź oczekiwana po wykonaniu funkcji getSchema() lub getData(). Zamiast pobierania które zwraca schemat i dane, funkcje te mogą zwracać konfiguracje zapytań. Gdy zwrócisz konfigurację zapytania, Looker Studio pobierze bezpośrednio schemat lub dane na podstawie podanej konfiguracji zapytania.

tworzenie oprogramowania sprzęgającego,

Społecznościowe oprogramowanie sprzęgające, które używa usług zaawansowanych Looker Studio, jest takie samo jak normalnego oprogramowania sprzęgającego z dwoma wyjątkami.

  1. Dodatkowy klucz pliku manifestu
  2. Inna odpowiedź od getSchema() lub getData()

Dokumentacja pliku manifestu

W pliku manifest ustaw następujące właściwości na wartość true.

  • W przypadku usługi getSchema() użyj usługi dataStudio.advancedServices.schema
  • W przypadku usługi getData() użyj usługi dataStudio.advancedServices.data

Wartość true oznacza, że dla danej funkcji oprogramowanie sprzęgające zwróci konfigurację zapytania zamiast odpowiedzi standardowej.

Aby zdefiniować własny schemat za pomocą standardowej odpowiedzi getSchema(), ustaw Z dataStudio.advancedServices.schema na false w pliku manifestu lub pomiń ten krok usłudze. Jest to konieczne, gdy żadne pola w schemacie nie mogą być reprezentowane przez pojedyncze zapytanie BigQuery, np. .

Ponieważ zapytanie BigQuery zostanie wykonane w imieniu autoryzowanego użytkownika, należy też uwzględnić zakres protokołu OAuth BigQuery ("https://www.googleapis.com/auth/bigquery.readonly") w pliku manifestu na żądania autoryzacji.

Poniżej znajduje się plik manifestu oprogramowania sprzęgającego używający danych logowania autoryzowanego użytkownika do połącz się z 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"]
}

Jeśli do uzyskiwania dostępu do BigQuery używasz konta usługi, bigquery.readonly Zakres protokołu OAuth nie jest wymagany w pliku manifestu. Jednak zakres powinien zostać dodany do listy zakresów konta usługi.

Dokumentacja getData i getSchema

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

Poniżej znajdziesz przykład użycia usługi DataStudioApp do utworzenia obiekt 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ład funkcji 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)
}