在bigquery中转换整个表的时间戳
Posted
技术标签:
【中文标题】在bigquery中转换整个表的时间戳【英文标题】:Converting timestamp on whole table in bigquery 【发布时间】:2020-11-22 10:54:49 【问题描述】:我有一张存储数百万行数据的表。该数据具有指示数据输入时间的日期。我将数据存储在NUMERIC
模式中,格式为EPOCH UNIX
。但是,我想将它们转换为人类日期(yyyy-mm-dd hh:mm:ss),然后按日期而不是查询日期对它们进行排序。
但是,我花了很长时间才找到合适的方法。这是我的尝试。
我使用了SELECT CAST(DATE(timestamp) AS DATE) AS CURR_DT FROM dataset.table
,但它给了我这个错误:
对于参数类型的函数 DATE 没有匹配的签名:NUMERIC。支持的签名:DATE(TIMESTAMP, [STRING]);日期(日期时间);日期(INT64,INT64,INT64)在 [1:13]
我用了BigQuery: convert epoch to TIMESTAMP这个方法但是还是没完全明白
我是编码新手,所以希望你们了解情况。谢谢!
【问题讨论】:
你对那个答案有什么不明白的地方?它似乎回答了你的问题,这使得它重复了。顺便说一下,按日期和 Unix 纪元排序是一回事。 【参考方案1】:如果我正确理解了您的问题,您是否希望采用一个数字 EPOCH 时间,该时间存储为整数并将其转换为时间戳? 如果是这样,您可以在 BigQuery 标准 SQL 中使用以下内容:
select TIMESTAMP_SECONDS(1606048220)
它给出以下输出:
2020-11-22 12:30:20 UTC
Documentation
【讨论】:
【参考方案2】:如果您只想要日期组件,那么您将在转换为时间戳后转换为日期。大概你有秒数,所以你会使用TIMESTAMP_SECONDS()
——但毫秒和微秒有类似的函数。
只是日期:
select date(timestamp_seconds(col))
请注意,这会删除时间组件。
【讨论】:
以上是关于在bigquery中转换整个表的时间戳的主要内容,如果未能解决你的问题,请参考以下文章
将 unix 时间戳转换为 avro 并将其存储在 BigQuery 中