使用 bq 将数据加载到 BigQuery 的自定义日期格式?
Custom date format for loading data into BigQuery, using bq?
我正在使用命令行上的 bq load
将 CSV 文件上传到 Google BigQuery。它工作得很好,但我有一个关于即时转换时间戳的问题。
在我的源数据中,我的时间戳格式为 YYYYMM
,例如201303
表示 2013 年 3 月。
但是,Google BigQuery 的 timestamp fields 被记录为仅支持 Unix 时间戳和 YYYY-MM-DD HH:MM:SS
格式字符串。所以毫不奇怪,当我加载数据时,这些字段不会转换为正确的日期。
有什么方法可以让 BigQuery 知道这些是 YYYYMM
个字符串?
如果没有,我可以在加载之前转换它们,但我有大约 1TB 的源数据,所以我希望尽可能避免这种情况:)
另一种方法是将此字段加载为 STRING,并将其转换为 BigQuery 本身内部的 TIMESTAMP,将数据复制到另一个 table(然后删除原始数据),并进行以下转换:
SELECT TIMESTAMP(your_ts_str + "01") AS ts
可以通过以下方式替代 Mosha 的答案:
SELECT DATE(CONCAT(your_ts_str, "01")) as ts
我正在使用命令行上的 bq load
将 CSV 文件上传到 Google BigQuery。它工作得很好,但我有一个关于即时转换时间戳的问题。
在我的源数据中,我的时间戳格式为 YYYYMM
,例如201303
表示 2013 年 3 月。
但是,Google BigQuery 的 timestamp fields 被记录为仅支持 Unix 时间戳和 YYYY-MM-DD HH:MM:SS
格式字符串。所以毫不奇怪,当我加载数据时,这些字段不会转换为正确的日期。
有什么方法可以让 BigQuery 知道这些是 YYYYMM
个字符串?
如果没有,我可以在加载之前转换它们,但我有大约 1TB 的源数据,所以我希望尽可能避免这种情况:)
另一种方法是将此字段加载为 STRING,并将其转换为 BigQuery 本身内部的 TIMESTAMP,将数据复制到另一个 table(然后删除原始数据),并进行以下转换:
SELECT TIMESTAMP(your_ts_str + "01") AS ts
可以通过以下方式替代 Mosha 的答案:
SELECT DATE(CONCAT(your_ts_str, "01")) as ts