使用 bq 将数据加载到 BigQuery 的自定义日期格式?

Posted

技术标签:

【中文标题】使用 bq 将数据加载到 BigQuery 的自定义日期格式?【英文标题】:Custom date format for loading data into BigQuery, using bq? 【发布时间】:2015-11-21 23:42:53 【问题描述】:

我在命令行上使用 bq load 将 CSV 文件上传到 Google BigQuery。它工作得很好,但我有一个关于即时转换时间戳的问题。

在我的源数据中,我的时间戳被格式化为YYYYMM,例如201303 表示 2013 年 3 月。

但是,Google BigQuery 的 timestamp fields 被记录为仅支持 Unix 时间戳和 YYYY-MM-DD HH:MM:SS 格式字符串。所以不出所料,当我加载数据时,这些字段不会转换为正确的日期。

我有什么方法可以向 BigQuery 传达这些是 YYYYMM 字符串?

如果不能,我可以在加载之前对其进行转换,但我有大约 1TB 的源数据,所以我希望尽可能避免这种情况:)

【问题讨论】:

【参考方案1】:

另一种方法是将此字段加载为 STRING,并在 BigQuery 本身内将其转换为 TIMESTAMP,将数据复制到另一个表中(然后删除原始表),然后执行以下转换:

SELECT TIMESTAMP(your_ts_str + "01") AS ts

【讨论】:

看起来很有希望!您知道是否可以将其添加为 BigQuery 中的新列? 看起来这是添加新列的方式:***.com/a/16704021/194000 只是为了了解这个答案是否符合我的需要 - 你知道是否可以将转换后的时间戳值插入到 BigQuery 的新列中? 此答案假定您将通过发出 SELECT 并为目标表选择新名称来创建新表,并且可能还设置 AllowLargeResults=true【参考方案2】:

可以通过以下方式替代 Mosha 的答案:

SELECT DATE(CONCAT(your_ts_str, "01")) as ts

【讨论】:

以上是关于使用 bq 将数据加载到 BigQuery 的自定义日期格式?的主要内容,如果未能解决你的问题,请参考以下文章

Bigquery 自动转换数据中的字段

如何在不创建架构的情况下将 CSV 文件加载到 BigQuery

将数据流式传输到BigQuery

使用命令行将数据从 BigQuery 加载到 Google 表格中

BigQuery JSON 架构验证

BigQuery 从 bq 命令行工具加载数据 - 如何跳过标题行