查询 _PARTITIONTIME 只产生一个日期

Querying _PARTITIONTIME only yields a date

我试图在我的摄取时间分区中查询 _PARTITIONTIME table。这样做后,我意识到每一行都产生了一个相同的错误时间戳:2019-02-25 00:00:00 UTC。我试图提取 _PARTITIONTIME 的特定 'parts',但除日期外所有这些都产生了 0。

尽管数据流式传输到 table,但实际上每 10 分钟左右(据我了解)会分批插入一次。作为后续问题,_PARTITIONTIME 何时计算?这个我看到了,但是我只理解了流程,并没有真正计算出来

_PARTITIONTIME 更像是一个 _PARTITIONDATE - 你不应该期望它包含流式传输记录的确切时间,而是分区所属的日期。

Ingestion-time partitioned tables include a pseudo column named _PARTITIONTIME that contains a date-based timestamp for data that is loaded into the table. https://cloud.google.com/bigquery/docs/partitioned-tables

截至September 21, 2020,每小时时间分区功能是 GA。对于按小时分区的表,BQ 插入默认写入分区小时 00,除非在 insertion/ingestion 时间明确指定要写入的分区。可以使用 $YYYYMMDDHH 或按照 SQL 语句指定分区:

INSERT INTO
  project_id.dataset.mytable (
    _PARTITIONTIME,
    field1,
    field2)
SELECT
  TIMESTAMP_TRUNC(TIMESTAMP "2008-12-25 15:30:00+00", HOUR, "UTC"),
  1,
  "one"