Google Bigquery SQL UNNEST 和 STRING_AGG

Posted

技术标签:

【中文标题】Google Bigquery SQL UNNEST 和 STRING_AGG【英文标题】:Google Bigquery SQL UNNEST and STRING_AGG 【发布时间】:2020-02-04 04:39:52 【问题描述】:

我尝试了以下查询:

SELECT STRING_AGG(inputs.addresses) as stringAgg, 
FROM `bigquery-public-data.crypto_bitcoin.transactions`
JOIN UNNEST (inputs) AS inputs
GROUP BY Date(block_timestamp)

但是,我收到以下错误:

聚合函数 STRING_AGG 的参数没有匹配的签名 类型:数组。支持的签名:STRING_AGG(STRING); STRING_AGG(字符串,字符串); STRING_AGG(字节); STRING_AGG(字节, BYTES)在 [2:3] 了解有关 BigQuery SQL 函数的更多信息。

不确定如何解决这个问题并获取输出中存在的地址列表。鉴于类型地址为: [输出。 address STRING REPEATED 拥有此输出的地址。

【问题讨论】:

【参考方案1】:

inputs.addresses 本身就是一个数组,所以你也需要 UNNEST 例如如下

#standardSQL
SELECT 
  DATE(block_timestamp) AS block_date,
  STRING_AGG(address) AS stringAgg
FROM `bigquery-public-data.crypto_bitcoin.transactions`
JOIN UNNEST (inputs) AS input, UNNEST(input.addresses) address
GROUP BY DATE(block_timestamp)
LIMIT 10   

显然,以上假设您希望每天收集原始查询中的所有地址

【讨论】:

以上是关于Google Bigquery SQL UNNEST 和 STRING_AGG的主要内容,如果未能解决你的问题,请参考以下文章

BigQuery 中用于 Google Analytics 数据的标准 SQL 还是旧版 SQL?

Google BigQuery 的 SQL 语法不存在

Google BigQuery 中的 TIMESTAMP 和标准 SQL

Google Analytics 到 Bigquery 数据 - 自定义维度的 SQL 代码是啥?

Google BigQuery 从 Python 脚本执行 SQL 文件

Google BigQuery SQL:使用数组?