从Presto

时间:2017-06-27 00:51:07

标签: sql database presto

我在表中要有一个类型为VARCHAR的JSON列points,我想在Presto中解析。例如:

points = {"0": 0.2, "1": 1.2, "2": 0.5, "15": 1.2, "20": 0.7}

我想只选择键"0", "2" and "20"的值。如何使用Presto的UNNEST功能来获取它们。我到目前为止所做的是:

select t.value from myTable CROSS JOIN UNNEST(points) AS t(key, value) limit 1

但是这会给出这个错误:

Cannot unnest type: varchar

Update:

我运行了以下查询并得到了结果,但是它从JSON返回一个随机键值对,而我需要特定键。

select key, value from myTable CROSS JOIN UNNEST(SPLIT_TO_MAP(points, ',', ':')) AS t(key, value) limit 1

2 个答案:

答案 0 :(得分:0)

您可能需要先根据这些文档转换为json数据类型:AngularJS

UNNEST(CAST(points AS JSON))

完整查询:

select t.value from myTable
CROSS JOIN UNNEST(CAST(points AS JSON)) AS t(key, value) limit 1

答案 1 :(得分:0)

您可以删除数组或地图。因此,您首先需要将JSON字符串转换为MAP:

model.add(Dense(64))

以下是一个例子:

CAST(json_parse(str) AS MAP<BIGINT, DOUBLE>)