在BigQuery中从json提取数据

zbdgwd5y  于 2023-01-18  发布在  其他
关注(0)|答案(2)|浏览(168)

我在bigquery表中有一个名为created_by的字段,其文本如下:

created by      
  "{\"name\": \"Charles Darwin\", \"email\": \"theemail@domain.com\"}"

该字段是一个“字符串”类型的字段。我需要的是提取名称和电子邮件在两个独立的字段。我怎样才能做到这一点?
谢谢

dgjrabp2

dgjrabp21#

您可以考虑并尝试使用BigQuery的REGEX_EXTRACT函数的以下方法。

with sample_data as (
  select "{\"name\": \"Charles Darwin\", \"email\": \"theemail@domain.com\"}" as my_string
)

select REGEXP_EXTRACT(my_string, r'"name":(\D+),') as ext_name,
REGEXP_EXTRACT(my_string, r'"email":(.+)}') as ext_email
from sample_data

样本输出:

我的示例正则表达式是最基本的一个,因为我不熟悉您的完整数据。您可以增强或创建自己的正则表达式,以满足您对数据的分析。

3pmvbmvn

3pmvbmvn2#

见下文,链接到谷歌文档在这里:
https://cloud.google.com/bigquery/docs/reference/standard-sql/json_functions#json_value
选择json_value(json“{“名称”:《查尔斯·达尔文》,《电子邮件》:“theemail@domain.com“}",”$.电子邮件“)作为getEmail
getemail
选择json_value(json“{“名称”:《查尔斯·达尔文》,《电子邮件》:“theemail@domain.com“}",”$.名称“)作为getName
getName

相关问题