我有一个数据集,其中包含json中的一个列,它的一个属性为我提供了一个列表,我想取消它的嵌套以连接一些不同的数据。
我想到了json_extract_scalar的json_data,然后我可以split它,最后unnest与其他操作,但我得到了一个问题。
在我的例子中,当我运行json_extract时,它工作得很好,但我不能将其转换为varchar。另一方面,如果我使用json_extract_scalar,它会返回一个空值。
我认为问题应该是引号,但我不确定如何处理它-即使这是正确的问题。
让我给你一个数据样本:
{"my_test_list":["756596263-0","743349523-371296","756112380-0","755061590-0"]}你们能给我点建议吗?
我在Presto中查询SQL。
发布于 2020-06-18 07:28:33
在key my_test_list下存储的是一个JSON数组,而不是一个标量值--这就是json_extract_scalar()返回null的原因。
目前还不清楚您希望如何使用这些数据。典型的解决方案是将其cast到一个array,然后您可以根据需要使用它,例如通过取消嵌套它。基本语法为:
cast(json_extract(mycol, '$.my_test_list') as array(varchar))然后在横向联接中使用它,如下所示:
select t.mycol, x.myval
from mytable t
cross join unnest(
cast(json_extract(mycol, '$.my_test_list') as array(varchar))
) as x(myval)https://stackoverflow.com/questions/62439877
复制相似问题