Google bigquery 如何使用BigQuery获取唯一对?

Google bigquery 如何使用BigQuery获取唯一对?,google-bigquery,Google Bigquery,我有一个大查询表。我正在使用交叉连接获取所有可能的对。如何仅筛选唯一的? 交叉连接返回ID的所有组合。例如101和102以及102和101。如何使用BigQuery减少所有保持第一对(101和102)的反向双精度 with t0 as (SELECT 1 as big_id, '101' as small_id, 0.99 as bottom, 1.03 top UNION ALL SELECT 1, 'z3Awwer', 1.05, 1.09 UNION AL

我有一个大查询表。我正在使用
交叉连接
获取所有可能的对。如何仅筛选唯一的?
交叉连接
返回ID的所有组合。例如101和102以及102和101。如何使用BigQuery减少所有保持第一对(101和102)的反向双精度

    with t0 as (SELECT 1 as big_id, '101' as small_id,  0.99 as bottom, 1.03 top
      UNION ALL SELECT 1, 'z3Awwer', 1.05, 1.09
      UNION ALL SELECT 1, 'gA1sd03', 1.09, 1.13
      UNION ALL SELECT 1, 'sAs10sdf4', 1.2, 1.25
      UNION ALL SELECT 1, 'Adf105', 1.33, 1.39
      UNION ALL SELECT 2, 'A1sdf02', 1.05, 1.09
      UNION ALL SELECT 2, '345A103', 1.09, 1.13
      UNION ALL SELECT 2, 'A1sd04', 1.2, 1.25
      UNION ALL SELECT 2, '6_0Awe105', 1.33, 1.39)
SELECT * FROM t0
CROSS JOIN t0 t1 
WHERE t0.big_id = t1.big_id

不确定这是否基于真实数据,但您可以添加一个过滤器以删除已加入的小id:

SELECT *
FROM t0
CROSS JOIN t0 t1 
WHERE t0.big_id = t1.big_id
  and t1.small_id >= t0.small_id

这将确保101显示为102,但102不会显示为101。

谢谢您的回复。不幸的是,在实际数据中,小id是
字符串
,编辑为将
小id
转换为整数。有时id具有特许权。您为什么不接受原始答案?您仍然可以比较字符串:
select'A102'>='A101'
将为true,而
select'A101'>='A102'
将为false。添加的筛选器仍应有效。使用您的数据集,应用过滤器时,结果集从41个结果减少到25个。不清楚您在寻找什么。我的回答仍然消除了小id/小id的重复。