sql - 如何从具有字典列表的表中查询,仅针对某些键 (BigQuery) SQL
问题描述
我在 Google BigQuery 上有一个表,其中每一行都有一个名为“customized_field”的字段,它是一个包含 25 个字典列表的字典(每个字典只有 1 个键/值对)。每行都有一个相同的字典(具有相同的“id”名称),只是“值”中的数量不同。字典看起来像这样:
[
{
"customized_field": [
{
"data": {
"id": "Bob",
"value": 3
}
},
{
"data": {
"id": "Jim",
"value": 4
}
},
{
"data": {
"id": "Mary",
"value": 2
}
},
etc etc... (22 more)
}
]
我想创建一个创建两列(特别是“Bob”和“Mary”)的表,其中两列中的每一列的值都是字典中的“值”。所以表格看起来像这样:
鲍勃 | 玛丽 |
---|---|
3 | 2 |
4(假设这是下一行的值) | 5(假设这是下一行的值) |
我的 SQL 脚本如下所示:
SELECT
CASE when h.data.id = "Bob" then h.value.value end Bob,
CASE when h.data.id = "Mary" then h.value.value end Mary
FROM `my_database`, UNNEST(`my_database `. customized_field) AS h
然而,这给了我一个看起来我想要的表,但它创建了我需要的行数的 25 倍(我相信它因为 25 个键值对而重复,并且当我执行“unnest”时,它基本上会创建更多行)。我怎样才能得到它,这样它就不会重复?
我的查询给出了这样的表:
鲍勃 | 玛丽 |
---|---|
3 | 2 |
4 | 5 |
3 | 2 |
4 | 5 |
3 | 2 |
4 | 5 |
等等等等。
解决方案
推荐阅读
- file - 如何使用 cmd 命令找到隐藏的文件/&文件夹,我忘记了谁的名字?
- python - 如何将 .py/ .pyw 转换为独立的可执行文件?
- sql - 如何将列值一一传递给 SQL 函数?
- javascript - 如何从 S.fn.init 中的元素获取类作为字符串以及 innerHTML?
- java - 是否可以使用方法删除对象数组中的字符串元素?
- reactjs - 声明的道具类型中的错字:布尔(Eslint)
- mysql - MySQL 错误“'WITH' 在此位置对于此服务器版本无效,需要 ALTER、ANALYZE、...。”
- html - jQuery子元素不合作
- r - ggplot地图中的线粗细
- python - 我们可以在 xml 中使用 etree findall() 搜索多个模式吗?