繁体   English   中英

bigquery:从查询结果创建分区表不会分区旧时间戳

[英]bigquery: create partitioned table from query results does NOT partition old timestamps

我正在尝试从 BigQuery 中的公共数据集中对表进行分区。

这是所需 output 的standard SQL查询:

#standardSQL
CREATE OR REPLACE TABLE <TARGET_TABLE_REF>
    PARTITION BY 
        DATE(trip_start_timestamp) 
    AS  (
        SELECT trip_start_timestamp, trip_seconds, fare, tips
        FROM bigquery-public-data.chicago_taxi_trips.taxi_trips
        WHERE 
            trip_start_timestamp  >= '2022-01-01' AND
            trip_start_timestamp  <  '2022-07-01'
    );
   

我正在使用Python BigQuery Client运行查询,output 是一个仅过滤从 2022-06-15 到 2022-06-01 的时间戳的表。

预期的 output当然是一个分区表,其过滤日期范围在限定过滤器(即 WHERE 子句)中指定。

正如其他帖子中所建议的那样,我尝试重新创建目标表,使用 TIMESTAMP 和 DATE 函数转换时间戳,完全删除 WHERE 子句等。分区表没有选择早于 2022 年 6 月或 2022 年 5 月的时间戳。

这是一个与问题相关的问题,实际上没有答案,但有一些有用的评论。

我尝试了什么?

  • CAST子句中的时间戳转换为TIMESTAMP和/或DATE
  • 测试没有分区的相同查询(这没关系)
  • PARSE_TIMESTAMP

是否有任何有见地的读者可以对此重新审视并提供一些见解?

编辑:

由于下面的@Brad 回答无法解决问题,因此我提供了有关本地环境的更多上下文。 我已经用不同的数据集测试了相同的脚本,但仍然无法获得旧日期的任何 output。 符合条件的过滤器只选择从 2022 年 5 月到 2022 年 6 月的日期。在此之前的任何时间都不会在 output 表中报告。

 OS: 
 VERSION="22.04.1 LTS (Jammy Jellyfish)"
 Linux Kernel 5.15.0-46-generic
 Runtime: Python 3.10.4 [GCC 11.2.0] on linux
 Text Editor: VSC
 Browser: FF

这是一个额外的屏幕截图,显示即使在控制台中,脚本也不会返回预期的结果:

如您所见,2022 年 5 月之前没有日期

在此处输入图像描述

已更新以添加指向结果和可执行查询的链接。

我在下面的代码中重新创建了您的问题和示例查询。 这些按预期运行,从而产生了此数据

此处在 Google Cloud 控制台上共享。

CREATE OR REPLACE TABLE
  sandbox.data_mart_target
PARTITION BY
  DATE(trip_start_timestamp) AS (
  SELECT
    trip_start_timestamp,
    trip_seconds,
    fare,
    tips
  FROM
    bigquery-public-data.chicago_taxi_trips.taxi_trips
  WHERE
    trip_start_timestamp >= '2022-01-01'
    AND trip_start_timestamp < '2022-06-30' );
    
SELECT
  *
FROM
  `sandbox.data_mart_target`
WHERE
  trip_start_timestamp BETWEEN TIMESTAMP('2022-01-01 00:00:00')
  AND TIMESTAMP('2022-01-30 23:59:59');

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM