简体   繁体   English

在大查询中从非结构化 JSON 中提取数据

[英]extracting data from unstructured JSON in big query

I have JSON as a string in a big query field:我在一个大查询字段中将 JSON 作为字符串:

[{"name":"user_group","value":"regular"},{"name":"checkout_version","value":"2.2"},{"name":"currency","value":"EUR"},{"name":"currency_exchange_rate","value":"1"},{"name":"currency_symbol","value":"€"},{"name":"variant","value":"default"},{"name":"snowplow_id","value":"XXXXXXX"},{"name":"ip_address","value":"XXXX"},{"name":"user_agent","value":"Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/102.0.0.0 Safari/537.36"},{"name":"is_test_order","value":"false"}]

I'm going crazy trying to extract the value ("default") from this section:我要疯了,试图从本节中提取值(“默认”):

{"name":"variant","value":"default"}

the part I want will always follow "name":"variant","value":" and have a " at the end.我想要的部分将始终遵循"name":"variant","value":"并在末尾有一个"

I have tried json_extract but regexp_extract seems the best option, I tried this: (我试过json_extractregexp_extract似乎是最好的选择,我试过这个:(

select REGEXP_EXTRACT(json_string_field, r'/\{"value":"([^"]+)"/') as variant
from source_table

) )

but I'm just getting nulls back...would appreciate ideas...但我只是让空值回来......会很感激想法......

consider below query考虑以下查询

WITH json_data AS (
  SELECT '[{"name":"user_group","value":"regular"},{"name":"checkout_version","value":"2.2"},{"name":"currency","value":"EUR"},{"name":"currency_exchange_rate","value":"1"},{"name":"currency_symbol","value":"€"},{"name":"variant","value":"default"},{"name":"snowplow_id","value":"XXXXXXX"},{"name":"ip_address","value":"XXXX"},{"name":"user_agent","value":"Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/102.0.0.0 Safari/537.36"},{"name":"is_test_order","value":"false"}]' json
)
SELECT JSON_VALUE(kv, '$.value') AS value
  FROM json_data, UNNEST(JSON_QUERY_ARRAY(json)) kv
 WHERE JSON_VALUE(kv, '$.name') = 'variant';

在此处输入图像描述

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM