Jeśli oprogramowanie sprzęgające pobiera dane z BigQuery, możesz użyć zaawansowanych usług Looker Studio, aby zoptymalizować to oprogramowanie. Zamiast bezpośrednio wywoływać interfejs BigQuery API, podajesz konfigurację zapytania, a Looker Studio pobierze dane i schemat za Ciebie.
Jak to działa
Społeczność oprogramowanie sprzęgające korzystające z usług zaawansowanych Looker Studio działa podobnie do zwykłego oprogramowania sprzęgającego.
Ważna różnica to odpowiedź oczekiwana po wykonaniu funkcji getSchema()
lub getData()
. Zamiast pobierać oraz zwracać schemat i dane, funkcje te mogą zwracać konfiguracje zapytań.
Gdy zostanie zwrócona konfiguracja zapytania, Looker Studio bezpośrednio pobierze schemat lub dane na podstawie podanej konfiguracji zapytania.
Opracowywanie oprogramowania sprzęgającego
Społecznościowe oprogramowanie sprzęgające korzystające z usług zaawansowanych Looker Studio jest takie samo jak zwykłe oprogramowanie sprzęgające, z 2 wyjątkami.
Odwołanie do pliku manifestu
W pliku manifestu ustaw te właściwości na true
.
- W przypadku
getSchema()
użyj właściwościdataStudio.advancedServices.schema
- W przypadku
getData()
użyj właściwościdataStudio.advancedServices.data
Wartość true
wskazuje, że w przypadku odpowiedniej funkcji oprogramowanie sprzęgające zwróci konfigurację zapytania zamiast standardowej odpowiedzi.
Aby zdefiniować własny schemat za pomocą standardowej odpowiedzi getSchema()
, ustaw opcję dataStudio.advancedServices.schema
na false
w pliku manifestu lub pomiń tę właściwość. Jest to konieczne, gdy żadne pola w schemacie nie mogą być reprezentowane przez pojedyncze zapytanie BigQuery, np. podczas tworzenia oprogramowania sprzęgającego z wieloma schematami.
Zapytanie BigQuery będzie wykonywane w imieniu autoryzowanego użytkownika, więc aby poprosić o autoryzację, musisz też umieścić w pliku manifestu zakres OAuth BigQuery ("https://www.googleapis.com/auth/bigquery.readonly"
).
Poniżej zamieściliśmy plik manifestu oprogramowania sprzęgającego z BigQuery przy użyciu danych logowania autoryzowanego użytkownika:
{
"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"]
}
Jeśli uzyskujesz dostęp do BigQuery za pomocą konta usługi, zakres protokołu OAuth bigquery.readonly
nie jest wymagany w pliku manifestu. Zakres należy jednak dodać do listy zakresów konta usługi.
Pliki referencyjne getData
i getSchema
Oprogramowanie sprzęgające korzystające z usług zaawansowanych Looker Studio zwraca obiekt konfiguracji zapytania dla funkcji getSchema()
lub getData()
. W zależności od źródła danych ta konfiguracja może wymagać dodatkowych właściwości.
Poniżej znajdziesz przykład użycia usługi DataStudioApp do utworzenia obiektu konfiguracji:
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();
Przykładowa funkcja getSchema()
i 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)
}