【问题标题】:Data type DURATION fails for custom Google Data Studio connector自定义 Google Data Studio 连接器的数据类型 DURATION 失败
【发布时间】:2020-08-17 19:17:08
【问题描述】:

我正在为 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 类型的数据吗?

【问题讨论】:

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


    【解决方案1】:

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

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

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

    这对我有用;)

    【讨论】:

    • 是的,也找到了解决方案 :) 疯狂的东西
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2018-10-15
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-02-04
    • 2019-03-16
    相关资源
    最近更新 更多