在 BigQuery 中计算不同的 concat
Posted
技术标签:
【中文标题】在 BigQuery 中计算不同的 concat【英文标题】:count distinct concat in BigQuery 【发布时间】:2019-12-09 11:14:37 【问题描述】:我试过 PostgreSQL:count distinct (col1,col2,col3,col4,col5) 在 BigQuery 中:Count distinct concat(col1,col2,col3,col4,col5)
我的情况是我需要在 BigQuery 中获得与 PostgreSQL 相同的结果
虽然这种情况适用于 3 列,但我没有得到与 PostgreSQL 相同的 5 列值。
示例查询:
select col1,
count(distinct concat((col1,col2,col3,col4,col5)
from table A
group by col1
当我删除 distinct 和 concat 时,简单的 count(col1,col2,col3,col4,col5) 会给出 PostgreSQL 中填充的精确值。但我需要区分这些列。有什么办法可以做到这一点? bigquery concat 的工作方式是否不同?
【问题讨论】:
请显示示例输入和输出。 奥卡姆剃刀:数据不同。你提前知道答案吗?如果不是,您是否证明不同数据库中的数据实际上是相同的? 【参考方案1】:BigQuery 标准 SQL 的以下几个选项
#standardSQL
SELECT col1,
COUNT(DISTINCT TO_JSON_STRING((col1,col2,col3,col4,col5)))
FROM A
GROUP BY col1
或
#standardSQL
SELECT col1,
COUNT(DISTINCT FORMAT('%T', [col1,col2,col3,col4,col5]))
FROM A
GROUP BY col1
【讨论】:
【参考方案2】:适用于许多不支持COUNT DISTINCT
形式的数据库的替代方案:
SELECT COUNT(*)
FROM (
SELECT DISTINCT Origin, Dest, Reporting_Airline
FROM `fh-bigquery.flights.ontime_201908`
WHERE FlightDate_year = "2018-01-01"
)
我对为什么 CONCAT
在您的示例中不起作用的猜测:您有任何空列吗?
【讨论】:
以上是关于在 BigQuery 中计算不同的 concat的主要内容,如果未能解决你的问题,请参考以下文章