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的重复。