Google BigQuery -将字符串解析为JSON对象提取字段并作为字符串求值

kqhtkvqz  于 2023-01-14  发布在  Go
关注(0)|答案(1)|浏览(185)

我正在解析Google BigQuery表patents-public-data.uspto_peds.backfile,其中的字段是JSON格式的字符串。
我可以将字段解析为SELECT,只有其中一个值,如下所示:

PARSE_JSON(json_strong)['attribute'][0]['attribute2'] as aliasName

但是在WHERE子句中,我还想将返回值限制为日期在某个值之后的值,当我尝试时,似乎是合理的:

WHERE
EXTRACT(YEAR FROM DATE(PARSE_JSON(priorityClaimBag)['priorityClaim'][0]['filingDate'])) > 2018

我得到错误:

No matching signature for function DATE for argument types: JSON. Supported signatures: DATE(TIMESTAMP, [STRING]); DATE(DATETIME); DATE(INT64, INT64, INT64); DATE(DATE); DATE(STRING) at [28:23]

这实际上是一个具有有效日期时间的字符串字段。使用别名似乎也不起作用。
事实上,是否可以将此字符串计算为JSON,解析对象,然后以这种方式强制转换为DATE?

qv7cva1a

qv7cva1a1#

请使用JSON_EXTRACT_SCALAR,如下例所示

WHERE 
  EXTRACT(YEAR FROM DATE(JSON_EXTRACT_SCALAR(priorityClaimBag, '$.priorityClaim[0].filingDate'))) > 2018

相关问题