Nếu trình kết nối của bạn tìm nạp dữ liệu từ BigQuery, thì bạn có thể dùng Looker Studio Dịch vụ nâng cao để tối ưu hoá trình kết nối của bạn. Thay vì gọi BigQuery trực tiếp bằng API, bạn chỉ cần cung cấp một cấu hình truy vấn và Looker Studio sẽ tìm nạp và giản đồ cho bạn.
Cách hoạt động
Những trình kết nối cộng đồng sử dụng các Dịch vụ nâng cao của Looker Studio hoạt động tương tự như một trình kết nối thông thường.
Sự khác biệt đáng chú ý là phản hồi dự kiến từ quá trình thực thi của
Các hàm getSchema()
và/hoặc getData()
. Thay vì tìm nạp và
trả về giản đồ và dữ liệu, các hàm này có thể trả về cấu hình truy vấn.
Khi cấu hình truy vấn được trả về, Looker Studio sẽ trực tiếp tìm nạp
giản đồ và/hoặc dữ liệu dựa trên cấu hình truy vấn đã cung cấp.
Phát triển trình kết nối
Trình kết nối cộng đồng sử dụng các Dịch vụ nâng cao của Looker Studio giống như một trình kết nối thông thường với hai ngoại lệ.
Tài liệu tham khảo trong tệp kê khai
Trong tệp kê khai, hãy đặt các thuộc tính sau thành true
.
- Đối với
getSchema()
, hãy sử dụng thuộc tínhdataStudio.advancedServices.schema
- Đối với
getData()
, hãy sử dụng thuộc tínhdataStudio.advancedServices.data
Giá trị của true
cho biết rằng đối với chức năng tương ứng, trình kết nối của bạn
sẽ trả về cấu hình truy vấn thay vì phản hồi chuẩn.
Để xác định giản đồ của riêng bạn bằng cách sử dụng phản hồi getSchema()
tiêu chuẩn, hãy đặt
dataStudio.advancedServices.schema
sang false
trong tệp kê khai hoặc bỏ qua thuộc tính này
thuộc tính này. Điều này là cần thiết khi tất cả các trường trong giản đồ của bạn không thể được biểu thị bằng
một truy vấn BigQuery, ví dụ: khi tạo trình kết nối nhiều giản đồ.
Vì truy vấn BigQuery sẽ được thực thi thay mặt cho người dùng được uỷ quyền, nên bạn
cũng cần thêm phạm vi BigQuery OAuth
("https://www.googleapis.com/auth/bigquery.readonly"
) trong tệp kê khai để
yêu cầu uỷ quyền.
Dưới đây là tệp kê khai trình kết nối sử dụng thông tin đăng nhập của người dùng được cấp phép để kết nối với 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"]
}
Nếu bạn đang dùng một tài khoản dịch vụ để truy cập BigQuery, thì
bigquery.readonly
Không bắt buộc phải có phạm vi OAuth trong tệp kê khai. Tuy nhiên,
Bạn nên thêm phạm vi vào danh sách phạm vi cho tài khoản dịch vụ.
Tham chiếu getData
và getSchema
Trình kết nối sử dụng Dịch vụ nâng cao của Looker Studio sẽ trả về một đối tượng cấu hình truy vấn
dành cho getSchema()
và/hoặc getData()
. Tuỳ thuộc vào nguồn dữ liệu,
config có thể cần thuộc tính bổ sung.
Sau đây là ví dụ về cách sử dụng dịch vụ DataStudioApp để tạo đối tượng cấu hình:
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();
Ví dụ về hàm getSchema()
và 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)
}