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

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

איך זה עובד

מחברי קהילה שמשתמשים ב-Looker Studio Advanced Services פועלים כמו מחבר רגיל.

ההבדל הבולט הוא התגובה הצפויה מביצוע הפונקציות 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 תתבצע בשם המשתמש המורשה, צריך גם לכלול במניפסט את היקף ה-OAuth של BigQuery ("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, ההיקף של OAuth bigquery.readonly לא נדרש במניפסט. עם זאת, כדאי להוסיף את ההיקף לרשימת ההיקפים של חשבון השירות.

הפניה של 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)
}