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

我想把它变成这样:

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

因此,首先,如果我使用这样的查询,它会执行我想要的操作,还是不能保证两个字段以相同的顺序完成(即Value_1和Value_2中的相应值可能不匹配)?
SELECT
ID,
ARRAY_AGG (
Value_1
) AS Value_1,
ARRAY_AGG (
Value_2
) AS Value_2
FROM
table
GROUP BY
ID如果不是,我该怎么做呢?
发布于 2017-07-22 01:30:01
如果要将这些值配对在一起,请使用带有STRUCT的ARRAY_AGG。例如,
SELECT
ID,
ARRAY_AGG (
STRUCT(Value_1, Value_2)
) AS Values
FROM
table
GROUP BY
ID;发布于 2017-07-22 03:18:55
..。对于你的alternative,你可以问:
SELECT
id,
ARRAY_AGG(CONCAT('[', Value_1, ',', Value_2, ']')) AS Values
FROM `yourTable`
GROUP BY id发布于 2018-10-12 04:16:09
使用Python BigQuery的Array_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)https://stackoverflow.com/questions/45243489
复制相似问题