impala 中的多行
Multiplied rows in impala
我正在通过 sqoop 从视图中获取一些数据,其中一些已连接 tables 到 impala 中的外部 table。但是我看到一个 table 中的列乘以行。
例如
id first_name surname step name value
1 ted kast 1 museum visitor
1 ted kast 1 shop buyer
1 ted kast 2 museum visitor
1 ted kast 2 shop buyer
但我想成为那样的人
id first_name surname step name_value
1 ted kast 1 [(museum visitor), (shop buyer)]
1 ted kast 2 [(museum visitor), (shop buyer)]
如何在 impala 中实现?
我们可以在这里使用聚合和 GROUP_CONCAT
:
SELECT
id,
first_name,
surname,
step,
CONCAT('[', GROUP_CONCAT(CONCAT('(', CONCAT_WS(' ', name, value), ')'), ', '), ']') AS name_value
FROM yourTable
GROUP BY
id,
first_name,
surname,
step
ORDER BY id;
这是 MySQL 的 demo,其中语法几乎与 Impala 相同。
我正在通过 sqoop 从视图中获取一些数据,其中一些已连接 tables 到 impala 中的外部 table。但是我看到一个 table 中的列乘以行。 例如
id first_name surname step name value
1 ted kast 1 museum visitor
1 ted kast 1 shop buyer
1 ted kast 2 museum visitor
1 ted kast 2 shop buyer
但我想成为那样的人
id first_name surname step name_value
1 ted kast 1 [(museum visitor), (shop buyer)]
1 ted kast 2 [(museum visitor), (shop buyer)]
如何在 impala 中实现?
我们可以在这里使用聚合和 GROUP_CONCAT
:
SELECT
id,
first_name,
surname,
step,
CONCAT('[', GROUP_CONCAT(CONCAT('(', CONCAT_WS(' ', name, value), ')'), ', '), ']') AS name_value
FROM yourTable
GROUP BY
id,
first_name,
surname,
step
ORDER BY id;
这是 MySQL 的 demo,其中语法几乎与 Impala 相同。