首页 > 解决方案 > 不明确的列名“VALUE”

问题描述

任何使用以下逻辑来克服具有雪花横向扁平化功能错误的模糊列的想法都非常感谢。我正在尝试通过从变量列中选择值来使用以下查询来展平嵌套的 JSON 数据,但是使用横向展平功能会出现不明确的列名“VALUE”错误。有人可以帮助我实现所需的输出。这里的问题是 JSON 键名作为“值”出现,我无法使用横向展平获取该数据。所需的输出已作为图像附加到此线程。

示例 JSON 数据

 {"issues": [
{
"expand": "a,b,c,d",
"fields": {
"customfield_10000": null,
"customfield_10001": null,
"customfield_10002": [
    {
    "id": "1234",
    "self": "xxx",
    "value": "Test"
    }
],
},
"id": "123456",
"key": "K-123"
}
]}*


*select
    a.value:id::number as ISSUE_ID,
    a.value:key::varchar as ISSUE_KEY,
    b.value:id::varchar as ROOT_CAUSE_ID,
    **b.value:value::varchar as ROOT_CAUSE_VALUE**
from
    abc.table_variant,
    lateral flatten( input => payload_json:issues) as a,
    lateral flatten( input => a.value:fields.customfield_10002) as b;*

期望的输出

标签: snowflake-cloud-data-platformambiguous

解决方案


WITH CTE AS 
(select parse_json('{"issues": [
{
"expand": "a,b,c,d",
"fields": {
"customfield_10000": null,
"customfield_10001": null,
"customfield_10002": [
    {
    "id": "1234",
    "self": "xxx",
    "value": "Test"
    }
],
},
"id": "123456",
"key": "K-123"
}
]}')
 as col)
 
select 
a.value:id::number as ID, 
a.value:key::varchar as KEY, 
b.value:id::INT as customfield_10002,
b.value:value::varchar as customfield_10002_value

from cte,
lateral flatten(input => cte.col, path => 'issues') a,
lateral flatten(input => a.value:fields.customfield_10002) b;

推荐阅读