如何编写大型查询以在多个表中获取不同数量的列

时间:2019-09-18 13:30:31

标签: google-bigquery

我想编写一个大查询以从给定数据集中的多个表中获取列中的值。但是每个表中的列名都不同,例如colA,colB,colC等。如何做到这一点?

我的数据集中有很多表,其中一列包含Web URL。但是,此列名在每个表中都不同。我要处理所有表的所有URL。

我检查了此链接How to combine multiple tables that vary slightly in columns。但是,它讨论的是有限数量的列名变体和有限数量的表。

我知道

SELECT
column_name
FROM
`bq-project.bq-dataset.INFORMATION_SCHEMA.COLUMNS`
group by 1 

将给出不同的列,但不确定如何进行

2 个答案:

答案 0 :(得分:0)

您可以创建一个视图以翻译列名。

CREATE VIEW my_dataset.aggregated_tables AS
SELECT * EXCEPT (colA), colA as url FROM table_a
UNION
SELECT * EXCEPT (colB), colB as url FROM table_b
UNION
SELECT * EXCEPT (colC), colC as url FROM table_c;

答案 1 :(得分:0)

为了娱乐,请使用JS UDF查找哪个列具有URL:

measures: {
  balanceDays: 
    {
      type: count,
      sql: DATEDIFF(day, '${NmOrder.show_date}', '${NmOrder.booked_date}')   
    },
},

enter image description here