我们想在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"
或者创建一个视图,只查询视图而不查询原始外部表。