우리는 계속해서 태블로의 데이터 블렌딩(Data Blending)에 대해 살펴보고 있습니다
지난 포스트에서는 조인 vs. 블렌딩 개념 및 작동 원리 정리, 그리고 블렌딩을 만드는 방법을 상세하게 알아보았습니다
오늘은 지난 포스트에서 못다한 이야기,
* 마크를 포함하는 블렌딩 조건에 대한 논의, 블렌딩에서 키 필드와 관련해서 생길 수 있는 이슈 등을 풀어나가도록 하겠습니다
*(asterisk) 마크에 대한 이해
지난 시간에 봤던 Customer1과 Purchase, 두 시트를 다시 한 번 소환해보죠
이렇게 두 테이블이었고, Customer1을 마스터 테이블로, Purchase를 보조 테이블로 해서 만든 화면은 아래와 같았습니다
위의 그림에서 송길수와 조민수의 Product 부분에서 * 마크가 붙어있습니다
이 표식이 붙는 이유는 마스터 테이블에 의해 결정된 VLOD에 보조 테이블의 Product 필드를 가져다 붙여야 되는데,
붙일 수 있는 값이 2개 이상이어서 저기다가 뭘 붙여줘야될지 태블로가 잘 모르기 때문입니다
다시 한 번 보조 테이블 Purchase 시트를 가지고 와보죠
위의 그림에서 보여지는 것처럼 Customer Name 필드에 송길수와 조민수가 두 번 들어가 있고,
송길수의 Product는 옥동자와 죠스바, 조민수의 Product는 스크류바와 수박바, 각 두 개씩 들어가 있는 것이 확인되죠
그러니까 태블로는 송길수의 Product로 옥동자를 붙일지 죠스바를 붙일지,
조민수의 Product로 스크류바를 붙일지 수박바를 붙일지 혼란스러워하고 있는 상황이죠
이게 블렌딩이 아니라 하나의 테이블에서 필드가 올라가는 것이라면,
Customer Name으로 맞춰진 현재의 VLOD가 Product 필드를 집어넣음에 따라 Customer Name - Product로 더 분기될텐데,
블렌딩이 때문에 그렇게 되지 않는 것이지요. 블렌딩의 VLOD는 마스터 테이블에 의해 정해져버리기 때문이죠
그래서 태블로는 '에라 모르겠다' 하면서 * 마크를 붙이는 것입니다
정리해보면, 결국 * 마크가 생기는 이유는 키 필드에 중복값이 있기 때문입니다
원하지 않는 * 마크가 나왔을 때에는 키 필드에 속한 값들이 고유한 값들인지 체크해보시면 되겠습니다
복수의 키 필드 설정
이번에는 두 개 이상의 붉은색 체인으로 두 테이블을 연결하는 예시를 한 번 살펴보겠습니다
예전에 조인을 다루었던 포스트에서 조인 조건을 엄격하게 만들면 데이터의 중복을 막을 수 있다고 설명드렸었지요?
블렌딩도 그와 비슷하게 블렌딩 키 필드를 추가로 설정하면 데이터를 조금 더 정확하게 볼 수 있습니다
Customer2 테이블과 Purchase 테이블을 가져와 확인해봅시다
Customer2 테이블은 Customer1 테이블에 마지막 한 줄이 더 추가되었습니다
대구에 사는 김진수(첫번째 줄) 외에 서울에 사는 고등학생 김진수, 동명이인이 들어온 것이지요
아까와 같은 방식으로 화면을 만들어보죠
Customer2 테이블(마스터)과 Purchase 테이블(보조)이 Customer Name 필드를 중심으로 연결되어 있습니다
한 가지 이상한 부분은 김진수의 나이가 39로 표현되고 있다는 점입니다. 지금 Customer2 테이블에는 나이가 39인 고객이 없습니다
이것은 태블로가 마스터 테이블에 있는 대구의 김진수와 서울의 김진수를 서로 다른 사람이 아니라,
하나의 사람으로 인식하고 있기 때문에 나타나는 문제입니다
그렇다면 두 명의 김진수를 서로 분리해서 인식시켜줘야겠죠?
여기에서 Location 필드를 - 기존 키 필드인 Customer Name과 함께 - 추가적인 키 필드로 사용할 수 있습니다
회색의 분절된 체인을 클릭해서 체인을 연결시켜봅시다
김진수가 위와 아래로 구분되었습니다! +_+
추정컨데 NULL이 붙은 김진수는 Purchase 테이블에 기록이 없는 서울의 김진수일 것 같고,
쌍쌍바를 사먹은 김진수는 대구의 김진수이겠죠
이렇듯 키 필드를 두 개로 설정해주면 마스터 테이블과 보조 테이블을 엮는 조건이 더 까다로워지기 때문에
현재의 화면도 조금 더 까다롭게(?) 구체적으로 나타나는 것이지요
여기에서 NULL이 붙어서 현재 화면에서 의미가 없다고 판단되는 고객은 필터를 걸어서 아래 그림과 같이 날려주면 깔끔하죠
정리를 해보면,
위의 그림의 설정은 마스터 테이블에서의 Customer Name - Location 콤비네이션을 보조 테이블로 넘기는 것이고,
보조 테이블에서는 Customer Name - Location 조합이 마스터 테이블에서 넘어온 정보와 정확히 일치하는 것에 대해서
보조 테이블의 필드 정보 - 예를 들면 Product, Payment, Amount - 를 표시하고, 다르면 NULL을 표시하는 것입니다 :D
관계가 없으면, 관계를 만들어주면 그만
마지막으로 키 필드와 관련해서 확인해볼 것은 태블로가 두 테이블의 관계를 제대로 잡아주지 못하는 경우입니다
Customer2 테이블을 약간 변형시켜 Customer3 테이블을 만들어봤습니다
위가 Customer2이고 아래가 Customer3입니다
필드의 값들은 일체 변한게 없고, 필드명만 Customer Name --> Student Name, Location --> Region으로 바뀌었습니다
화면을 만들어봅시다
Customer3 테이블에서 Student Name과 Age 필드를 올리고 Purchase 테이블로 넘어왔더니...
Customer Name 필드와 Location 필드 우측에 연결 체인이 없습니다! 심지어 분절된 회색 체인도 보이지 않네요
뭐죠? ㅠㅠ
예상하셨겠지만, 키 값으로 활용되어야할 필드명이 마스터 테이블과 보조 테이블에서 다르기 때문에 이런 상황이 생기는 것이죠
마스터 테이블에서는 Student Name - Region 조합인데, 보조 테이블에서는 Customer Name - Location 조합입니다
이름만 봐서는 완전 다른 필드입니다. 그래서 태블로도 둘을 연결시킬 생각을 미쳐하지 못하는 것이죠
어떻게 할까요? 맞춰주면 되죠
첫번째 방법, 보조 테이블의 필드명을 강제로 바꿔주세요
Customer Name 필드에서 우클릭, 이름 바꾸기, 이름을 Student Name으로 바꾸고,
Location 필드에서 우클릭, 이름 바꾸기, 이름을 Region으로 변경하면!
없던 체인이 뿅! 올라왔습니다. 연결하면 되겠지요
그런데 어떤 어떤 상황 때문에 필드명을 마음대로 바꾸어주기 어려울 수도 있습니다. 그럴 때에는 두번째 방법을 사용하면 되죠
두번째 방법, 두 테이블의 관계를 직접 만들어주세요
태블로의 상단 메뉴 데이터의 관계 편집(Edit Relationships)을 누르고 들어가면 다음과 같은 창을 나오게 됩니다
여기에서 위의 그림과 같이 주 데이터 원본을 Customer3으로, 보조 데이터 원본을 Purchase로 선택한 후에
오른쪽 부분을 사용자 지정으로 선택하여 Region 필드가 곧 Location 필드이며,
Student Name 필드가 곧 Customer Name 필드와 같은 것음을 선언해주면 됩니다
확인을 누르면 마법 같이 관계가 만들어져 있는 것을 확인할 수 있습니다 :D
이 두 가지 방법을 활용하여 두 테이블의 관계를 만들어준다면,
같은 내용을 담고 있지만, 필드명이 다르게 설정되어 있는 경우에도 어렵지 않게 블렌딩을 시도할 수 있습니다 :D
더 나가고 싶으신가요?
두 개의 포스트로 블렌딩을 마무리하려고 했는데, 그마저도 어렵게 되었습니다
가장 중요한 Use Case, 실습 부분이 남았거든요. 이 부분은 다음 포스트에서 이어가도록 하겠습니다 ㅎㅎ;;
블렌딩과 관련된 이슈와 토픽들이 어디 이뿐이겠습니까
제가 말씀드리지 못한 블렌딩의 약점이나, 필터를 사용할 때 작동 방식 등등 수도 없이 많을 것이지만,
두 차례의 포스트에서는 가장 기본 바닥이 되는 내용들 중심으로 짚어보았습니다
블렌딩에 관해서는 제가 확인한 자료 중에서는 이 자료가 가장 좋았습니다
다만, 초반에 기초적인 내용이 나오다가 중반 이후로는 어려운 컨셉들이 함께 나오고 있으니,
블렌딩에 대한 추가적인 니즈가 있으신 분들은 확인해보시면 도움 받을 수 있습니다
블렌딩과 관련된 마지막 포스트, 블렌딩 Hands-on 세션에서 다시 만나요 :D
'v3 | Tableau Deep Dive' 카테고리의 다른 글
[3]-4 블렌딩 Hands-On (4) | 2019.10.11 |
---|---|
[3]-3. 블렌딩 (1) (0) | 2019.10.11 |
[3]-2. 유니온 (1) | 2019.10.07 |
[3]-1. 조인 (2) (3) | 2019.10.07 |
[3]-1. 조인 (1) (1) | 2019.10.06 |