所以,我已经从firestore导出了一个完整的集合到bigquery来对它执行某些查询。
在bigquery控制台中填充数据之后,现在可以像这样查询整个集合
SELECT * FROM `myapp-1a602.firestore_orders.orders_raw_changelog` LIMIT 1000
现在,这个语句抛出不同的列,但是我要查找的是数据列,在我的数据列中是每个文档的json,但是是json格式的,我需要查询所有这些值。
现在,这是一行的数据
{
"cart": [{
"qty": 1,
"description": "Sprite 1 L",
"productName": "Sprite 1 Liter",
"price": 1.99,
"productId": 9
}],
"storeName": "My awesome shop",
"status": 5,
"timestamp": {
"_seconds": 1590713204,
"_nanoseconds": 916000000
}
}
这个数据在数据列中,所以如果我这样做
SELECT data FROM `myapp-1a602.firestore_orders.orders_raw_changelog` LIMIT 1000
我将获得每个文档的所有json值,但是我不知道如何查询这些值,假设我想知道状态为5的所有订单,shopname我的awesome shop,现在,我需要用这个json做些什么来将它转换成一个表?我需要在json本身中执行查询吗?
如何查询这个json输出?
谢谢
4条答案
按热度按时间jc3wubiy1#
我需要对这个json做些什么才能把它转换成一个表?我需要在json本身中执行查询吗?
下面是bigquery标准sql
如果要应用于您问题中的样本数据,请参见下面的示例
结果是
fjnneemd2#
您可以使用json函数
db<>在这里摆弄
db<>在这里摆弄
MySQL5.7及更高版本也有json提取。
最后,这是只在最后的文本,所以您也可以使用regexp或rlike
要再次将jaso传输到行,可以使用json\u表
bpzcxfmw3#
您必须做的是从json数据中提取如下值:select。。。。。。。其中data->'$.storename'=“我的超级商店”和data->'$.status'=5
从“购物车”中提取或´“timestamp”键将为您提供一个需要进一步提取以获取数据的json对象。我希望它能帮助你你可能想看看mysql文档(https://dev.mysql.com/doc/refman/8.0/en/json.html)或者https://www.mysqltutorial.org/mysql-json/.
o8x7eapl4#
您可以在where子句中使用unnest来访问cart的列,在where子句中使用json函数来过滤所需的行。您需要注意访问json根或数组
cart
;json_data
以及cart_items
在下面的例子中(顺便说一下,在你的例子中shopName
不存在但是storeName
是的)。