Google Cloud Dataflow to BigQuery - UDF - 将 unixTimestamp 转换为本地时间

问题描述

在以下场景中,将 unixTimestamp 转换为本地时间的最佳方法是什么?

  • 我正在使用 Pub/Sub Subscription to BigQuery Template。 Dataflow 从 PubSub 获取 json 格式的数据,进行转换,插入 BigQuery
  • 最好,我想使用 UDF 进行数据转换设置。
  • (为简单起见,)输入数据仅包括 unixTimestamp。例子: {"unixTimestamp": "1612325106000"}
  • Bigquery 表有 3 列:
unix_ts:INTEGER,iso_dt:DATETIME,local_dt:DATETIME 

unix_ts 将保持输入的 unixTimestamp 原样,iso_dt 将保持 UTC 日期时间,local_dt 将保持欧洲/法兰克福日期时间。 示例:1612325106000,2021-02-03T04:05:06,2021-02-03T05:05:06

我希望以下方法能奏效,但没有。 unix_ts 和 iso_dt 结果如预期,但 local_dt 是导致失败的部分。你的建议是什么?谢谢

function transform(injson) {
   var input = JSON.parse(injson);

   var v_date = new Date(parseInt(input.unixTimestamp));

   var v_iso_dt = v_date.toISOString().replace('Z','');
   var v_local_dt = v_date.toLocaleString('en-US',{timeZone: 'Europe/Frankfurt'});

   var output = {
       "unix_ts": input.unixTimestamp || null,"iso_dt": v_iso_dt  || null,"local_dt": v_local_dt  || null
   };
}

编辑:(更改)示例中的 1612325106 到 1612325106000。

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)