שירותים מתקדמים של Looker Studio

אם המחבר שלכם מאחזר נתונים מ-BigQuery, אתם יכולים להשתמש בשירותים המתקדמים של Looker Studio כדי לבצע אופטימיזציה של המחבר. במקום לקרוא ישירות ל-BigQuery API, אתם מספקים הגדרת שאילתה ו-Looker Studio יאחזר את הנתונים ואת הסכימה בשבילכם.

איך זה עובד

מחברים של הקהילה שמשתמשים בשירותים המתקדמים של Looker Studio פועלים באופן דומה למחבר רגיל.

ההבדל הבולט הוא התגובה שמתקבלת מההרצה של הפונקציות getSchema() ו/או getData(). במקום לאחזר סכימה ונתונים ולהחזיר אותם, הפונקציות האלה יכולות להחזיר הגדרות של שאילתות. כשמוחזרת הגדרת שאילתה, Looker Studio שולף ישירות את הסכימה או את הנתונים על סמך הגדרת השאילתה שסופקה.

פיתוח המחבר

מחברים של הקהילה שמשתמשים בשירותים המתקדמים של Looker Studio זהים למחבר רגיל, עם שני יוצאים מן הכלל.

  1. מפתח נוסף בקובץ המניפסט
  2. תשובה שונה מgetSchema() או מgetData()

הפניה למניפסט

במניפסט, מגדירים את המאפיינים הבאים לערך 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 מחזירים אובייקט של הגדרת שאילתה עבור 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)
}