Data Studio Advanced Services

Wenn Ihr Connector Daten aus BigQuery abruft, können Sie Data Studio Advanced Services verwenden, um ihn zu optimieren. Anstatt die BigQuery API direkt aufzurufen, geben Sie eine Abfragekonfiguration an. Data Studio ruft dann die Daten und das Schema für Sie ab.

Funktionsweise

Community-Connectors, die Data Studio Advanced Services verwenden, funktionieren ähnlich wie normale Connectors.

Der wesentliche Unterschied besteht in der Antwort, die von der Ausführung der getSchema() und/oder getData() Funktionen erwartet wird. Anstatt ein Schema und Daten abzurufen und zurückzugeben, können diese Funktionen Abfragekonfigurationen zurückgeben. Wenn eine Abfragekonfiguration zurückgegeben wird, ruft Data Studio das Schema und/oder die Daten direkt auf Grundlage der bereitgestellten Abfragekonfiguration ab.

Connector entwickeln

Community-Connectors, die Data Studio Advanced Services verwenden, sind mit normalen Connectors identisch, mit zwei Ausnahmen:

  1. Ein zusätzlicher Manifestschlüssel
  2. Eine andere Antwort von getSchema() und/oder getData()

Manifestreferenz

Legen Sie im Manifest die folgenden Attribute auf true fest.

  • Verwenden Sie für getSchema() das Attribut dataStudio.advancedServices.schema.
  • Verwenden Sie für getData() das Attribut dataStudio.advancedServices.data.

Der Wert true gibt an, dass Ihr Connector für die jeweilige Funktion eine Abfragekonfiguration anstelle der Standardantwort zurückgibt.

Wenn Sie ein eigenes Schema mit der Standardantwort getSchema() definieren möchten, legen Sie dataStudio.advancedServices.schema im Manifest auf false fest oder lassen Sie dieses Attribut weg. Dies ist erforderlich, wenn nicht alle Felder in Ihrem Schema durch eine einzelne BigQuery-Abfrage dargestellt werden können, z.B. wenn Sie einen Connector mit mehreren Schemas erstellen.

Da die BigQuery-Abfrage im Namen des autorisierten Nutzers ausgeführt wird, müssen Sie auch den BigQuery-OAuth-Bereich ("https://www.googleapis.com/auth/bigquery.readonly") in das Manifest aufnehmen, um die Autorisierung anzufordern.

Im Folgenden sehen Sie ein Connector-Manifest, in dem die Anmeldedaten des autorisierten Nutzers verwendet werden, um eine Verbindung zu BigQuery herzustellen:

{
  "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 Data Studio's Advanced Services.",
    "advancedServices": {
      "schema": true,
      "data": true
    }
  },
  "oauthScopes": ["https://www.googleapis.com/auth/bigquery.readonly"]
}

Wenn Sie ein Dienstkonto verwenden, um auf BigQuery zuzugreifen, ist der OAuth-Bereich bigquery.readonly im Manifest nicht erforderlich. Der Bereich sollte jedoch der Liste der Bereiche für das Dienstkonto hinzugefügt werden.

Referenz für getData und getSchema

Connectors, die Data Studio Advanced Services verwenden, geben ein Abfragekonfigurationsobjekt für getSchema() und/oder getData() zurück. Je nach Datenquelle sind für diese Konfiguration möglicherweise zusätzliche Attribute erforderlich.

Im folgenden Beispiel wird der DataStudioApp-Dienst verwendet, um dieses Konfigurationsobjekt zu erstellen:

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

Beispiel für die Funktionen getSchema() und 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)
}