我有像下面这样的字符串输入选择查询
/partition_date=20240101/part-0001.parquet
/partition_id=20240301/file.name.parquet
/year=2023/month=1/file2.name.parquest
/year=2024/month=2/part-0001.parquet
需要解析字符串以给出仅输出的分区信息。
预期产出
partition_date=20240101
partition_id=20240301
year=2023/month=1
year=2024/month=2
有人可以分享如何使用 split、split_part、regexp_substr 实现它的输入。查询应该适用于上述任何格式。
提前致谢
with t(val) as (
select *
from values
('/partition_date=20240101/part-0001.parquet'),
('/partition_id=20240301/file.name.parquet'),
('/year=2023/month=1/file2.name.parquest'),
('/year=2024/month=2/part-0001.parquet)')
)
select
array_to_string(
filter(
strtok_to_array(val, '/'),
a -> (
contains(a, 'partition')
or contains(a, 'year')
or contains(a, 'month')
)
),
'/'
) as a
from
t;
A |
---|
分区日期=20240101 |
partition_id=20240301 |
年=2023/月=1 |
年=2024/月=2 |