JavaScript转换器
JavaScript转换器(JavaScript transformer)允许用户定义自己的脚本,该脚本可以执行相当复杂的操作,比如调节、循环。它也可以用来表达小型企业的规则。
对于本文档,JavaScript的完整引用超出了范围。但是我们将展示一些例子,更重要的是讨论可用的变量及其类型。
JavaScript转换器返回一个字符串。输入的脚本应提供此字符串作为脚本的最后一行。这就是模板脚本如下所示的原因(因此您可以实现eval()函数):
function eval() {
return \"hello \" + values[0];
}
eval();
变量(Variables):
变量(Variable) | 说明(Description) |
---|---|
values | 行数据中所有值的数组(由“Columns”属性映射)。 使用“values”可以获取第一个和第三个值,例如: var first = values[0]; var third = values[2]; 注意JavaScript数组索引是基于0的。也可以通过列名获取,而不是索引,如下所示: var idValue = values[“id”]; |
column_name* | 保留了变量名的任何列名也可作为变量直接使用到脚本的作用域中是同样有效的。 例如,如果有两个列,FIRST_NAME 和 LAST_NAME,则可以轻松地将它们连接起来: var fullname = FIRST_NAME + " " + LAST_NAME; |
out | 对系统控制台的“输出”流的引用。 如果在控制台可见的情况下运行DataCleaner,则可以将消息打印到控制台,如下所示: out.println("Value: " + values[0]); |
log | 对日志模块的引用。可以配置日志记录,日志消息存储在文件中,这比简单地使用“out”更灵活。下面是如何编写一些严重程度不同的日志消息: log.debug(“This is a DEBUG message, it will probably be disregarded”); log.info(“This is a INFO message, it will probably be written to the logs”); log.warn(“This is a WARN message, it will most likely be written to the logs”); log.error(“This is a ERROR message, it will almost certainly be written to the logs”); |
数据类型(Data types):
数据类型(Data types) | 说明(Description) |
---|---|
STRING | 字符串值表示为JavaScript字符串,这意味着它们(除其他外)具有如下方法: var str = values[0]; // get the length of a string var len = str.length(); // uppercase variant of a string var up = str.toUpperCase(); // lowercase variant of a string var lw = str.toLowerCase(); 更多信息,我们建议使用W3 schools JavaScript字符串资料。 |
NUMBER | Numbers 被视为常规的JavaScript Numbers , 这意味着它们(除其他外)具有如下方法和运算符: var num = values[0]; // format with 2 decimals var formattedNumber = num.toFixed(2); // add, subtract, multiply or divide var m = (4 + num * 2 - 1) / 2; 有关更多信息,我们推荐查阅W3 schools JavaScript number资料 |
DATE | 日期值有点不同被视为Java日期,但留给您的接口几乎与常规JavaScript日期相同。 以下是典型方法的总结: var d = values[0]; var year = d.getYear(); var month = d.getMonth(); var date = d.getDate(); var hour = d.getHour(); var minutes = d.getMinutes(); var seconds = d.getSeconds(); // milliseconds since 1970-01-01 var timestamp = d.getTime(); 更完整的资料,请查阅Java日期类。 |
BOOLEAN | 布尔值(真/假)true/false |