我试图将红移频谱中的变量类型json字段转换为平面字符串,但一直都是这样 column type VARCHAR for column STRUCT is incompatible
.
我试图查询的json数据有几个字段,这些字段的结构是固定的和预期的。但是,有一个包含元数据的字段是没有特定格式的json(任何内容都是有效的)。例如:
{"fixed_integer": 1, "fixed_date": "2019-01-01", "metadata": {"one": "two", "three": 4}}
{"fixed_integer": 1, "fixed_date": "2019-01-01", "metadata": {"five": [1, 2], "six": false}}
我可以将代码与ddlMap为
CREATE EXTERNAL TABLE my_data(
fixed_integer int,
fixed_date varchar,
metadata varchar
)
没有抱怨,但是当我试图用一个简单的 SELECT metadata FROM my_data
我明白了 declared column type VARCHAR for column STRUCT is incompatible
.
到目前为止,我还没有找到解决办法。有人遇到过这样或类似的问题吗?
1条答案
按热度按时间byqmnocz1#
元数据字段它不是一个有效的varchar,要成为一个有效的varchar字段它应该如下所示
"metadata": '{"one": "two", "three": 4}}'
不是正确的json格式我认为,如果您使用元数据作为struct创建外部表,您可以查询它
查询元数据字段时,需要指定。
让我知道这是否适合你。