google-bigquery - BigQuery:在查询 SELECT * EXCEPT(columns) 中使用 INFORMATION_SCHEMA 的结果来过滤重复的列
问题描述
试图找到两个表之间的重叠列并在同一个 SQL 查询中使用结果。
具有两个单独工作但不能将它们组合在一起的子查询的代码示例:
WITH DIFF AS (
SELECT column_name AS Columns
-- SELECT ARRAY_AGG(column_name) AS Columns
-- SELECT STRING_AGG(column_name) AS Columns
FROM (
SELECT column_name, 'S' AS S
FROM DB.INFORMATION_SCHEMA.COLUMN_FIELD_PATHS
WHERE table_name = 'T1'
INTERSECT DISTINCT
SELECT column_name, 'S' AS S
FROM DB.INFORMATION_SCHEMA.COLUMN_FIELD_PATHS
WHERE table_name = 'T2'
)
-- GROUP BY S
)
SELECT T1.*, T2.* EXCEPT(SELECT Columns FROM DIFF)
-- SELECT T1.*, T2.* EXCEPT (T1.*)
FROM DB.T1
LEFT JOIN DB.T2 USING(GUID)
使用 Python pandas,连接非常容易,因为在重复列的情况下,后缀具有强大的功能,但在当前的 SQL 中,我们缺少这种功能。
解决方案
推荐阅读
- django - 在管理站点中排除具有特定值的多对多
- arrays - Vuejs 从数组创建列表
- java - 如何将字符串读取为对象?
- java - Vert.x 启动我的应用程序的最佳方式(Vert.x 命令行与 Main 方法)
- python - Python:一次为多个客户端设置超时
- uwp - 圆角仅在视觉对象的一侧
- image - 如何在 Flutter 中查看大像素图像
- angular - TypeError:无法读取 Angular Universal 中未定义的属性“使用”
- api - Datatable 未显示带有 api 获取的 vuejs 代码中使用的数据
- python - 带有python接口的vissim com