旧版 UDF - 确定 dictionary/map 中的最大值
Legacy UDF - Determine largest value in a dictionary/map
我有一个 JSON map/dictionary,我想在其中找到最大值,但我在编写 UDF 时遇到了问题(使用旧版 SQL 语法)。我在网上找不到很多资源或例子,但我确实看到了很多标准 SQL。谁能提供有关使用 Legacy SQL 处理地图、词典和用户定义函数的帮助或良好的在线示例?谢谢!
示例输入: {“cat_age”: 14, “dog_age”: 4} (这是在我的 table,让我们称列名称为“AgeColumn”)
输出: 14
以下适用于 BigQuery 标准 SQL
#standardSQL
SELECT col,
(
SELECT AS STRUCT CAST(SPLIT(item, ':')[SAFE_OFFSET(1)] AS INT64) age, item
FROM UNNEST(SPLIT(REGEXP_REPLACE(col, r'{|}', ''))) item
ORDER BY CAST(SPLIT(item, ':')[SAFE_OFFSET(1)] AS INT64) DESC
LIMIT 1
).*
FROM `project.dataset.table`
你可以测试,使用虚拟数据来玩上面的例子,如下例
#standardSQL
WITH `project.dataset.table` AS (
SELECT '{“cat_age”: 14, “dog_age”: 4}' col UNION ALL
SELECT '{“cat_age”: 11, “dog_age”: 16}'
)
SELECT col,
(
SELECT AS STRUCT CAST(SPLIT(item, ':')[SAFE_OFFSET(1)] AS INT64) age, item
FROM UNNEST(SPLIT(REGEXP_REPLACE(col, r'{|}', ''))) item
ORDER BY CAST(SPLIT(item, ':')[SAFE_OFFSET(1)] AS INT64) DESC
LIMIT 1
).*
FROM `project.dataset.table`
结果
Row col age item
1 {“cat_age”: 14, “dog_age”: 4} 14 “cat_age”: 14
2 {“cat_age”: 11, “dog_age”: 16} 16 “dog_age”: 16
我有一个 JSON map/dictionary,我想在其中找到最大值,但我在编写 UDF 时遇到了问题(使用旧版 SQL 语法)。我在网上找不到很多资源或例子,但我确实看到了很多标准 SQL。谁能提供有关使用 Legacy SQL 处理地图、词典和用户定义函数的帮助或良好的在线示例?谢谢!
示例输入: {“cat_age”: 14, “dog_age”: 4} (这是在我的 table,让我们称列名称为“AgeColumn”)
输出: 14
以下适用于 BigQuery 标准 SQL
#standardSQL
SELECT col,
(
SELECT AS STRUCT CAST(SPLIT(item, ':')[SAFE_OFFSET(1)] AS INT64) age, item
FROM UNNEST(SPLIT(REGEXP_REPLACE(col, r'{|}', ''))) item
ORDER BY CAST(SPLIT(item, ':')[SAFE_OFFSET(1)] AS INT64) DESC
LIMIT 1
).*
FROM `project.dataset.table`
你可以测试,使用虚拟数据来玩上面的例子,如下例
#standardSQL
WITH `project.dataset.table` AS (
SELECT '{“cat_age”: 14, “dog_age”: 4}' col UNION ALL
SELECT '{“cat_age”: 11, “dog_age”: 16}'
)
SELECT col,
(
SELECT AS STRUCT CAST(SPLIT(item, ':')[SAFE_OFFSET(1)] AS INT64) age, item
FROM UNNEST(SPLIT(REGEXP_REPLACE(col, r'{|}', ''))) item
ORDER BY CAST(SPLIT(item, ':')[SAFE_OFFSET(1)] AS INT64) DESC
LIMIT 1
).*
FROM `project.dataset.table`
结果
Row col age item
1 {“cat_age”: 14, “dog_age”: 4} 14 “cat_age”: 14
2 {“cat_age”: 11, “dog_age”: 16} 16 “dog_age”: 16