ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • [ ClickHouse ] groupArray Function 알아보기
    Database/Clickhouse 2023. 9. 6. 08:37
    728x90
    반응형

    - 목차

     

    키워드.

    • - groupArray
    • - ClickHouse

     

    함께 보면 좋은 글.

    아래 글은 Docker 로 간단히 ClickHouse Container 를 구축하는 설명을 작성한 페이지입니다.

     

    https://westlife0615.tistory.com/694

     

    [Clickhouse] Docker 로 Clickhouse 구현하기

    - 목차 들어가며. 이번 글에서는 Docker 를 활용해서 Clickhouse 를 구축하는 글을 작성하려고 합니다. 사용할 Docker Image 는 bitnami/clickhouse 이미지입니다. 간단한 MergeTree 엔진의 Table 을 생성하고 데이

    westlife0615.tistory.com

     

     

    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

     

     

    반응형
Designed by Tistory.