שימוש בשדות מחושבים בסכימה

אפשר להשתמש במאפיין השדה formula כדי להוסיף שדות מחושבים לסכימה של המחבר.

הרשימה המלאה של הפונקציות שנתמכות בנוסחאות מופיעה ברשימת הפונקציות. בנוסף, יש מסמכים נוספים בנושאים הבאים:

כשמזינים בנוסחה ערך של ID של שדה אחר, צריך להוסיף לו את הקידומת $. לדוגמה, אם השדה ID הוא t_celsius, צריך להתייחס אליו בתור $t_celsius בנוסחה.

Type לשדות מחושבים

יש תמיכה ב-Type בשדות מחושבים, אבל הפלט של הנוסחה חייב להיות תואם לפורמט הצפוי של השדה Type.

לדוגמה, עבור הנוסחה:

"HYPERLINK($url, $description)"

הערך בשדה Type צריך להיות HYPERLINK.

aggregation לשדות מחושבים

אם הנוסחה כוללת צבירה, הערך של aggregation צריך להיות AUTO. בודקים את העמודה type ב-Function List (רשימת פונקציות) כדי לראות אם פונקציה מחזירה צבירה. אם הנוסחה לא כוללת צבירה, צריך להגדיר אותה כ-NONE.

נוסחה aggregation
"SUM($cost) / SUM($units)" AUTO
"$cost + $units" NONE

דוגמאות לשדות מחושבים בסכימה

function getSchema(request) {
  var cc = DataStudioApp.createCommunityConnector();
  var fields = cc.getFields();
  var types = cc.FieldType;
  var aggregations = cc.AggregationType;

  fields.newDimension()
      .setId('date')
      .setName('Date')
      .setDescription('Date of measurement')
      .setType(types.YEAR_MONTH_DAY);

  fields.newMetric()
      .setId('t_celsius')
      .setName('Temperature (Celsius)')
      .setDescription('Temperature in Celsius')
      .setType(types.NUMBER)
      .setAggregation(aggregations.NONE);

  fields.newMetric()
      .setId('t_fahrenheit')
      .setName('Temperature (Fahrenheit)')
      .setDescription('Temperature in Fahrenheit')
      .setFormula('$t_celsius / 5 * 9 + 32')
      .setType(types.NUMBER)
      .setAggregation(aggregations.NONE);

  fields.newMetric()
      .setId('average_temperature (Celsius)')
      .setName('Average Temperature (Celsius)')
      .setDescription('Temperature in Fahrenheit')
      .setFormula('AVG($t_celsius)')
      .setType(types.NUMBER)
      .setAggregation(aggregations.AUTO);

  fields.newMetric()
      .setId('average_temperature (Celsius)')
      .setName('Average Temperature (Celsius)')
      .setDescription('Temperature in Fahrenheit')
      .setFormula('AVG($t_celsius / 5 * 9 + 32)')
      .setType(types.NUMBER)
      .setAggregation(aggregations.AUTO);

  fields.newDimension()
      .setId('feels_like')
      .setName('Feels Like')
      .setDescription('What it feels like outside.')
      .setFormula('CASE WHEN $t_celsius < 0 THEN "Freezing" WHEN $t_celsius > 40 THEN "Too warm" ELSE "Not bad" END')
      .setType(types.TEXT);

  return { 'schema': fields.build() };
}