-
[ ClickHouse ] groupArray Function 알아보기Database/Clickhouse 2023. 9. 6. 08:37728x90반응형
- 목차
키워드.
- - groupArray
- - ClickHouse
함께 보면 좋은 글.
아래 글은 Docker 로 간단히 ClickHouse Container 를 구축하는 설명을 작성한 페이지입니다.
https://westlife0615.tistory.com/694
groupArray 사용해보기.
이번 글에서는 ClickHouse 의 groupArray 함수에 대해서 알아보려고 합니다.
groupArray 는 일반적인 SQL 에서 사용되는 Listing Aggregation 함수와 그 성격이 유사합니다.
group by 로 선언된 칼럼과 그 이외의 Value 들을 모두 Listing 하게 됩니다.
group array 라는 이름그대로, Group BY 를 수행한 이후에 Array(String) 과 같은 타입으로 나머지 칼럼의 값들을 리스팅합니다.
간단한 예시는 아래와 같습니다.
먼저 테이블을 생성하고, 데이터를 추가합니다.
테이블의 이름은 user_actions 이구요. user, action, acted_at 인 세가지 칼럼을 가집니다.
테이블은 사용자의 시간별 행동을 기록하는 단순한 테이블입니다.
create table default.user_actions ( user String, action String, acted_at DateTime ) engine=MergeTree() order by acted_at partition by toYYYYMM(acted_at); insert into default.user_actions values ('Aeron', 'Click', '2023-01-01 00:00:00'), ('Bob', 'View', '2023-01-01 00:00:00'), ('Chris', 'Exit', '2023-01-02 00:00:00'), ('Aeron', 'Visit', '2023-01-02 00:00:00'), ('Bob', 'Click', '2023-01-03 00:00:00') select * from default.user_actions
이제 groupArray 함수를 적용합니다.
user 를 기준으로 Group BY 를 수행하고, 나머지 칼럼들을 Listing 합니다.
select user, groupArray(action), groupArray(acted_at) from default.user_actions group by user
이번에는 action 을 기준으로 user 와 acted_at 을 리스팅합니다.
select action, groupArray(user), groupArray(acted_at) from default.user_actions group by action
groupArray 타입 확인하기.
toTypeName 함수를 사용하면 칼럼의 타입을 확인할 수 있습니다.
user 와 action 칼럼은 String 타입, 그리고 acted_at 칼럼은 DateTime 타입으로 테이블을 구성하였습니다.
그리고 groupArray 함수를 적용할 시에, 그 결과로써 Array(String) 또는 Array(DateTime) 으로 변환됩니다.
즉, groupArray 는 Array 타입으로 칼럼을 변환시키는 역할을 수행합니다.
select action, toTypeName(groupArray(user)), toTypeName(groupArray(acted_at)) from default.user_actions group by action
반응형'Database > Clickhouse' 카테고리의 다른 글
[ClickHouse] Compact Wide Parts 알아보기 ( part_type ) (0) 2024.01.16 [ClickHouse] Block 알아보기 (0) 2024.01.10 ClickHouse MergeTree 알아보기 (0) 2023.11.07 [ ClickHouse ] arrayMap Function 알아보기 (0) 2023.09.06 [ ClickHouse ] arrayFlatten Function 알아보기 (0) 2023.01.23