我有一个BigQuery表("activity"),其中一列("groups")包含一个JSON值(该表是Google Workspace日志的导出)。
我希望能够根据group
列中的group_email
JSON值从表中选择行。我检查了这里的文档,但我的查询总是返回null。我试着:
SELECT
record_type,
email,
JSON_VALUE('groups.group_email') AS group_email
但得到null。我也尝试使用group_email
SELECT
record_type,
email,
JSON_VALUE('groups[4]') AS group_email
但运气不好。我尝试了这些相同的组合作为WHERE语句的一部分,但得到了相同的结果:
SELECT
*
FROM
`company.workspace_prod.activity`
WHERE
record_type = 'groups'
and
JSON_VALUE('groups.group_email') = 'everyone@company.com'
LIMIT
10
我也看到了这个答案,但使用JSON_EXTRACT_SCALAR('groups', "$.groups[0].group_email") AS group_email
也返回null
知道我做错了什么吗?
你可以试试下面的方法。
SELECT
record_type,
email,
JSON_VALUE(groups,'$.group_email') AS group_email
FROM
`company.workspace_prod.activity`
您可以参考这个JSON函数文档了解更多细节。
请查看下面我使用正确的JSON_VALUE语法测试的截图。
样本数据:
int64_field_0 | string_field_1 | 1 | 20 | 2
---|---|
,这是一个string" | |
3 | {"id" 10"name":"Alice"} |