使用特定时间戳列将 CSV 导入 BigQuery 上的分区表?

Posted

技术标签:

【中文标题】使用特定时间戳列将 CSV 导入 BigQuery 上的分区表?【英文标题】:Import CSV to partitioned table on BigQuery using specific timestamp column? 【发布时间】:2016-07-05 04:04:27 【问题描述】:

我想将一个大型 csv 导入到一个 bigquery 分区表中,该表的时间戳类型列实际上是某个事务的日期,问题是当我加载数据时,它会将所有内容都导入到今天日期的一个分区中。

是否可以使用我自己的时间戳值对其进行分区?我该怎么做。

【问题讨论】:

【参考方案1】:

BigQuery 目前不支持基于特定列的分区。 即使此列与日期相关(时间戳)。 您要么依赖插入时间,以便 BigQuery 引擎将插入相应的分区,要么指定要将数据插入的确切分区 查看更多关于Creating and Updating Date-Partitioned Tables

【讨论】:

【参考方案2】:

目前最好的方法是使用 Google Dataflow [1]。您可以开发一个流式传输pipeline,它将从 Google Cloud Storage 存储桶中读取文件并将行插入 BigQuery 的表中。

您需要在运行管道之前手动创建分区表 [2],因为 Dataflow 目前不支持创建分区表

[3] 中提供了多个示例

[1]https://cloud.google.com/dataflow/docs/

[2]https://cloud.google.com/bigquery/docs/creating-partitioned-tables

[3]https://cloud.google.com/dataflow/examples/all-examples

【讨论】:

以上是关于使用特定时间戳列将 CSV 导入 BigQuery 上的分区表?的主要内容,如果未能解决你的问题,请参考以下文章

BigQuery 日期和时间函数在时间戳列上返回 NULL

如何使用第一行的列名将 CSV 导入 BigQuery 上的现有表?

BigQuery - 如何在不使用列名作为值的情况下导入 CSV?

Bigquery:如何将 2 个时间戳列合并为 1 个列?

如何在 Bigquery 中将 csv 的所有列作为字符串导入 [关闭]

BigQuery CSV 导入:允许锯齿行