大查询视图(没有重复行的表)

时间:2017-04-26 05:12:02

标签: google-bigquery

我需要创建一个视图,就像一些带有一些简单转换的表一样,我想确保特定列中的值不重复。 所以,让我们说这个表看起来像这样:

list2env

结果视图如下所示:

ID, ColumnA, ColumnB
-------------------
1   cars     shirts
2   tvs      dogs
1   fingers  computers

那么,是否有一个等同于SELECT distint(ID),ColumnA,ColumnB?
什么是最有效的方法?

2 个答案:

答案 0 :(得分:2)

以下是BigQuery Standard SQL

  
#standardSQL
WITH yourTable AS (
  SELECT 1 AS id, 'cars' AS columnA, 'shirts' AS columnB UNION ALL
  SELECT 2, 'tvs', 'dogs' UNION ALL
  SELECT 1, 'fingers', 'computers' 
)
SELECT r.*
FROM (
  SELECT ARRAY_AGG(t ORDER BY columnA LIMIT 1)[OFFSET (0)] AS r
  FROM yourTable t
  GROUP BY id
)
-- ORDER BY id  

注意:你应该有一些关于用手指选择汽车行的逻辑! 以上版本(作为示例)基于asc order

答案 1 :(得分:1)

如果您只想为每个ID添加任意行,请使用"uid"

"other": { ".validate": false }

或者您可以使用$user技巧根据条件选择最新行。