Использование вычисляемых полей в схеме

Вычисляемые поля можно добавить в схему контейнера с помощью свойства поля 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() };
    }