Impala - 获取数据库集中列中的多个表

时间:2018-03-17 15:35:40

标签: impala

跟进此问题:Impala - Get for all tables in database concentenated columns

假设我有一个表B1,B2,... B300的数据库A. B1具有列C1和C2

,B2具有列D1,D2和D3。 ... B300有E1和E2列。

我正在寻找一个产生以下所需输出的Impala查询:

B1    | "C1+C2"

B2    | "D1+D2+D3"

...
B300  | "E1+E2"

其中" D1 + D2 + D3"," C1 + C2"和" E1 + E2"是串联的字符串。

1 个答案:

答案 0 :(得分:0)

首先将UNION所有表放在一起,并为每个表生成table_name。您可以将表名复制到excel中,然后自动为excel中的每个表生成SELECT和UNION语句(作为每个表的新列)。然后你可以在impala中运行UNION代码。

CREATE TABLE all_tables_unioned AS
SELECT 
*
, "B1" AS table_name
FROM B1
UNION
SELECT
*
, "B2" AS table_name
FROM B2 
Etc...

然后,您可以将此新表中的所有列名从hive Metorore复制到excel中,并创建一个新的逗号列(这样可以在excel中生成代码以节省您输入逗号的速度)。然后将excel中的两列复制并粘贴到此代码中:

SELECT 
CONCAT("all columns from excel")
FROM all_tables_unioned