BigQuery JSON 字段提取
Posted
技术标签:
【中文标题】BigQuery JSON 字段提取【英文标题】:BigQuery JSON Field Extraction 【发布时间】:2019-03-05 01:02:02 【问题描述】:我将以下 JSON 有效负载存储在 BQ 表的单个字符串列中。
"customer" : "ABC Ltd",
"custom_fields" : [
"name" : "DOB",
"value" : "2000-01-01"
,
"name" : "Account_Open_Date",
"value" : "2019-01-01"
]
我想弄清楚如何将 custom_fields 名称值对提取为列?
如下所示。
| Customer.name | Customer.DOB | Customer.Account_Open_Date |
| ABC Ltd | 2000-01-01 | 2019-01-01 |
【问题讨论】:
【参考方案1】:可以使用json-functions,如
JSON_EXTRACT(json_string_expr, json_path_string_literal)
你的情况是
SELECT
JSON_EXTRACT(json_text, '$.customer') as Customer.Name,
JSON_EXTRACT(json_text, '$.custom_fields[0].value') as Customer.DOB,
JSON_EXTRACT(json_text, '$.custom_fields[1].value') as Customer.Account_Open_Date
【讨论】:
我之前确实看过这个,但我希望通过不对列名进行硬编码来使其更通用。无论如何我们可以根据“名称”字段派生列名吗? 你可以试试 unset json array unest($.custom_fields[].value) ***.com/questions/52120182/… 或者你必须写一些UDF。以上是关于BigQuery JSON 字段提取的主要内容,如果未能解决你的问题,请参考以下文章
BigQuery json 函数 - 如果 json 字符串格式不正确,则无法提取所有值
Bigquery:是不是有一种 json 路径方法可以仅从具有动态键的 json 数组中提取值?