Se il connettore recupera i dati da BigQuery, puoi utilizzare i servizi avanzati di Looker Studio per ottimizzarlo. Anziché chiamare direttamente l'API BigQuery, fornisci una configurazione della query e Looker Studio recupererà i dati e lo schema per te.
Come funziona
I connettori della community che utilizzano i servizi avanzati di Looker Studio funzionano in modo simile a un connettore normale.
La differenza più evidente è la risposta prevista dall'esecuzione delle funzioni
getSchema() e/o getData(). Anziché recuperare e restituire uno schema e dati, queste funzioni possono restituire configurazioni di query.
Quando viene restituita una configurazione della query, Looker Studio recupera direttamente lo schema e/o i 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 a un connettore normale, con due eccezioni.
Riferimento al 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 di true indica che per la rispettiva funzione, il connettore
restituirà una configurazione della query anziché la risposta standard.
Per definire il tuo schema utilizzando la risposta standard getSchema(), imposta
dataStudio.advancedServices.schema su false nel manifest o ometti questa
proprietà. Questo è necessario quando tutti i campi dello schema non possono essere rappresentati da
una singola query BigQuery, ad esempio quando crei un connettore multischema.
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
richiedere l'autorizzazione.
Di seguito è riportato un manifest del connettore che utilizza le credenziali dell'utente autorizzato per connettersi 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 service account per accedere a BigQuery, l'ambito OAuth bigquery.readonly non è richiesto nel manifest. Tuttavia, l'ambito deve essere aggiunto all'elenco degli ambiti per il service account.
Riferimento getData e getSchema
I connettori che utilizzano i servizi avanzati di Looker Studio restituiscono un oggetto di configurazione della query
per getSchema() e/o getData(). A seconda dell'origine dati, questa
configurazione potrebbe richiedere proprietà aggiuntive.
Di seguito è riportato un esempio di utilizzo del servizio DataStudioApp per creare questo 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)
}