自定义Google Data Studio连接器的数据类型DURATION失败

时间:2020-05-03 11:54:07

标签: google-apps-script google-data-studio timespan

我正在研究Google Datastudio的自定义连接器,该连接器会根据Google Data Studio Community Connectors文档和有关Building a custom Google Data Studio的非常好的文章,连接到特定的API服务。

通过API密钥进行身份验证。数据模式和数据字段的处理也很好。我正在检索和显示数据。

剩下的问题之一是数据类型转换。我的原始数据带有一个以分钟为单位的持续时间字段。 Google提供持续时间的数据类型,以秒为单位。因此,我将分钟转换为秒。

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

  fields.newDimension().setId('id').setName('ID').setType(types.NUMBER);
  fields.newDimension().setId('date').setName('Date').setType(types.YEAR_MONTH_DAY);
  fields.newDimension().setId('user_id').setName('User ID').setType(types.NUMBER);
  fields.newDimension().setId('user').setName('User').setType(types.TEXT);

  //fields.newMetric().setId('time').setName('Time').setType(types.DURATION).setAggregation(aggregations.SUM);
  fields.newMetric().setId('time').setName('Time').setType(types.NUMBER).setAggregation(aggregations.SUM);
  fields.newMetric().setId('revenue').setName('Revenue').setType(types.CURRENCY_EUR).setAggregation(aggregations.SUM);

  fields.setDefaultDimension('user');
  fields.setDefaultMetric('time');

  return fields;
}

持续时间以秒为单位的documentation on data types。因此,原始数据有180分钟的时间转换为10.800秒。如果我以NUMBER的形式返回该数据,则可以正确显示该数据。然后,如果我将UI中的数据类型切换为持续时间,它将被自动转换并显示为03:00:00(三个小时= 180分钟= 10.800秒)。但是,当我将原始数据返回为DURATION时,连接器将失败并且UI无法正常工作。

是否知道如何正确转换和设置DURATION类型的数据?

1 个答案:

答案 0 :(得分:1)

你会发现它很疯狂,但它确实有效:

您必须将持续时间作为表示秒数的字符串返回。

case 'DURATION':
      row.push((value===null) ? null : Number.parseInt(value).toString());
      break;

这对我有用;)