在BigQuery中查询JSON值



我有一个BigQuery表("activity"),其中一列("groups")包含一个JSON值(该表是Google Workspace日志的导出)。

我希望能够根据group列中的group_emailJSON值从表中选择行。我检查了这里的文档,但我的查询总是返回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语法测试的截图。

样本数据:

tbody> <<tr>2
int64_field_0string_field_1
120
,这是一个string"
3{"id" 10"name":"Alice"}

最新更新