Usar campos calculados en los esquemas

La propiedad de campo formula se puede usar para añadir campos calculados al esquema de tu conector.

La lista completa de funciones que se admiten en las fórmulas se puede consultar en el artículo Lista de funciones. Además, hay más documentación sobre lo siguiente:

Si quieres hacer referencia al ID de otro campo en una fórmula, añade el símbolo $ al principio. Por ejemplo, si el ID del campo es t_celsius, debes usar $t_celsius en la fórmula para hacer referencia a él.

Type de los campos calculados

Se admite Type en los campos calculados, pero el resultado de la fórmula debe coincidir con el formato esperado de ese Type.

Por ejemplo, en la siguiente fórmula:

"HYPERLINK($url, $description)"

Type debe ser HYPERLINK.

aggregation de los campos calculados

Si la fórmula implica una agregación, se debe asignar el valor AUTO a aggregation. En el artículo Lista de funciones, comprueba si la columna type incluye una función que devuelve una agregación. Si la fórmula no implica una agregación, asígnale el valor NONE.

Fórmula aggregation
"SUM($cost) / SUM($units)" AUTO
"$cost + $units" NONE

Ejemplos de campos calculados en esquemas

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() };
}