将使用 JSON_EXTRACT 的查询从 MySQL 转换为 BigQuery
Posted
技术标签:
【中文标题】将使用 JSON_EXTRACT 的查询从 MySQL 转换为 BigQuery【英文标题】:Convert query with JSON_EXTRACT from MySQL to BigQuery 【发布时间】:2019-02-05 08:51:02 【问题描述】:我在 mysql 上有以下查询:
SELECT COALESCE(
TRIM(BOTH '"' FROM JSON_EXTRACT(fb.p_dataforanalytics,'$.gender')),
TRIM(BOTH '"' FROM JSON_EXTRACT(g.p_dataforanalytics,'$.gender'))
) as chosen_gender
FROM ...
这适用于 MySQL,但不适用于 BigQuery:
语法错误:应为 ")" 但得到字符串文字 '"'
TRIM/JSON_EXTRACT 存在一些问题。
如何在 BigQuery 中执行此操作?
【问题讨论】:
【参考方案1】:假设 gender
键指向单个标量值,那么 BigQuery 的 JSON_EXTRACT_SCALAR
函数可能就是您需要的:
SELECT
COALESCE(JSON_EXTRACT_SCALAR(fb.p_dataforanalytics, "$.gender"),
JSON_EXTRACT_SCALAR(g.p_dataforanalytics, "$.gender")) AS chosen_gender
FROM yourTable;
从documentation 开始,应该不需要修剪双引号,因为它们不会出现在输出中。
【讨论】:
以上是关于将使用 JSON_EXTRACT 的查询从 MySQL 转换为 BigQuery的主要内容,如果未能解决你的问题,请参考以下文章
将 JSON_EXTRACT 与 CAST 或 STR_TO_DATE 链接失败
来自字符串字段的 AWS Athena json_extract 查询返回空值