sql - 如何从多个列创建一个 json 列?
问题描述
需要转换为 json 字段的表。
ID, product, line_item, createdDate
123, valA, valB, '2019-02-02'
JSON 表就像这样。
ID, json_column
123, { valA :
{valB : '2019-02-02'}}
现在,我不确定可以使用哪种 parse_json 函数来创建此列。当我使用列名时,它会出错 - 'Invalid Identifier'
使用的查询。
select ID, parse_json( {product : { line_item : createdDate }};
解决方案
首先,始终尝试提供一个完全可重现的示例
这是根据您写的内容提出的问题
create or replace table x(id int,
product varchar,
line_item varchar,
createdDate varchar)
as select * from values
(123,'valA','valB','2019-02-02');
select * from x;
-----+---------+-----------+-------------+
ID | PRODUCT | LINE_ITEM | CREATEDDATE |
-----+---------+-----------+-------------+
123 | valA | valB | 2019-02-02 |
-----+---------+-----------+-------------+
现在,要获得您想要的结果,您可以使用OBJECT_CONSTRUCT函数,如下所示:
select id, object_construct(product, object_construct(line_item, createddate)) from x;
-----+---------------------------------------------------------------------+
ID | OBJECT_CONSTRUCT(PRODUCT, OBJECT_CONSTRUCT(LINE_ITEM, CREATEDDATE)) |
-----+---------------------------------------------------------------------+
123 | { |
| "valA": { |
| "valB": "2019-02-02" |
| } |
| } |
-----+---------------------------------------------------------------------+
如果您想将多个订单项组合在一起,您可能还需要OBJECT_AGG 。
推荐阅读
- sum - 商店的 MDX SUM 库存测量
- python - Django 测试 __str__(self) 的 ForeignKey
- javascript - 如何处理 JavaScript 中的 Wordpress CF7 错误
- android - SocketException:操作系统错误:连接被拒绝,颤振远程服务器中的errno = 111
- android - Flutter 新手,帮我解决这个错误。无法生成 .apk
- android - 为什么我得到 com.fasterxml.jackson.databind.exc.InvalidDefinitionException?
- python - 需要 DataBricks Python 单元测试错误帮助
- google-bigquery - 使用 json 文件创建表
- sql - 正则表达式 SQL BigQuery 获取 '_' 之间的数字
- python-3.x - Mongodb查询没有响应