在 BQ off 分区 parquet 文件中创建外部表时出错

Error creating an external table in BQ off partitioned parquet files

提问人:Frank Pinto 提问时间:11/8/2023 更新时间:11/8/2023 访问量:16

问:

我正在尝试在 BigQuery 中根据 GCS 中找到的分区 parquet 数据创建一个外部表。我通过运行以下 SQL 语句来执行此操作:

CREATE OR REPLACE EXTERNAL TABLE `project-id.poc.parquet_test`
WITH PARTITION COLUMNS
OPTIONS (
uris = ['gs://poc/beam_parquet_poc_ii/*.parquet'],
format = 'PARQUET',
hive_partition_uri_prefix = 'gs://poc/beam_parquet_poc_ii',
require_hive_partition_filter = false);

但是,当我运行它时,我收到此错误消息:

Error while reading table: parquet_test, error message: Failed to add partition key CREATED_DATE (type: TYPE_DATE) to schema, because another column with the same name was already present. This is not allowed. Full partition schema: [CREATED_DATE:TYPE_DATE, PIPELINE_NAME:TYPE_STRING].

数据存储在 GCS 中,其路径如下:

gs://poc/beam_parquet_poc_ii/CREATED_DATE=2023-08-17/PIPELINE_NAME=poc-1692308092558/00000-of-00002.parquet 
gs://poc/beam_parquet_poc_ii/CREATED_DATE=2023-08-17/PIPELINE_NAME=poc-1692308092558/00001-of-00002.parquet 
...

数据如下所示:

                         TRANSACTION_ID  EVENT_ID  \
0  2cd36716-5e36-4924-9895-812a19d9c64e  3688390      

STORE_NBR  ITEM_NBR  \
     5649  654509568   

         PIPELINE CREATED_DATE  
poc-1692308092558   2023-08-17  
...

关于如何解决这个问题的任何想法?是不是我不能将分区所依据的列放在基础 parquet 文件中?

google-bigquery parquet 外部表 gcs

评论


答:

1赞 Frank Pinto 11/8/2023 #1

在与一些人交谈后,我意识到 parquet 文件中的基础数据不能具有与我在分区方案中使用的列名称相同的列。所以我放弃了CREATED_DATE和PIPELINE_NAME,这解决了问题