Если ваш коннектор получает данные из BigQuery, вы можете использовать Looker Studio Advanced Services для оптимизации вашего коннектора. Вместо прямого вызова API BigQuery вы предоставляете конфигурацию запроса, и Looker Studio получит для вас данные и схему.
Как это работает
Соединители сообщества, использующие дополнительные службы Looker Studio, работают аналогично обычному соединителю.
 Заметным отличием является ответ, ожидаемый от выполнения функций getSchema() и/или getData() . Вместо получения и возврата схемы и данных эти функции могут возвращать конфигурации запроса. Когда возвращается конфигурация запроса, Looker Studio напрямую извлекает схему и/или данные на основе предоставленной конфигурации запроса.
Разработка вашего коннектора
Соединители сообщества, использующие дополнительные службы Looker Studio, аналогичны обычным соединителям, за двумя исключениями.
Ссылка на манифест
 В манифесте установите для следующих свойств значение true .
-  Для getSchema()используйте свойствоdataStudio.advancedServices.schema.
-  Для getData()используйте свойствоdataStudio.advancedServices.data
 Значение true указывает, что для соответствующей функции ваш соединитель вернет конфигурацию запроса вместо стандартного ответа.
 Чтобы определить собственную схему с помощью стандартного ответа getSchema() , установите dataStudio.advancedServices.schema значение false в манифесте или опустите это свойство. Это необходимо, когда все поля в вашей схеме не могут быть представлены одним запросом BigQuery, например, когда вы создаете соединитель с несколькими схемами.
 Поскольку запрос BigQuery будет выполняться от имени авторизованного пользователя, вам также необходимо включить область BigQuery OAuth ( "https://www.googleapis.com/auth/bigquery.readonly" ) в манифест для запроса авторизации.
Ниже приведен манифест коннектора, использующий учетные данные авторизованного пользователя для подключения к 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"]
}
 Если вы используете сервисный аккаунт для доступа к BigQuery, то область OAuth bigquery.readonly в манифесте не требуется. Однако область следует добавить в список областей для учетной записи службы.
 Ссылка на getData и getSchema
 Соединители, использующие дополнительные службы Looker Studio, возвращают объект конфигурации запроса для getSchema() и/или getData() . В зависимости от источника данных для этой конфигурации могут потребоваться дополнительные свойства.
Ниже приведен пример использования службы DataStudioApp для создания этого объекта конфигурации:
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();
 Пример функции getSchema() и 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)
}