אם המחבר מאחזר נתונים מ-BigQuery, אפשר להשתמש ב-Looker Studio שירותים מתקדמים לאופטימיזציה של המחבר. במקום לקרוא ל-BigQuery ישירות באמצעות ה-API, מספקים הגדרת שאילתה ו-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, ואז
bigquery.readonly
לא נדרש היקף הרשאות OAuth במניפסט. אבל,
צריך להוסיף את ההיקף לרשימת ההיקפים של חשבון השירות.
מסמך עזר של getData
ו-getSchema
מחברים שמשתמשים ב-Looker Studio Advanced Services מחזירים אובייקט config של שאילתה
עבור 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)
}