BigQuery 中 JSON_EXTRACT 和 JSON_QUERY 的区别
Posted
技术标签:
【中文标题】BigQuery 中 JSON_EXTRACT 和 JSON_QUERY 的区别【英文标题】:Different between JSON_EXTRACT and JSON_QUERY in BigQuery 【发布时间】:2020-08-11 06:03:37 【问题描述】:我想知道 JSON_EXTRACT 和 JSON_QUERY 之间有什么区别。 在Bigquery document 中,他们两个共享相同的解释和示例。
【问题讨论】:
【参考方案1】:JSON_QUERY()
是后来添加的,以符合 ISO/IEC TR 19075-6:2017 中出现的 JSON 路径的 SQL 标准 2016 版本。
JSON_EXTRACT 和 JSON_QUERY 的区别在于如何处理带有点的字段名称,请参见下面的示例
WITH data AS (SELECT """
"a.x" : "b" : "c"
""" json)
SELECT JSON_QUERY(json, '$."a.x"'), JSON_EXTRACT(json, "$['a.x']")
FROM data;
输出:
+-----------+-----------+
| f0_ | f1_ |
+-----------+-----------+
| "b":"c" | "b":"c" |
+-----------+-----------+
【讨论】:
这是因为JSON_VALUE
等价于JSON_EXTRACT_SCALAR
而JSON_QUERY
等价于JSON_EXTRACT
。因此,如果您比较相关的配对结果将是相同的。我觉得问题实际上是关于这两对之间有什么区别 - JSON_VALUE
、JSON_QUERY
和 JSON_EXTRACT_SCALAR
、JSON_EXTRACT
?如果这两个新功能与早已存在的功能完全相同,为什么还要引入它们?
你很了解我 :) 这正是我的问题,如果这两个新功能与早已存在的功能完全相同,为什么还要引入它们?
糟糕...我误读了这个问题。更新了我的答案(答案中的内容也应该在公共文档中,我会研究它应该如何更新)以上是关于BigQuery 中 JSON_EXTRACT 和 JSON_QUERY 的区别的主要内容,如果未能解决你的问题,请参考以下文章
BigQuery 标准 SQL 中的 JSON_EXTRACT?
JSON_EXTRACT 不适用于 BigQuery 中的布尔值
BigQuery - JSON_EXTRACT 仅提取第一个条目
将使用 JSON_EXTRACT 的查询从 MySQL 转换为 BigQuery
我想用 BigQuery 提取 Json 格式的数据。 UDF 或 json_extract
如何使用 JSON_EXTRACT 或 JSON_EXTRACT_SCALAR 在 Big Query 中读取多级 JSON 数据