在 bigquery 中创建分区 table 时如何设置时间戳

How to set to timestamp when creating a partitioned table in bigquery

这是我试过的

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

但在这种情况下,DateCreated 字段是 Date 类型,我想将其设为 TIMESTAMP 格式,我该怎么做?因为我的数据是这种格式 "DateCreated":"1519302159.042" 而不是 DATE 类型

您将无法将该表单的数据直接加载到 BigQuery table。不过,您有几个选择:

  • 使用分期table。
    1. 创建一个单独的 table,其中 DateCreated 列的类型为 FLOAT64
    2. 将您的数据从 CSV、JSON 或任何格式的 table 加载到此暂存区。
    3. 运行 INSERT 语句插入分区 table dataSet.myTableName。您可以使用 DATE(TIMESTAMP_MILLIS(CAST(DateCreated * 1000 AS INT64))) AS DateCreated 转换 DateCreated;这需要 FLOAT64 列并将其转换为 DATE。如果需要,您可以将时区传递给 DATE 函数。默认为 UTC。
  • 在加载数据之前使用 BigQuery 之外的工具来处理数据。

我个人的意见:我会使用 BigQuery 来满足您的所有处理需求,因为您只能 运行 查询。

您可以尝试这样的操作:

CREATE TABLE
  blockchains.timestamp_based_partitioned_transactions ( 
    status STRING NOT NULL,
    transactionHash STRING NOT NULL,
    blockNumber INT64 NOT NULL,
    sender STRING NOT NULL,
    receiver STRING NOT NULL,
    timestamp TIMESTAMP NOT NULL
    )
PARTITION BY
   DATE(timestamp)