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

how do i create a table partitioned by date(yearly) in Google Bigquery

这是我的数据样本

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

这就是我尝试创建 table

的方式
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)创建分区 table,例如按年分区。我如何改进我的查询以实现这一目标,任何建议或指向示例或文档都会很棒。

您可以使用按时间戳分区的 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>) — partitions the table using the date of the TIMESTAMP column

如果打算按年份划分,您有两种选择:

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