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

时间:2018-03-05 10:31:00

标签: google-bigquery standard-sql

这是我的数据样本

{"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,我该怎么做,目的是创建一个分区表date(在我的例子中是DateCreated),例如by year by year。如何改进我的查询以实现这一点,任何建议或指向我的示例或文档都会很棒。

1 个答案:

答案 0 :(得分:3)

您可以使用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'