我尝试在提取时间分区表中查询_PARTITIONTIME。这样做之后,我意识到每一行都产生了相同的错误时间戳:2019-02-25 00:00:00 UTC。我尝试提取_PARTITIONTIME的特定“部分”,但除日期外所有其他部分均产生0。
尽管数据流式传输到表中,但实际上每10分钟左右就批量插入一次(据我了解)。作为后续问题,何时计算_PARTITIONTIME?我看到了这个post,但我只了解流程,而不是实际计算的时间。
答案 0 :(得分:1)
_PARTITIONTIME
更像是_PARTITIONDATE
-您不应期望它包含记录流式传输的确切时间,而是分区所属的日期。
摄取时间分区表包括一个名为_PARTITIONTIME的伪列,其中包含用于加载到表中的数据的基于日期的时间戳。 https://cloud.google.com/bigquery/docs/partitioned-tables
答案 1 :(得分:0)
自 September 21, 2020 起,每小时时间分区功能为 GA。对于按小时分区的表,BQ 插入默认写入分区小时 00,除非在插入/摄取时间明确指定要写入的分区。可以使用 $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"