Google bigquery BigQuery:将多个字段聚合到数组中

Google bigquery BigQuery:将多个字段聚合到数组中,google-bigquery,Google Bigquery,我有一些数据,对于每个ID,我希望将两个或多个字段聚合到一个数组中,并希望它们按顺序匹配 例如,如果我有以下数据: 我想把它变成这样: 或者,类似这样的东西也可以: 因此,首先,如果我使用这样的查询,它会做我想要的事情,还是不能保证这两个字段以相同的顺序通过(即,值_1和值_2中的对应值可能不匹配) 如果没有,我如何执行此操作?如果要将值配对在一起,请使用ARRAY\u AGG和STRUCT。比如说, SELECT ID, ARRAY_AGG ( STRUCT(Value_

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

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

我想把它变成这样:

或者,类似这样的东西也可以:

因此,首先,如果我使用这样的查询,它会做我想要的事情,还是不能保证这两个字段以相同的顺序通过(即,值_1和值_2中的对应值可能不匹配)


如果没有,我如何执行此操作?

如果要将值配对在一起,请使用
ARRAY\u AGG
STRUCT
。比如说,

SELECT
  ID,
  ARRAY_AGG (
    STRUCT(Value_1, Value_2)
  ) AS Values
FROM
  table
GROUP BY
  ID;

。。。对于您的
备选方案
,请询问:

选择
身份证件
数组_AGG(CONCAT(“[”,值_1,“,”,值_2,“])作为值
从你的桌子上`
按id分组

使用Python BigQuery的
数组\u Agg()
工作解决方案:

!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)
!pip安装-U谷歌云bigquery
作为pd进口熊猫
从google.cloud导入bigquery
strvalue=“”选择用户数组_AGG(结构(会话,页面))作为hasComp FROM。其中按用户分组按用户排序限制为100”“”
bigquery\u client=bigquery.client(project=”“)
dataset=bigquery\u client.dataset(“”)
表=数据集。表(“”)
table.view\u query\u legacy\u sql=False
query\u job=bigquery\u client.query(str\u值)
df=查询作业到数据帧()
打印(df)

这会生成一个字符串而不是列表,因为concat会返回一个字符串。这也可以作为列表中的列表吗?
!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)