[英]Snowflake JSON FLATTEN with ORDER BY
我有一個工作查詢,將嵌套的 JSON object 展平為數據行。 然而,我想做的是保留一個對象數組的原始順序,該對象數組嵌套在多個層中。
我嘗試將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"
示例 output:
TITLE RANK
"example title 3" 1
"example title 5" 2
"example title 2" 3
"example title 1" 4
"example title 4" 5
INDEX
是可能的,它返回數組中元素的索引:
SELECT A.VALUE:"title"::VARCHAR AS "TITLE",
"list_flatten".index AS "RANK"
FROM DB.SCHEMA.TABLE as A,
lateral flatten(input=>A.JSON:topNode.childNode.list) "list_flatten"
我有一個工作查詢將嵌套的 JSON object 展平為數據行。 但是,我想做的是保留嵌套了幾層的一組對象的原始順序。
我嘗試將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"
示例 output:
TITLE RANK
"example title 3" 1
"example title 5" 2
"example title 2" 3
"example title 1" 4
"example title 4" 5
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.