我有一个数据集,其中包含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。
答案 0 :(得分:1)
您在键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)