我想删除列中某些不必要的字符,以便可以将数据拆分为数组。
原始数据采用json格式,如下所示:
{
"id":"xyz",
"listL":"[\"N09jk\",\"KLpp1\"]",
"timestamp":"2019-01-04 05:33:02",
}
我想将listL
属性解析为类似于[N09jk, KLpp1]
的数组。
但是,考虑到当前格式,它将整个String作为一个元素,如下所示:
[["N09jk","KLpp1"]]
我想知道在解析文件时将字符[ , ]
和"
删除然后拆分为数组是否可行。
我的创建表查询是:
CREATE EXTERNAL TABLE IF NOT EXISTS db.table (
\`id\` string,
\`listL\` array<string>,
\`timestamp\` timestamp
)
ROW FORMAT SERDE 'org.openx.data.jsonserde.JsonSerDe'
WITH SERDEPROPERTIES (
'serialization.format' = '1'
) LOCATION 's3://path/'
TBLPROPERTIES ('has_encrypted_data'='false');
答案 0 :(得分:0)
使用列listL
作为string
创建表,并在查询过程中使用json_parse
将其解析为数组:
SELECT
id,
json_parse(listL) as listL,
timestamp
FROM table
您还可以创建一个视图,这样就不必在每个查询中都包含json_parse
:
CREATE VIEW table_with_list AS
SELECT
id,
json_parse(listL) as listL,
timestamp
FROM table