Se o seu conector busca dados do BigQuery, você pode usar o Looker Studio Serviços avançados para otimizar seu conector. Em vez de chamar o serviço você fornece uma configuração de consulta, e o Looker Studio vai buscar o os dados e o esquema para você.
Como funciona
Os conectores da comunidade que usam o Advanced Services do Looker Studio funcionam de maneira semelhante em um conector normal.
A notável diferença é a resposta esperada da execução do
funções getSchema()
e/ou getData()
. Em vez de buscar e
retornar um esquema e dados, essas funções podem retornar configurações de consulta.
Quando uma configuração de consulta é retornada, o Looker Studio busca diretamente o
e/ou dados com base na configuração de consulta fornecida.
Como desenvolver seu conector
Os conectores da comunidade que usam o Advanced Services do Looker Studio são iguais aos conector normal com duas exceções.
Referência do manifesto
No manifesto, defina as propriedades a seguir como true
.
- Para
getSchema()
, use a propriedadedataStudio.advancedServices.schema
- Para
getData()
, use a propriedadedataStudio.advancedServices.data
O valor true
indica que, para a respectiva função, o conector
vai retornar uma configuração de consulta em vez de uma resposta padrão.
Para definir seu próprio esquema usando a resposta getSchema()
padrão, configure
dataStudio.advancedServices.schema
para false
no manifesto ou omite esse
. Isso é necessário quando nenhum campo do esquema pode ser representado por
uma única consulta do BigQuery, por exemplo, ao criar um conector com vários esquemas.
Como a consulta do BigQuery será executada em nome do usuário autorizado, você
também precisam incluir o escopo do OAuth do BigQuery
("https://www.googleapis.com/auth/bigquery.readonly"
) no manifesto para
solicitar autorização.
Veja a seguir um manifesto do conector com as credenciais do usuário autorizado para se conectar ao 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"]
}
Se você estiver usando uma conta de serviço para acessar o BigQuery, os
bigquery.readonly
O escopo do OAuth não é obrigatório no manifesto. No entanto,
deve ser adicionado à lista de escopos da conta de serviço.
Referência de getData
e getSchema
Os conectores que usam o Advanced Services do Looker Studio retornam um objeto de configuração de consulta
para getSchema()
e/ou getData()
. Dependendo da fonte de dados,
config pode precisar de mais propriedades.
Veja a seguir um exemplo de como usar o serviço DataStudioApp para criar esse objeto de configuração:
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();
Exemplo de função getSchema()
e 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)
}