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.
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)
}