ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • [시각화/ Google Data Studio] 기간 별 데이터 비교하기/ Date Comparison (feat. 필드 추가하기, Blended Data 생성하기)
    스터디 2020. 6. 25. 14:02

    구글 애널리틱스를 통해 데이터 수집 체계를 나름 구축했다. 그리고 시간이 지나면서 데이터가 쌓이기 시작했다. 이제는 구글 데이터 스튜디오를 이용해서 쓸모 있는 대시보드를 만드려고 한다. 단순히 예쁘고 이목을 끄는 대시보드가 아닌, 관련 업무의 사람들로 하여금 현재 상황을 정확히 직시하게 하고, 변화를 이끌어낼 수 있는 대시보드를 만들고 싶었다.

    몇 가지 차트를 기획했고, 그 중 하나가 지난주와 이번 주 데이터(전체 사용자, 신규 사용자 등..)를 함께 그려내는 것이었다. 하지만 특정 기간을 비교하는 것은 어려웠다. 물론 구글 데이터 스튜디오는 몇몇 그래프에서 comparison date range 기능을 제공하지만, 내가 쓰고 싶은 바 그래프에서는 제공하지 않았다. 

    폭풍 검색 후, 이 블로그를 참고하여, week comparison 시각화를 구현했다. 

    결과물 먼저 보자면,



    하고 나니, 색 변화 빼고는 그렇게 달라진 것 같아 보이진 않는다.. 후..

    하지만 시각화에서 색이 얼마나 중요한 요소인가..

    블로그와 전체적인 step은 같지만, 차이점은 블로그에서는 연도를 비교했다는 점이다. 위 블로그의 step에 맞게 내가 적용한 방법을 설명하겠다.

    Step 1.Connect to Any Dataset with a Date Field


    데이터 연결은 어렵지 않쥬


    Step 2. Create a Comparison Date Field in your Dataset

    나는 week over week comparison을 구현하고 싶었으므로, 완성된 데이터의 모습은 다음과 같을 것이다.

     

    ISO Week of ISO Year New Users This Week Comparison Week(Last Week) New Users Last Week
    202001 100 201952 -
    202002 102 202001 100
    202003 59 202002 102


    Comparison Week(Last Week)라는 새로운 field를 생성해야 한다. Data Type이나 각 Function의 규칙(?)이나 한계(?) 때문에 field를 만드는 게 꽤 번거로웠다. 계산 하나하나 field로 생성하고 저장하고 타입 변경하는 과정을 거쳐야 해서 번거롭고 답답한 작업이었다.

     

    필드를 추가하는 방법은

    Resource > Manage added data sources > 원하는 data source의 Edit > Add a Field

     

    기본적인 함수 사용법은 functon reference를 참고하면 된다.

    Comparison Week을 나타내는 최종 field인 Last yyyyww를 만들기 까지 다음과 같은 field를 생성했다. 간단하게 말하면, 년도와 주를 분리하여, 주에서 1을 빼고 다시 연도와 합쳐, 한 주전을 나타내는 것이다.

    1) yyyyww

    기본 field인 ISO Week of ISO Year를 복사하고, type만 변경하여 만든 필드이다.

    formula -
    type ISO Week 
    example 202001 


    2) ww


    yyyyww 중 ww만 남긴 필드이다.

    formula RIGHT_TEXT(yyyyww, 2) 
    type text -> number로 변경 
    example 1


    3) Last ww


    지난 주를 나타내기 위해서 ww에서 1을 뺐다.

    formula ww-1 
    type number -> text로 변경 
    example 0


    4) Last ww*


    이번 주가 1이라면, 전주는 0이 아니라 52(작년)가 되도록 변경했다.

    formula CASE 
    WHEN Last ww='0' THEN '52' 
    WHEN Last ww='1' THEN '01' 
    WHEN Last ww='2' THEN '02' 
    WHEN Last ww='3' THEN '03' 
    WHEN Last ww='4' THEN '04' 
    WHEN Last ww='5' THEN '05' 
    WHEN Last ww='6' THEN '06' 
    WHEN Last ww='7' THEN '07' 
    WHEN Last ww='8' THEN '08' 
    WHEN Last ww='9' THEN '09' 
    ELSE Last ww 
    END 
    type text
    example 52


    5) yyyy

     

    기본 필드인 year를 복사하고, 타입을 변경했다.

    formula -
    type year-> number로 변경  
    example 2020


    6) Last yyyy

     

    전년도를 나타내기 위해서 yyyy에서 1을 뺐다.

    formula yyyy-1
    type number -> text로 변경 
    example 2019


    6) Last yyyy*

    Last ww*가 52일 때, 년도는 작년을 나타내야 한다.

    formula CASE 
    WHEN Last ww* = '52' THEN Last yyyy 
    ELSE yyyy 
    END
    type text
    example 2019


    7) Last yyyyww

    최종적으로 만들어진 년도, 주에 관한 field를 연결하고 타입을 변경한다.

    formula CONCAT(Last yyyy*, Last ww*) 
    type text -> ISO Year Week로 변경  
    example Dec 23,2019 to Dec29,2019 (Week 52) 


    최종 필드를 만들기까지의 변화는 다음과 같다.


    이렇게 정리해서 보면 간단한데, 처음에는 년월일에서 하루를 빼야 하나? 아님 시간을 다 초단위로 바꿔서 60초*60분*7일을 빼야 하나? 고민을 많이 했다. 기본 field를 살펴보던 중 연도+주를 나타내는 field가 있다는 것을 다행히 찾았고 이를 활용할 수 있었다.

    formula를 만들 때 주의해야 할 점 중 하나는 CASE 문에서는 계산식이나 함수를 사용할 수 없다는 점이다. CASE 문에서 계산식을 사용할 때 마다 다음과 같은 오류가 떴다.

     

     

    하지만 계산식을 써야되는 상황은 반드시 있다. function reference를 잘 읽어보니 계산식에 대한 field를 하나 더 만들어서 활용하라고 했다.


    그래서 Last yyyy*를 만들 때, 

    CASE
    WHEN Last ww* = '52' THEN Year-1
    ELSE Year
    END

    이렇게 만들고 싶었지만,

    Last yyyy라는 field를 하나 더 만들어서 아래와 같이 formula를 만들 수밖에 없었다.

    CASE
    WHEN Last ww* = '52' THEN Last yyyy
    ELSE Year
    END

    더하여, 위처럼 이유도 알려주지 않고, 'invalid formula' 라고 경고 메시지가 뜨면서 안될 때가 있는데, 그때는 오타나 변수 타입을 잘 확인하면 좋을 것 같다. (불친절한 구글 데이터 스튜디오,,,)


    Step 3: Blend Your Dataset with Itself


    구글 데이터 스튜디오에서는 data blending 기능을 제공하는데, 데이터 베이스의 JOIN 기능과 같다. 자세한 설명은 About data blending

     

    다음과 같은 두 개의 테이블을 join해줘야 하기 때문에 blend data 기능이 필요하다. 참고로 blend data는 left join만을 지원하는 듯하다.


    테이블 A

    ISO Week of ISO Year New Users Last yyyyww
    202001 100 201952
    202002 102 202001
    202003 59 202002


    테이블 B

    ISO Week of ISO Year New Users
    202001 100
    202002 102
    202003 59


    A테이블의 Last yyyyww와 B테이블의 ISO Week of ISO Year를 키로 하여 두 테이블을 join 하면 다음과 같다.

    ISO Week of ISO Year New Users (This Week) Last yyyyww New Users (Last Week)
    202001 100 201952 -
    202002 102 202001 100
    202003 59 202002 102


    현재는 New Users라는 필드만 존재하기 때문에, This Week, Last Week의 구분을 위해 Blend data 전에 New Users를 복사하여, New Users This Week, New Users Last Week 필드를 새로 만들어 구분해준다.

    이제 데이터 스튜디오에서 blend data를 해보자!

     

    blend data하는 방법은
    Resource > Manage blended data > Add a Data view


    테이블 A, B처럼 키, 디멘젼, 매트릭 자리에 필드를 설정하면 된다. Data Range도 적절히 설정해줘야 한다.

    Step 4: Create Your Visual


    다음과 같이 설정했다.

     


    완성

     

    댓글

Designed by Tistory.