본문 바로가기
Tableau 흡수내용

[태블로(Tableau)] 그래프 선택시 선택한 연도 or 연월 값으로 URL 연결하기

by Mr.noobiest 2023. 12. 20.

태블로에서 어떠한 특정 그래프를 선택하면, 해당하는 데이터의 연월을 URL로 쏴주는 방법

 

>사용데이터 : 슈퍼 스토어

>변수 : [태블로]연도별/연월별 기간제한 출력하기 게시글 참조

 

 

[태블로(Tableau)] 연도별/연월별 스위치해서 표현하기(Tableau switching year,yearmonth)

사용데이터 : 슈퍼 스토어(한국버전) 사용 변수 : 수익, 고객 세그먼트, 주문일자 파생 변수 : 연도별/연월별 매개변수 , 주문일자 Start , 주문일자 End , 주문일자_변환 구형 기능 : 연도별 / 연월별

mrnoobiest.tistory.com

 

>구현해야하는 기능 : 그래프의 특정 일자를 선택하면 해당하는 값(년월+"01")을 URL로 연결하기

 

 


 

 

그래프  클릭 시  해당하는 URL 연결 방법

 

1) 선택한 Date값을 넣어줄 매개변수를 생성한다.

그래프를 선택하면 해당값이 저장될 매개변수를 생성해준다

 

❓매개변수를 날짜형이 아닌 문자형으로 쓰는 이유

위의 매개변수를 보면 의문이 들수 있을것이다, 왜 날짜 정보를 가져오는데 데이터 유형이 문자열인가?

태블로에서는 날짜 데이터를 년/분기/월/일 순으로 나눠서 보관하는데 이때 날짜에서 년월만 선택하다면 날짜 분기와 일 부분이 제외되면서 실수형으로 변환되서 표현된다.

하지만 날짜를 실수로 표현하면 원하는 값이 안나올수 있어서 문자열로 바꿔주는것이다.

숫자형과 문자형은 STR( )함수와  INT( )함수로 형변환만 하면되서 연동이 쉽다

 


 

 

2) 생성한 매개변수 Select_date를 우클릭-> 매개변수 표시를 한다.

이후 상위 메뉴 탭 중 "워크시트" -> 동작 -> 동작 추가-> 매개 변수 변경을 설정한다.

 

 


 

 

3) 값이 자동으로 변경될 부분을 매개변수에 연동할 필드 값(행,열,세부정보에 위치한 값들)를 선택해준다.

 

 


 

4) 그래프의 값을 선택할 곳을 선택하면 해당 그래프가 위치한 열(연도별/연월별 yyyy~~)의 값이 Select_date에 표시될것이다.

 

2019.09의 값이 Select_date에 연동된것을 확인 할수 있다.

 

 


 

5. 이후에는 이렇게 생성된 Select_date를 사용해서 전월이나 당월말같은것들을 표현할 수 있다, 아래는 해당 식들이다

-선택한 Select_date의 년도와 월의 마지막에 해당하는 당월말을 출력-
DATE(
       DATEADD(
                   'day', -1, DATEADD(
                                  'month', 1 , DATETRUNC(
                                                                   'month',DATE(
                                                                                    [Select_date]+'.01'
                                                                                    )
                                                                   )
                                 )
                   )
)



-식 해석-
1) Select_date(문자)+'.01' -> 2019.09.01
2) DATETRUNC()를 적용하기 위해 DATE로 변환후 'month'의 값만 뽑기 -> 09
3) DATEADD로 뽑은 'month'를 기준으로 +1 -> 10월
4) DATEADD로 변경된 2019.10.01에서 -1을 해서 9월의 마지막 일을 얻을수 있다-> 2019.09.30
5)마지막으로 DATE로 묶어서 생성되는 필드의 형식을 날짜로 고정

 

-선택한 Select_date의 전월 초를 출력-

DATE(
       DATEADD(
                     'month' , -1 , DATE(
                                             [Select_date]+'.01'
                                             )
                     )
         )


-식 해석-
1) Select_date+.01->2019.09.01
2) DATEADD로 한달전으로 이동 -> 2019.08.01
3) DATE형식으로 변환 끝

 

 


 

 

선택한 날짜의 연도만 뽑기

 

 
LEFT(
      STR(
             [Select_date]
          ),4
      )


년도를 사용해서 해당년도의 첫날과 마지막을 선택하기
첫날
[선택한 날짜의 연도]+".01.01"

마지막날
[선택한 날짜의 연도]+".12.31"

 

 


 

6) 아래 함수들을 사용해서 원하는 형태로 가공이 가능하다

DATE() , INT() , STR()

 


 

 

7) URL의 선택한 날짜 값을 생성한다.

 

누르면 이동할 URL를 만들어야하는데 그래프를 선택하면 해당값도 같이 보이는 버튼을 만들고 싶다(시트 새로 생성-> 텍스트에 표시할 텍스트 추가)

Select_date를 사용해서 원하는 형태의 계산된 필드를 만들어주면된다.

 


 

 

8) 생성한 Select_Date를 반드시 세부정보에 넣는다.

 

이때 가장 중요한 것이 있는데 계산된 필드를 그대로 "동작(action)"에서 사용하고 싶다면 반드시 해당 시트에 세부정보에 계산될 필드를 넣어줘야한다,

이때 날짜를 그대로 넣으면 수정하기 힘드므로 문자열로 넣어주는게 좋다 STR()

 

그냥 넣은거라 yyyy-mm-dd지만 STR이라 원하는 형태로 변경하기 쉽다.

 

 


 

 

9) 이후 대시보드 -> '동작(action)'에 들어간후 동작추가 -> URL 동작 추가를 눌러준다.

이후 URL공란에 원하는 형태의 값을 넣어주면되는데 9)에서 얘기했듯이 매개변수뿐만 아니라

계산될 필드의 값도 세부정보에 넣어주면 매개변수처럼 사용이 가능하다. (=동적 매개변수)

 

 


 

 

왜 yyyy.mm.dd로 변경해야 하는지?

굳이 이렇게 하는 이유는 네이버 뉴스의 경우 날짜 URL이 yyyy.mm.dd 형식이라 yyyy-mm-dd를 그대로 사용하면

이상한 날짜가 표시된다. 이처럼 사이트 마다 URL의 변수값이 달라서도 그렇고 사용자의 액션으로 동적인 표현을 하고 싶기도 해서 이렇게 하는것이다.

 


 

 

활용하기

이때 7에서 생성한 시트만 체크해준후 URL에는 전월초와 당월초로 부동산 정책을 검색해보자.

원하는 기간을 선택하고 다시 검색해주면 다음과 같은 URL를 얻을수 있다. %EB이런형태는 한글을 UTF-8로 변환하면 저렇게 된다.

https://search.naver.com/search.naver?where=news&query=%EB%B6%80%EB%8F%99%EC%82%B0%20%EC%A0%95%EC%B1%85&sm=tab_opt&sort=0&photo=0&field=0&pd=3&ds=2017.08.12&de=2020.08.12&docid=&related=0&mynews=0&office_type=0&office_section_code=0&news_office_checked=&nso=so%3Ar%2Cp%3Afrom20170812to20200812&is_sug_officeid=0

 

빨간 부분에 우리가 만든 전월초와 당월말을 넣어주면된다.

https://search.naver.com/search.naver?where=news&query=%EB%B6%80%EB%8F%99%EC%82%B0%20%EC%A0%95%EC%B1%85&sm=tab_opt&sort=0&photo=0&field=0&pd=3&ds<전월초>&de=<당월말>&docid=&related=0&mynews=0&office_type=0&office_section_code=0&news_office_checked=&nso=so%3Ar%2Cp%3Afrom<전월초>to<당월말>&is_sug_officeid=0

 

 


 

 

년월일의 형태가 다른데 괜찮나요?

엥 우리가 만든건 yyyy.mm.dd 형식인데네이버는 yyyymmdd를 사용한다, 방법은 2가지이다.

1) 별도의 필드를 만든후 세부정보에 넣어주는것

2) 일단 그냥 넣어보는것이다

 

대체로 사이트에서 알아서 값의 형태를 변경해준다.

 

 

 

 

끝.

 

 

 

 

 

728x90
반응형