首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >BigQuery:将多个字段聚合成数组

BigQuery:将多个字段聚合成数组
EN

Stack Overflow用户
提问于 2017-07-22 01:28:49
回答 3查看 14.6K关注 0票数 20

我有一些数据,对于每个ID,我希望将两个或更多字段聚合到一个数组中,并且希望它们按顺序匹配。

例如,如果我有以下数据:

我想把它变成这样:

或者,类似这样的代码也可以:

因此,首先,如果我使用这样的查询,它会执行我想要的操作,还是不能保证两个字段以相同的顺序完成(即Value_1和Value_2中的相应值可能不匹配)?

代码语言:javascript
复制
SELECT
  ID,
  ARRAY_AGG (
    Value_1
  ) AS Value_1,
  ARRAY_AGG (
    Value_2
  ) AS Value_2

FROM
  table

GROUP BY
  ID

如果不是,我该怎么做呢?

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2017-07-22 01:30:01

如果要将这些值配对在一起,请使用带有STRUCTARRAY_AGG。例如,

代码语言:javascript
复制
SELECT
  ID,
  ARRAY_AGG (
    STRUCT(Value_1, Value_2)
  ) AS Values
FROM
  table
GROUP BY
  ID;
票数 35
EN

Stack Overflow用户

发布于 2017-07-22 03:18:55

..。对于你的alternative,你可以问:

代码语言:javascript
复制
SELECT  
  id,
  ARRAY_AGG(CONCAT('[', Value_1, ',', Value_2, ']')) AS Values
FROM `yourTable`
GROUP BY id
票数 7
EN

Stack Overflow用户

发布于 2018-10-12 04:16:09

使用Python BigQuery的Array_Agg ()工作解决方案:

代码语言:javascript
复制
!pip install -U google-cloud-bigquery
import pandas as pd

from google.cloud import bigquery

strvalue = """SELECT users ARRAY_AGG(STRUCT(session, page )) as hasComp FROM <datasetname>.<tableName> WHERE Group by users order by users limit 100 """

bigquery_client = bigquery.Client(project="")

dataset = bigquery_client.dataset("")

table = dataset.table('')

table.view_query_legacy_sql = False

query_job = bigquery_client.query(str_value)

df = query_job.to_dataframe()

print(df)
票数 -1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/45243489

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档