我正在使用Dataflow连接Google Cloud Pub-Sub和BigQuery。我的Pub-Sub消息是JSON格式,有一个名为Temp的字段,温度为摄氏度。我正在尝试将以Celsius和Fahrenheit为单位的温度模式(称为TempC和TempF)添加到BigQuery表以及时间戳。代码正确添加了时间戳,但没有添加TempC和TempF。
我将代码复制到带有一些示例JSON文本的HTML文档中,并且在那里工作正常。
在UDF无法创建数字模式的地方有什么奇怪的东西吗?
我在javascript中的UDF是:
/**
* A transform function which adds the timestamp and converts temp from c to f
* @param {string} inJson
* @return {string} outJson
*/
function transform_udf1(inJson) {
var obj = JSON.parse(inJson);
var timestamp = getTime();
var tempc = parseFloat(obj.Temp);
var tempf = tempc * (9/5) + 32;
obj.Timestamp = timestamp;
obj.TempC = tempc;
obj.TempF = tempf;
return JSON.stringify(obj);
}
function getTime() {
var d = new Date();
return d;
}
我能够通过在我的网站上执行javascript转换来解决它。