我们想在存储木地板数据的GCP存储桶顶部创建外部表
当前,我们的存储桶具有这种结构
Buckets/ MY BUCKET / DATA /2020/07/11/
。 -此位置将有实木复合地板文件
我们如何创建外部表的顶部,在此我们可以基于year/month/date
格式对表进行分区。
镶木地板文件包含已提交的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')
答案 0 :(得分:1)
您可以使用pseudo column _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"
或创建一个视图,仅查询该视图,而不查询原始外部表。