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 中的 TIMESTAMP 和标准 SQL
Google Analytics 到 Bigquery 数据 - 自定义维度的 SQL 代码是啥?