Google bigquery Bigquery选择不同的值

Google bigquery Bigquery选择不同的值,google-bigquery,Google Bigquery,如何在Google Bigquery中选择不同的值 查询: SELECT DISTINCT cc_info FROM user WHERE date = ? 谢谢 尝试使用分组依据 SELECT cc_info FROM user WHERE date = ? GROUP BY cc_info SELECT cc_info FROM user WHERE date = ? group by cc_info 只需使用分组方式 SELECT cc_info FROM user WHERE da

如何在Google Bigquery中选择不同的值

查询:

SELECT DISTINCT cc_info
FROM user
WHERE date = ?

谢谢

尝试使用
分组依据

SELECT cc_info
FROM user
WHERE date = ?
GROUP BY cc_info
SELECT cc_info
FROM user
WHERE date = ?
group by cc_info
只需使用分组方式

SELECT cc_info
FROM user
WHERE date = ?
GROUP BY cc_info
如果要对可以使用的不同值进行计数

SELECT COUNT(DISTINCT cc_info)
FROM user
WHERE date = ?
不是正确的查询,因为
DISTINCT
是一种统计近似值,不能保证精确。看

所以更好的方法是

select EXACT_COUNT_DISTINCT(cc_info) from user where date = ?

对于所有在BigQuery中找到DISTINCT方法的人,以及需要为具有大列的表使用unique field功能的人,使用所提到的
GROUP BY
是不可能的

从2020年起,BigQuery拥有修改器。您需要将查询包装为:

SELECT DISTINCT usr.cc_info
FROM (
  SELECT *
  FROM user
  WHERE date = ?
) usr

这对于从其他SQL产品转移到其他SQL产品的人来说可能非常方便。

这是实现您的目标的另一种方式(以防其他人需要它),在当前的BigQuery 2020中可以实现

SELECT colname FROM table1
UNION DISTINCT 
SELECT colname FROM table2
UNION DISTINCT
.
.
.
SELECT colname FROM tableN 

我的参考是。

如果此解决方案随着表的增大而停止工作,您可以将
分组方式
替换为
分组方式
,以增加可伸缩性。是否可以从表分组方式中选择*?是的,您是对的。普通distinct使用超日志算法对分布式计算机上的distinct进行计数。根据您的数据,如果某种近似值是正确的,则COUNT提供的性能比EXACT_COUNT_DISTINCT好得多。我真的很欣赏一个简单的COUNT-DISTINCT语句背后运行的复杂算法。
SELECT colname FROM table1
UNION DISTINCT 
SELECT colname FROM table2
UNION DISTINCT
.
.
.
SELECT colname FROM tableN