微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

如何将 bigQuery 作业返回的 float64 日期格式化为时间戳/日期?

如何解决如何将 bigQuery 作业返回的 float64 日期格式化为时间戳/日期?

我想要做的是使用这个查询创建一个工作:

sql 查询

SELECT execution_id,top_level_execution_id,process_id,atom_id,message,node_id,pay_load,environment_name,status,date_created,custom_message,dynamic_field1,dynamic_field2,dynamic_field3,RecordID FROM [boomi.process_errors]

之后,使用生成的 ID 运行作业并获取结果。

用于创建作业的 JSON:

{
   "configuration":{
      "query":{
         "defaultDataset":{
            "datasetId":"XXX","projectId":"XXX","tableId":"process_errors"
         },"query":"SELECT execution_id,RecordID FROM [boomi.process_errors]"
      }
   }
}

样本返回记录:

{
   "execution_id":"execution-c5723421-0fd9-47e3-9241-3520dfebf21d-2021.02.08","top_level_execution_id":"execution-c5723421-0fd9-47e3-9241-3520dfebf21d-2021.02.08","process_id":"b8fb913d-26da-40bc-bce4-11bf65db03db","atom_id":"eae5dcd2-af12-4c99-805e-12ae5bc5a5c5","message":"Error MesSAE\n","node_id":"atom01","pay_load":"TBD","environment_name":"TEST","status":"ERROR","date_created":"1.612789722974E9","custom_message":"Error hapened in Process","dynamic_field1":"abc123","dynamic_field2":"bca123","dynamic_field3":"abc321","RecordID":null
}

如您所见,日期为 FLOAT64:1.612789722974E9。 当我尝试从 bigQuery 控制台将日期格式化为时间戳时,它已经作为时间戳输入:2021-02-08 13:08:42.974 UTC。

我试图做的是改用这个查询

SELECT execution_id,CONCAT(DATE(USEC_TO_TIMESTAMP(CAST(date_created AS INTEGER))),'T',TIME(USEC_TO_TIMESTAMP(CAST(date_created AS INTEGER)))) as date_created,RecordID FROM [boomi.process_errors]

这将为我提供日期和时间,而不是毫秒。我认为时间也返回毫秒。 尝试使用 bigQuery 库中的各种函数,但没有一个适用于 float64。

顺便说一句,我使用 Dell Boomi 作为中间件层来创建作业、检索作业 ID 并运行它。我需要根据从此表中选择的内容自动创建报告,这就是我需要日期时间(包括毫秒)的原因。

我认为您可以在用于创建作业的配置中添加一些内容,以便以正常时间戳格式返回日期,但同样没有找到。

即使在 BigQuery 控制台中,它也说这是一个时间戳,那么为什么它存储为 FLOAT64?

enter image description here

解决方法

没关系,太复杂了。 我将列更改为 datetime 并且它有效。

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。