Erweiterte Looker Studio-Dienste

Wenn der Connector Daten aus BigQuery abruft, können Sie Looker Studio verwenden. Erweiterte Dienste zur Optimierung Ihres Connectors Anstatt BigQuery aufzurufen, API direkt verwenden, geben Sie eine Abfragekonfiguration an und Looker Studio ruft die Daten und das Schema für Sie.

Funktionsweise

Community-Connectors, die erweiterte Looker Studio-Dienste verwenden, funktionieren ähnlich wie einen normalen Anschluss.

Der wesentliche Unterschied ist die Antwort, die bei der Ausführung der getSchema()- und/oder getData()-Funktionen. Anstatt das gesamte Team wenn ein Schema und Daten zurückgegeben werden, können diese Funktionen Abfragekonfigurationen zurückgeben. Wenn eine Abfragekonfiguration zurückgegeben wird, ruft Looker Studio direkt die Schema und/oder Daten basierend auf der bereitgestellten Abfragekonfiguration.

Connector entwickeln

Community-Connectors, die erweiterte Looker Studio-Dienste verwenden, sind identisch mit Standard-Connectors mit zwei Ausnahmen.

  1. Einen zusätzlichen Manifestschlüssel
  2. Eine andere Antwort als getSchema() und/oder getData()

Manifestreferenz

Legen Sie im Manifest die folgenden Eigenschaften auf true fest.

  • Verwenden Sie für getSchema() die Property dataStudio.advancedServices.schema.
  • Verwenden Sie für getData() die Property dataStudio.advancedServices.data.

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

Wenn Sie Ihr eigenes Schema mit der Standardantwort getSchema() definieren möchten, legen Sie dataStudio.advancedServices.schema bis false im Manifest eingeben oder das weglassen Property. Dies ist erforderlich, wenn nicht alle Felder in Ihrem Schema durch eine einzelne BigQuery-Abfrage, z.B. wenn Sie einen Multi-Schema-Connector erstellen.

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

Im Folgenden finden Sie ein Connector-Manifest, das die Anmeldedaten des autorisierten Nutzers verwendet, um eine Verbindung zu BigQuery herstellen:

{
  "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"]
}

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

Referenz zu getData und getSchema

Connectors, die erweiterte Looker Studio-Dienste verwenden, geben ein Abfragekonfigurationsobjekt zurück für getSchema() und/oder getData(). Abhängig von der Datenquelle config kann zusätzliche Attribute erfordern.

Im Folgenden finden Sie ein Beispiel für die Verwendung des DataStudioApp-Dienstes zum Erstellen dieser Konfigurationsobjekts:

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 getSchema()- und getData()-Funktionen

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