我有一个源数据,其中包含以下类型的 JSON 数组:
[
[
"source 1",
250
],
[
"other source",
58
],
[
"more stuff",
42
],
...
]
可以有 1..N 对这样的字符串和值。如何将此 JSON 中的所有值相加?
我有一个源数据,其中包含以下类型的 JSON 数组:
[
[
"source 1",
250
],
[
"other source",
58
],
[
"more stuff",
42
],
...
]
可以有 1..N 对这样的字符串和值。如何将此 JSON 中的所有值相加?
您可以使用FLATTEN,它将为输入数组的每个元素生成一行。然后您可以直接访问该元素中的数字。
想象一下你有这个输入表:
create or replace table input as
select parse_json($$
[
[
"source 1",
250
],
[
"other source",
58
],
[
"more stuff",
42
]
]
$$) as json;
FLATTEN 会这样做:
select index, value from input, table(flatten(json));
-------+-------------------+
INDEX | VALUE |
-------+-------------------+
0 | [ |
| "source 1", |
| 250 |
| ] |
1 | [ |
| "other source", |
| 58 |
| ] |
2 | [ |
| "more stuff", |
| 42 |
| ] |
-------+-------------------+
所以你可以用它VALUE[1]
来访问你想要的东西
select sum(value[1]) from input, table(flatten(json));
---------------+
SUM(VALUE[1]) |
---------------+
350 |
---------------+