Si votre connecteur récupère des données depuis BigQuery, vous pouvez utiliser Looker Studio Services avancés pour optimiser votre connecteur. Au lieu d'appeler la fonction API directement, vous fournissez une configuration de requête et Looker Studio récupérera les données et le schéma.
Fonctionnement
Les connecteurs de communauté qui utilisent les services avancés de Looker Studio fonctionnent de la même manière que un connecteur normal.
La différence notable est la réponse attendue de l'exécution de la
Fonctions getSchema()
et/ou getData()
. Au lieu d'extraire et
renvoyant un schéma et des données, ces fonctions peuvent renvoyer des configurations de requête.
Lorsqu'une configuration de requête est renvoyée, Looker Studio récupère directement la
schéma et/ou des données en fonction de la configuration de requête fournie.
Développer votre connecteur
Les connecteurs de communauté qui utilisent les services avancés de Looker Studio sont le connecteur standard, à deux exceptions près.
- Clé supplémentaire dans le fichier manifeste
- Une réponse différente de
getSchema()
et/ou degetData()
Documentation de référence sur les fichiers manifestes
Dans le fichier manifeste, définissez les propriétés suivantes sur true
.
- Pour
getSchema()
, utilisez la propriétédataStudio.advancedServices.schema
. - Pour
getData()
, utilisez la propriétédataStudio.advancedServices.data
.
La valeur true
indique que, pour la fonction concernée, votre connecteur
renverra une configuration de requête
au lieu de la réponse standard.
Pour définir votre propre schéma à l'aide de la réponse getSchema()
standard, définissez
dataStudio.advancedServices.schema
à false
dans le fichier manifeste ou omettre cette
. Cette opération est nécessaire lorsque tous les champs de votre schéma ne peuvent pas être représentés par
une seule requête BigQuery (ex. : lorsque vous créez un connecteur multischéma.
Étant donné que la requête BigQuery sera exécutée au nom de l'utilisateur autorisé, vous
doivent aussi inclure le champ d'application OAuth de BigQuery
("https://www.googleapis.com/auth/bigquery.readonly"
) dans le fichier manifeste pour
demander une autorisation.
Voici un fichier manifeste de connecteur utilisant les identifiants de l'utilisateur autorisé pour : connectez-vous à 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"]
}
Si vous utilisez un compte de service pour accéder à BigQuery,
bigquery.readonly
Le champ d'application OAuth n'est pas requis dans le fichier manifeste. Toutefois,
doit être ajouté à la liste des champs d'application du compte de service.
Documentation de référence sur getData
et getSchema
Les connecteurs qui utilisent les services avancés de Looker Studio renvoient un objet de configuration de requête
pour getSchema()
et/ou getData()
. En fonction de la source de données,
peut nécessiter des propriétés supplémentaires.
Voici un exemple d'utilisation du service DataStudioApp pour créer ce configuration de l'objet:
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();
Exemple de fonction getSchema()
et 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)
}