google-bigquery - 在 Google BigQuery 中按索引添加向量
问题描述
我有一个这样的数据集:
id | house_id | room_data
-------------------------------------------
1 | abc | [1, 1, 1, 1, 1, 1, 1]
2 | abc | [1, 1, 0, 0, 0, 0, 0]
3 | abc | [0, 1, 2, 1, 0, 1, 0]
4 | abc | [1, 1, 1, 0, 1, 1, 1]
5 | def | [1, 1, 1, 1, 0, 0, 0]
6 | def | NULL
7 | def | [1, 1, 1, 1, 0, 0, 0, 2, 1]
8 | def | [1, 0, 0, 0, 1, 1, 1, 1, 0]
我想选择与给定关联的向量house_id
并创建一个新的聚合向量,该向量将每个对应的向量通过其相加index
house_id
带有of的查询的示例结果abc
理想情况下如下所示:
house_id | aggregate_room_data
--------------------------------
abc | [3, 4, 4, 2, 2, 3, 2]
house_id
以及带有of的查询的示例结果def
:
house_id | aggregate_room_data
--------------------------------------
def | [3, 2, 2, 2, 1, 1, 1, 3, 1]
我相信我需要一些,和也许的组合ARRAY_AGG
,但我是一个傻瓜,只是无法正确使用语法,即使我认为我在这里圈出了答案。CROSS JOIN UNNEST
SUM
WITH OFFSET
提前感谢您的帮助
解决方案
以下是 BigQuery 标准 SQL
#standardSQL
select house_id,
array_agg(data order by offset) as aggregate_room_data
from (
select house_id, offset, sum(data) data
from `project.dataset.table`,
unnest(room_data) data with offset
where not room_data is null
group by house_id, offset
)
group by house_id
如果适用于您的问题的样本数据 - 输出是
推荐阅读
- max - FORTRAN : maxloc
- php - 如何将用户帐户中的字段添加到结帐页面
- powershell - 在网络共享上上传文件
- r - 如何处理像“Ññ”这样的特殊字符在R中导入excel文件?
- sql - SQL Server DATEDIFF 对 YEAR 差值进行四舍五入。如何四舍五入?
- javascript - Javascript 对象,返回包含嵌套数组中的值的更新对象
- r - grDevices::dev.new() 第一次不起作用
- vue.js - 带有 imagemin webpack 插件的 Vue cli 3
- sql - 大于或小于一个数量
- ms-access - 通过访问表单上的按钮将费用记录复制到发票详细信息