Servizi avanzati di Looker Studio

Se il connettore recupera i dati da BigQuery, puoi utilizzare Looker Studio. Servizi avanzati per ottimizzare il connettore. Invece di chiamare il metodo direttamente l'API, tu fornisci una configurazione della query e Looker Studio recupererà e lo schema per te.

Come funziona

I connettori della community che utilizzano i servizi avanzati di Looker Studio funzionano in modo simile ai un normale connettore.

La differenza notevole è la risposta che ci si aspetta dall'esecuzione del getSchema() e/o getData(). Invece di recuperare restituire uno schema e dei dati, queste funzioni possono restituire configurazioni di query. Quando viene restituita una configurazione di query, Looker Studio recupererà direttamente schema e/o dati in base alla configurazione della query fornita.

Sviluppo del connettore

I connettori della community che utilizzano i servizi avanzati di Looker Studio sono uguali ai connettore normale con due eccezioni.

  1. Una chiave manifest aggiuntiva
  2. Una risposta diversa da getSchema() e/o getData()

Riferimento del file manifest

Nel manifest, imposta le seguenti proprietà su true.

  • Per getSchema(), utilizza la proprietà dataStudio.advancedServices.schema
  • Per getData(), utilizza la proprietà dataStudio.advancedServices.data

Un valore true indica che, per la rispettiva funzione, il connettore restituirà una configurazione di query anziché una risposta standard.

Per definire il tuo schema utilizzando la risposta getSchema() standard, imposta Da dataStudio.advancedServices.schema a false nel file manifest oppure omettilo proprietà. Questa operazione è necessaria quando tutti i campi dello schema non possono essere rappresentati una singola query BigQuery, ad esempio quando crei un connettore multi-schema.

Poiché la query BigQuery verrà eseguita per conto dell'utente autorizzato, devi includere anche l'ambito OAuth di BigQuery, ("https://www.googleapis.com/auth/bigquery.readonly") nel manifest per richiedi l'autorizzazione.

Di seguito è riportato un manifest del connettore che utilizza le credenziali dell'utente autorizzato per connettiti a 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"]
}

Se utilizzi un account di servizio per accedere a BigQuery, bigquery.readonly L'ambito OAuth non è obbligatorio nel file manifest. Tuttavia, deve essere aggiunto all'elenco degli ambiti per l'account di servizio.

Riferimento getData e getSchema

I connettori che utilizzano i servizi avanzati di Looker Studio restituiscono un oggetto di configurazione delle query per getSchema() e/o getData(). A seconda dell'origine dati, questo potrebbe richiedere proprietà aggiuntive.

Di seguito è riportato un esempio di utilizzo del servizio DataStudioApp per creare dell'oggetto di configurazione:

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

Esempio di funzione getSchema() e 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)
}