【发布时间】:2020-02-26 10:37:23
【问题描述】:
我已将数据从 Firestore 导入 BigQuery。我的数据结构是这样的:
data = [
{
id: "item1",
status: {
options: [
{
title: "Approved",
color: "#00ff00"
},
{
title: "Rejected",
color: "#ff0000"
},
{
title: "Pending",
color: "#ffaa00"
}
],
optionIndex: 0
}
},
{
id: "item2",
status: {
options: [
{
title: "Validated",
color: "#00ff00"
},
{
title: "Invalidated",
color: "#ff0000"
}
],
optionIndex: 1
}
}
];
我成功运行了一个查询,提取了id等键值:
SELECT
JSON_EXTRACT(data, '$.id') AS item_id,
JSON_EXTRACT(data, '$.status.optionIndex') AS option_index
FROM `my_bigquery_table`
但是,我很难找到选择 status.options[status.options.optionIndex] 的解决方案,我可以在其中将状态的标题和颜色放入表格中。我一直追求的结果是:
id,status_title,status_color
item1,Approved,#00ff00
item2,Invalidated,#ffaa00
(我对包括连接在内的大多数基本 SQL 都做得很好,但是将状态数组放入可查询的结构中,我可以在其中选择索引并没有在我的级别内)
【问题讨论】:
-
我对结构化数据和 JSON 遍历的混合感到非常困惑 - 你的表的架构是什么?
-
对不起。 JSON 数据结构是 Firestore 导入器创建的表中的“数据”列。 IE。这就是 Firestore 中文档的结构方式,并将此内容结构复制到导入表中的数据列。我对 BigQuery 还很陌生,但我知道这很正常。但它确实使 SQL 查询非常糟糕,我必须查询该 JSON 字符串。我可能遗漏了什么?
标签: arrays json google-bigquery