如何在Google Bigquery中创建按日期(每年)分区的表格

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了如何在Google Bigquery中创建按日期(每年)分区的表格相关的知识,希望对你有一定的参考价值。

这是我的数据样本

{"userName":"sampleUserName","DateCreated":"1519302159.248"}

这就是我试图创建表格的方式

CREATE TABLE dataSet.myTableName (userName string, DateCreated DATE, email string)
 PARTITION BY DateCreated
 OPTIONS(
   description="a table partitioned by DateCreated"
 )

但是当我尝试从newline_delimited_json从命令行加载数据时,我得到了这个错误

 Invalid schema update. Field DateCreated has changed type from DATE to TIMESTAMP

我认为问题是DateCreated字段是DATE类型,我不知道如何使它成为TIMESTAMP,文档说使用partition_expression,我该怎么做,目的是按日期创建一个分区表(在我的情况是由DateCreated)例如按年分区。我如何改进我的查询以实现这一点,任何建议或指向我的示例或文档将是伟大的。

答案

您可以使用带时间戳分区的CREATE TABLE语句:

CREATE TABLE dataSet.myTableName
(
  userName STRING,
  DateCreated TIMESTAMP,
  email STRING
)
PARTITION BY DATE(DateCreated)
OPTIONS(
  description="a table partitioned by DateCreated"
)

documentation说:

PARTITION BY DATE(<timestamp_column>) - 使用TIMESTAMP列的日期对表进行分区

如果打算按年划分,您有几个选择:

  • 每当您插入表格时,都会将时间戳截断到年初。
  • 只需插入时间戳而不截断,但在查询表时,按年份开始过滤,例如WHERE _PARTITIONTIME >= '2018-01-01'WHERE _PARTITIONTIME >= '2016-01-01' AND _PARTITIONTIME < '2018-01-01'

以上是关于如何在Google Bigquery中创建按日期(每年)分区的表格的主要内容,如果未能解决你的问题,请参考以下文章

我们可以在 BigQuery 中自定义函数吗?如何在 BigQuery 中创建日期参数?

如何在 google bigquery 中创建计算列?

如何在 Google BigQuery 中获取日期名称

如何在 google BigQuery 中填写缺失的日期

如何在 Google App Engine 上为 BigQuery 设置截止日期

如何在 Google Bigquery 中创建动态更改数据集的查询?