0

这是我的数据样本

{"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),例如按年份划分。我如何改进我的查询以实现这一点,任何建议或指向我的示例或文档都会很棒。

4

1 回答 1

3

您可以改用CREATE TABLE按时间戳进行分区的语句:

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

文档说:

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

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

  • 每当您插入表时,将时间戳截断到年初。
  • 只需插入没有截断的时间戳,但是当您查询表时,按年初过滤,例如WHERE _PARTITIONTIME >= '2018-01-01'WHERE _PARTITIONTIME >= '2016-01-01' AND _PARTITIONTIME < '2018-01-01'
于 2018-03-05T15:55:27.373 回答