创建外部分区表GCP Bucket



我们想在GCP桶的顶部创建一个外部表,用于存储拼花地板数据

目前,我们的Bucket具有这种结构Buckets/ MY BUCKET / DATA /2020/07/11/.--该位置将有拼花地板文件

我们如何创建外部表,在此基础上,我们可以基于year/month/date格式对表进行分区。Parquet文件包含具有所需值的文件time样本值-2020-07-11T15:13:52.032Z

我正在使用以下命令:

CREATE TABLE  if NOT EXISTS TESTING(
(   ID VARCHAR,
SOURCE  varchar, 
TIME  varchar 
)
PARTITIONED BY (TIME)
)
WITH (format = 'parquet', external_location = 'My Bucket Location') 

您可以使用伪列_FILE_NAME,它为您提供文件gs://MY BUCKET/DATA/2020/07/11/filename的完整路径

你可以做这个

with part as (
select *,
REGEXP_EXTRACT(_FILE_NAME, r"^.*/DATA/([0-9]{4})/.*") as year, 
REGEXP_EXTRACT(_FILE_NAME, r"^.*/DATA/[0-9]{4}/([0-9]{1,2})/.*") as month, 
REGEXP_EXTRACT(_FILE_NAME, r"^.*/DATA/[0-9]{4}/[0-9]{1,2}/([0-9]{1,2})/.*") as day)
select * 
from part
where year="2020" and month="07"

或者创建一个视图,只查询视图而不查询原始外部表。

最新更新