计算字段


计算字段可扩展基本数据项的功能,而无需修改现有数据源。


这通过使用 Javascript 函数实现,这些函数将数据项中的原始值转换为计算字段值。在每个函数中,可以引用多个基本数据项。



语法


每个计算字段都是 Javascript 函数。


参数

名称 必需/可选 数据类型 说明
必需 对象 包含某个数据项的所有数据行
必需 对象 当前行引用
rowIndex 必需 编号 当前行的行号。第一行的 rowIndex 为 0。
全局 必需 对象 包含对所有页面参数的引用


注解

你不必使用 Javascript 函数中的所有参数。在下面的示例中,你将看到最常用的是 row 参数。


返回值

数据类型 说明
数字/字符串(取决于配置) 计算值


要使用参数或每行的任何单元格,如引用 Javascript 对象一样引用它。

var cell_score = row['score'];
var global_param_time = global.time;


为方便起见,你也可以使用 DTV 内置函数。

  • DTVFunc.sum(fieldId):返回数据项的所有值的总和
  • DTVFunc.average(fieldId):返回数据项的所有值的平均值



示例

转换时间戳

你可以使用计算字段将原始 Unix 时间戳转换为用户可读的值。下面的函数将原始时间戳转换为格式 yyyy/m/dd HH:MM:SS


function(rows, row, rowIndex, global){
  var timestamp = row['timestamp'];
  var date = new Date(timestamp); // Converts the timestamp into a Date object
  var year = date.getFullYear();
  var month = date.getMonth() + 1;
  var day = date.getDate();
  var hour = date.getHours();
  var minute = date.getMinutes();
  var second = date.getSeconds();
  if (isNaN(year)) {
    return '';
  } else {
    return year + '/' + month + '/' + day + ' ' + hour + ':' + minute + ':' + second;
  }
}


计算总计

DTV 仅支持按列聚合值。要按行聚合值,可以创建计算字段。例如,假设有 3 个数据项,每个数据项提供每种不同车型每年的汽车数量。你可以使用下面的函数返回每年的汽车总数。


function(rows, row, rowIndex, global){
    return row['sedan'] + row['suv'] + row['other'];
}


格式值

你可以使用计算字段设置基本数据项的格式。例如,电流的值可以为正或负,具体取决于它的方向。但是,大多数时候只需要幅值。下面的函数返回电流的幅值。


function(rows, row, rowIndex, global){
    var newCurrent = row['current'];
    if (newCurrent < 0) { // If value is negative, convert it to positive
    newCurrent *= -1;
    }
    return newCurrent;
}