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

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

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

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

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

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

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

"HYPERLINK($url, $description)"

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

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

אם הנוסחה כוללת צבירה, יש להגדיר את aggregation לערך AUTO. בודקים את העמודה type ברשימת הפונקציות כדי לראות אם יש פונקציה מחזירה פונקציית צבירה. אם הנוסחה לא כוללת צבירה, יש להגדיר אותה אל 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() };
}