我正在研究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
类型的数据?
答案 0 :(得分:1)
你会发现它很疯狂,但它确实有效:
您必须将持续时间作为表示秒数的字符串返回。
case 'DURATION':
row.push((value===null) ? null : Number.parseInt(value).toString());
break;
这对我有用;)