在架构中使用计算字段

可以使用 formula 字段属性向连接器的架构添加计算字段

函数列表中,可以找到公式中支持使用的完整函数清单。此外,对于以下函数,还有进一步的说明文档:

在公式中引用其他字段的 ID 时,应在前面加上 $ 作为前缀。例如,如果字段 IDt_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() };
    }