Bigquery 在日分区表中加载数据

Posted

技术标签:

【中文标题】Bigquery 在日分区表中加载数据【英文标题】:Bigquery load data in Day-partitioned tables 【发布时间】:2016-06-09 16:04:58 【问题描述】:

我想创建按天分区的数据并从 Cloude Storage 加载数据。 我已经完成的步骤

    bq mk --time_partitioning_type=DAY myDataSet.dailytable

    bq load --source_format=AVRO myProjectId:myDataSet.dailytable$20150510 gs://myBucket/path/2016-05-10/*

实际结果:

我有 2 个表:dailyTable 和 dailyTable$0150510

预期结果:

我有 2 张桌子 dailyTable 和 dailyTable$20150510

这是预期的行为吗?

【问题讨论】:

【参考方案1】:

在 Unix shell 上,'$' 是一个特殊字符,您需要对其进行转义,或者将整个表名放在单引号中,如下所述:

https://cloud.google.com/bigquery/docs/partitioned-tables#addressing_table_partitions

这样你不会得到两张桌子。 myDataSet.dailytable 将有一个单独的分区“myDataSet.dailytable$20150510”,对应于 2015 年 5 月 10 日。该分区是可寻址的,就好像它是一个表一样。

【讨论】:

谢谢,它有帮助。 bq load --source_format=AVRO 'myProjectId:myDataSet.dailytable$20160510' gs://myBucket/2016-05-10/* 工作正常 是否可以使用通配符来避免一次加载一天? 目前不可能。我们正在努力支持对用户指定的日期或时间戳列进行分区,此时您将能够直接使用表名。当我们有可用的功能时,我们将提供更新。谢谢! @PavanEdara 有关此功能的更多信息?将“遗留”数据加载到 BQ 时会非常有用。

以上是关于Bigquery 在日分区表中加载数据的主要内容,如果未能解决你的问题,请参考以下文章

列中的 BigQuery 日期分区

Spark 1.6 在数据帧保持分区字段中加载特定分区

在数据块中加载增量表特定分区的最佳实践是啥?

如何禁止向BigQuery加载重复的行?

Apache Pig 中的 HCatalog 可以只加载特定分区吗?

为啥 Parquet 文件中的数据在 BigQuery 表中加载后与源数据不匹配