Services avancés de Looker Studio

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.

  1. Clé supplémentaire dans le fichier manifeste
  2. Une réponse différente de getSchema() et/ou de getData()

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