【发布时间】:2021-03-31 14:43:47
【问题描述】:
我有一个工作查询将嵌套的 JSON 对象展平为数据行。然而,我想做的是保留一个嵌套了几层的对象数组的原始顺序。
我尝试将ROW_NUMBER 与ORDER BY NULL 和ORDER BY (SELECT NULL) 一起使用,但似乎都没有保留顺序。
关于如何实现这一点的任何想法?下面的例子。我选择屏蔽真实数据,但结构的重要部分是相同的。 JSON 格式的数据没有排名识别信息,但我在这里使用数字作为示例来显示奇怪的结果。
原始结构(屏蔽):
{
"topNode: {
"childNode": {
"list": [
{
"title": "example title 1",
},
{
"title": "example title 2",
},
{
"title": "example title 3",
},
{
"title": "example title 4",
},
{
"title": "example title 5",
}
]
}
}
}
示例查询(屏蔽):
SELECT
A.VALUE:"title"::VARCHAR AS "TITLE",
ROW_NUMBER() OVER(ORDER BY NULL) AS RANK
FROM
DB.SCHEMA.TABLE as A,
lateral flatten(input=>A.JSON:topNode.childNode.list) "list_flatten"
示例输出:
TITLE RANK
"example title 3" 1
"example title 5" 2
"example title 2" 3
"example title 1" 4
"example title 4" 5
【问题讨论】:
标签: sql json snowflake-cloud-data-platform flatten