首页 > 解决方案 > 提取键值对并组成自己的列

问题描述

我有一个包含两列的表——其中一列包含许多键值对。我想解压缩此列,以便其中的每个键成为一个新列,并且相应键的每个值都成为该新列的行。

例如,假设我有一个包含两列的表idvars

id = 123456789
vars = 
{
  "var_1": 11,
  "var_2": 123,
  "var_3": 81,
  "var_4": 9,
  "var_5": 0,
  "var_6": 0.3888,
  "var_7": 0.11,
  "var_8": 19,
  "var_9": 25,
  "var_10": 29,
  "var_11": 0,
  "var_12": 1
  }

vars类型在哪里row。我想将列中的所有键值对提取vars到自己的列中?我可以使用如下代码单独遍历键值对:

select 
id,
vars.var_1 as var_1,
vars.var_2 as var_2,
vars.var_3 as var_3
...
...
...
from table_name

但我怀疑有一种方法可以通过函数自动执行此操作。有人知道吗?

我正在使用 Presto。

标签: sqlkey-valuepresto

解决方案


推荐阅读