Advanced Services de Data Studio

Si tu conector obtiene datos de BigQuery, puedes usar Advanced Services de Data Studio para optimizarlo. En lugar de llamar a la API de BigQuery directamente, especifica una configuración para las consultas y Data Studio obtendrá los datos.

Cómo funciona

Los conectores comunitarios que usan Advanced Services de Data Studio funcionan de manera similar a los conectores normales.

La diferencia más notable es la respuesta que se espera de la ejecución de la función getData(). En lugar de obtener y devolver datos, getData() debería devolver una configuración de consulta que Data Studio utiliza para obtener los datos.

Desarrollar tu conector

Los conectores comunitarios que usa Advanced Services de Data Studio funcionan igual que los conectores normales, excepto que:

  1. Tienen una clave de archivo de manifiesto adicional.
  2. Devuelven una respuesta diferente a partir de la función getData().

Referencia del archivo de manifiesto

En el archivo de manifiesto, asigna el valor true a la propiedad dataStudio.useQueryConfig. Así, Data Studio sabrá que la función getData() del conector devolverá una configuración de consulta en lugar de datos.

Dado que la consulta de BigQuery se ejecutará en nombre del usuario autorizado, también debes incluir el permiso de OAuth de BigQuery ("https://www.googleapis.com/auth/bigquery.readonly") para solicitar autorización.

A continuación, se muestra el archivo de manifiesto de un conector, en el que se utilizan las credenciales del usuario autorizado para conectarse a BigQuery:

{
      "dataStudio": {
        "name": "BigQuery Public Dataset Demo",
        "logoUrl": "https://www.gstatic.com/images/branding/product/1x/data_connector_48dp.png",
        "company": "Data Studio DevRel",
        "companyUrl": "https://developers.google.com/datastudio/",
        "addOnUrl": "https://developers.google.com/datastudio/",
        "supportUrl": "https://developers.google.com/datastudio/",
        "description": "Use BigQuery public dataset with Data Studio's Advanced Services.",
        "useQueryConfig": true
      },
      "oauthScopes": ["https://www.googleapis.com/auth/bigquery.readonly"]
    }
    

Referencia de getData

Los conectores que utilizan Advanced Services de Data Studio devuelven un objeto de configuración de consulta cuando se utiliza la función getData. Dependiendo de la fuente de datos, es posible que esta configuración necesite propiedades adicionales. BigQuery, por ejemplo, requiere la propiedad bigQueryConnectorConfig.

A continuación, se incluye un ejemplo de cómo usar el servicio DataStudioApp para crear este objeto de configuración:

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

Ejemplo de la función 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 getData(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();
    }