Google cloud platform JSON_EXTRACT_SCALAR在解析后返回null

Google cloud platform JSON_EXTRACT_SCALAR在解析后返回null,google-cloud-platform,google-bigquery,Google Cloud Platform,Google Bigquery,我正在尝试解析一个json,它在BigQuery中包含字段数组,如下所示: 挑选 大堆 选择 结构CASTJSON\u EXTRACT\u SCALARsplit\u项, “$.index”作为int64作为索引, 时间戳\u MILLISCASTJSON\u提取\u缩放拆分\u项, “$.startTime”作为int64作为startTime 从…起 选择 CONCAT“{”,REGEXP_replaceSpilt_项,r“^\[{{124;}\]$”,“}”作为分割_项 从…起 UNNES

我正在尝试解析一个json,它在BigQuery中包含字段数组,如下所示:

挑选 大堆 选择 结构CASTJSON\u EXTRACT\u SCALARsplit\u项, “$.index”作为int64作为索引, 时间戳\u MILLISCASTJSON\u提取\u缩放拆分\u项, “$.startTime”作为int64作为startTime 从…起 选择 CONCAT“{”,REGEXP_replaceSpilt_项,r“^\[{{124;}\]$”,“}”作为分割_项 从…起 UNNESTSPLITjson,'},{'作为分割项作为分割项 从…起 选择 json 从…起 数据集:表

示例json如下所示:

[{\index \:0\startTime \:1524607204000},{\index \:1\startTime \:1524607204000},{\index \:2\startTime \:1524607204000}]

索引和startTime都显示为空。此查询有什么问题吗?

下面应该可以

标准SQL 选择 大堆 选择 结构 CASTJSON_EXTRACT_ScalarsSplit_项目,'$.index'作为int64作为索引, 时间戳\u MILLISCASTJSON \u提取\u SCALARsplit \u项,$.startTime作为int64作为startTime 从…起 选择CONCAT“{”、REGEXP\u replaceSpilt\u items、r“\[{{124;}\]”、“}”作为拆分项 从UNNESTSPLITjson,'},{'作为分割项 作为分割项 从“dataset.table”开始 修正在下面的行中

REGEXP\u replaceSpilt\u items,r'\[{{124;}\]', 您可以使用json示例来测试/使用它,如下所示

标准SQL 使用'dataset.table'作为 选择“[{index:0,startTime:1524607204000},{index:1,startTime:1524607204000},{index:2,startTime:1524607204000}]”作为json 选择 大堆 选择 结构 CASTJSON_EXTRACT_ScalarsSplit_项目,'$.index'作为int64作为索引, 时间戳\u MILLISCASTJSON \u提取\u SCALARsplit \u项,$.startTime作为int64作为startTime 从…起 选择CONCAT“{”、REGEXP\u replaceSpilt\u items、r“\[{{124;}\]”、“}”作为拆分项 从UNNESTSPLITjson,'},{'作为分割项 作为分割项 从`dataset.table` 结果是

行拆分\u项。索引拆分\u项。开始时间 1 0 2018-04-24 22:00:04.000 UTC 1 2018-04-24 22:00:04.000 UTC 2 2018-04-24 22:00:04.000 UTC
这是因为JSON是一个数组。您需要使用[]运算符引用其中的特定条目。我没有时间写答案,但希望这能让您开始。这不起作用。存储在表中的JSON包含\字符。因此,正确的输入是“[{\\index\\\:0,\\startTime\\\:1524607204000},{\\index\\:1、\\startTime\\:1524607204000}、{\\index\\:2、\\startTime\\:1524607204000}]'通过将正则表达式更改为r'^\[{124}\\]$\\\'我能够获得正确的输出。但真正令人困惑的是,直到最近,旧查询仍然使用相同的json工作。因此我想知道为什么它突然停止工作