实木复合地板查询 WHERE 子句不适用于 ARRAY

parquet query WHERE clause not working for ARRAY

drop table if exists test_parquet;
CREATE EXTERNAL TABLE IF NOT EXISTS test_parquet (
ckey string, 
eid string, 
emkey string, 
mkey string,
urid string,
vst array<struct<bd:string, p01:string, p02:string, uid:string, v_h:string, v_w:string, v_m:string,pd:array<struct<c1key:string,cp_met_key:string,od:string,o_key:string,omt:string,sey:string,skey:string>>>>
) 
STORED AS Parquet
LOCATION  '/somelocation';

INSERT OVERWRITE TABLE test_parquet SELECT * FROM another_table;

现在当我做一个

select * from test_parquet;

有效

select ckey, vst[0].bd, vst[0].pd[0].od from test_parquet limit 10;

它也能正常工作!!

但是

select ckey
from test_parquet 
where test_parquet.vst.p01 in ('A','B','C','D');

它失败了。

知道如何在 parquetwhere 条件下编写数组吗?

我自己在研究的过程中得到了答案。 select ckey 来自 test_parquet 其中 test_parquet.vst[0].p01 在 ('A','B','C','D'); 要么 select c键 来自 test_parquet 其中 test_parquet.vst[1].p01 在 ('A','B','C','D');

这很有效,因为我们正在尝试访问一个数组,我们需要通过索引访问它们。