서버에서 사용자/그룹별로 컨텐츠 노출 설정하기

Intro

서버 관리자는 태블로 컨텐츠의 배포를 책임집니다. 서버 관리자가 고민하고 해결해야 하는 문제 중 하나는 서버의 쏟아지는 컨텐츠의 범람 속에서 사람들이 자신과 관련 있는 대시보드에 빠르게 접근할 수 있도록 돕는 것입니다. 오늘은 그 문제를 해결하는 한 가지 방법을 소개하고자 합니다. 

01

Business Senario

여기 다음과 같은 슈퍼스토어 기업 매출 대시보드가 있습니다. 이 매출 대시보드는 ‘동남아시아’,’중앙아시아’,’오세아니아’,’북아시아’ 네 개 지역 전체 매출 대시보드입니다. 그런데 슈퍼스토어 기업은 각 지역마다 영업팁이 있습니다. 각 영업팀은 무엇보다 자신과 관련있는 대시보드를 먼저 확인하고 있을 것입니다.

서버 관리자는 실무자로부터 다음과 같은 요구 사항을 받았습니다.

(1) 대시보드에 로그인할 때, 내가 담당하는 지역이 필터링된 상태로 대시보드를 보고 싶습니다. 하지만 다른 지역 기준으로 변경할 수도 있었으면 좋겠습니다.

     만약 각 영업팀이 다른 지역의 매출 정보를 보지 않아야 한다면 ‘Row Level Security (행 수준 보안)’로 문제를 해결할 수 있습니다. 그런데, 영업팀이 원하는 것은 자신이 속한 영업팀에 따라서 최초의 선택된 지역 필터가 달라지는 것입니다. 원한다면 다른 지역을 볼 수도 있어야 한다는 것이죠.

    (2) 서버에 컨텐츠가 너무 많습니다. 게다가, 각 프로젝트로 접근해서 들어가야 해서 불편합니다. ‘우리 팀’이 자주 보는 대시보드들이 시작 페이지에서 먼저 보였으면 좋겠습니다.

    → 대시보드를 ‘즐겨찾기’로 추가할 수 있지만, 이는 ‘사용자’ 단위로 적용됩니다. 각 사용자가 속한 ‘그룹’에 따라서 자주 보는 대시보드 모음이 필요할 것 같네요. 그리고 그것을 시작 페이지로 지정할 수 있어야 합니다.

    결국 두 가지 모두 사용자/그룹별로 서로 다른 컨텐츠에 우선접근할 수 있도록 설정하는 방법에 대한 이야기입니다.

    02

    첫 번째 문제: 대시보드에 로그인할 때, 내가 담당하는 지역이 필터링된 상태로 대시보드를 보고 싶습니다.

    첫 번째 방법: 사용자 지정 뷰 

    사용자마다 서로 다른 필터를 적용하는 한 가지 방법은 서버의 사용자 지정 뷰를 이용하는 것입니다. 각 사용자가 대시보드에 접근한 다음, 원하는 조건으로 필터를 바꾸고, 사용자 지정 뷰를 만들 수 있습니다.

    그런데, 이 방법은 사용자가 직접 설정해야 합니다. 각 영업팀에 새로운 사용자가 생기면 서버 관리자가 매번 그 사용자에게 방법을 알려줘야 한다는 번거로움이 있습니다.

    두 번째 방법: 사용자 함수와 매개변수 사용하기

    오늘 알려드릴 방법은 두 번째 방법입니다. 서버의 사용자/그룹 정보를 받아오는 함수를 사용하면 사용자가 속한 그룹에 따라 매개변수 값을 변경할 수 있습니다.

    이 방법을 사용한다면, 각 영업팀에 새로운 사용자가 생겨도 사용자에게 사용자 지정 뷰 설정 방법을 알려줄 필요 없이, 서버에서 새로운 사용자를 적합한 그룹에 추가해주기만 하면 됩니다.

    1️⃣  매개변수 [지역] 만들기

    단순히 지역을 필터로 사용하면 ‘로그인한 사용자에 따라 동적으로 변경되도록’ 설정할 수 없습니다. 어떤 값을 ‘동적으로’ 변경하기 위해서는 매개변수를 사용해야 합니다.

    매개변수 만들기에 가서 각 지역과 ‘전체’를 목록으로 가지는 문자열 매개변수를 작성합니다

    2️⃣  계산된 필드 [T/F_지역] 만들고 필터로 추가하기

    매개변수 [지역]의 선택된 값에 따라 ‘참/거짓’을 판별하는 계산된 필드를 작성합니다. 그리고 이 계산된 필드를 필터에 추가합니다.

    3️⃣  계산된 필드 [Default Setting for 지역] 만들기

    태블로 데스크탑 함수 중 ‘서버에서 값을 호출하는’ 함수가 있습니다. 바로 사용자 함수입니다. 사용자 함수에 대한 자세한 내용은 여기를 확인하세요.

    여기서는 두 가지 함수의 예시를 알아보겠습니다.

    현재 태블로 서버에는 아래와 같은 그룹이 있습니다. 영업팀의 이름이 지역의 이름과 동일하다고 가정한 상태입니다. 물론, 각 그룹에는 각 영업팀원들이 사용자로 추가된 상태입니다.

    💡 Username() 함수를 작성하면 어떻게 될까요?

    서버에서 누가 로그인하느냐에 따라, Username() 함수의 결과는 달라집니다. 가령, 사용자 이름이 ‘admin’인 사용자가 로그인하면 이 함수는 ‘admin’을 값으로 가집니다.

    💡 Ismembeof(’동남아시아’) 함수를 작성하면 어떻게 될까요?

    ‘동남아시아’ 그룹에 속한 사용자가 로그인했을 때만 ‘True’, 나머지는 ‘False’가 됩니다.

    이러한 로직을 적용하여 아래와 같이 적용되는 계산된 필드를 작성합니다.

    (1) Username이 ‘admin’, 즉 서버 관리자면 ‘전체’라는 값을 가진다.

    (2) 나머지 로그인 사용자는 그룹의 이름과 동일한 값을 가진다.

    IF 
    Username() = 'admin' then '전체'
    ELSEIF 
    Ismemberof('동남아시아') then '동남아시아'
    ELSEIF 
    Ismemberof('북아시아') then '북아시아'
    ELSEIF 
    Ismemberof('오세아니아') then '오세아니아'
    ELSEIF
    ISMEMBEROF('중앙아시아') then '중앙아시아'
    END
    

    4️⃣  매개변수 [지역]에 대해 ‘통합문서가 열린 시점의 값’ 설정하기

    매개변수 편집 창에 가면 ‘통합문서가 열린 시점의 값’, 즉 기본값을 설정할 수 있습니다. 이를 앞서 만든 [Default Setting for 지역]로 적용합니다. 이 때, 뜨는 에러 메시지는 무시해도 됩니다.

    5️⃣ 서버에 문서 게시한 후, 사용자로 로그인하여 확인하기

    이제 통합문서를 서버에 게시합니다. 그런 다음, 각 그룹에 속한 사용자마다 매개변수 [지역]의 기본값이 달라지는지 확인합니다.

    03

    두 번째 문제: ‘우리 팀’이 자주 보는 대시보드들이 시작 페이지에서 먼저 보였으면 좋겠습니다.

    첫 번째 방법: 즐겨찾기

    태블로 서버에서 사용자는 자주 찾는 대시보드를 즐겨찾기로 등록할 수 있습니다. 그러나, 즐겨찾기는 ‘그룹’이 아닌 ‘사용자’ 단위로 설정됩니다. 즉, 모든 팀원이 동일한 화면을 보도록 설정하기 어렵습니다.

    두 번째 방법: 모음

    버전 2021.2에 ‘모음’이라는 새로운 메뉴가 추가되었습니다. ‘모음’을 사용하면 그룹 단위로 동일한 즐겨찾기 컨텐츠를 제공해줄 수 있습니다. 기존에 서버에서는 컨텐츠의 묶음 단위로 ‘프로젝트’를 사용하였습니다. 모음은 통합문서가 어떤 ‘프로젝트’에 속해있느냐에 관계 없이 새로운 기준으로 컨텐츠 묶음을 정의한다는 점에서 기존의 ‘프로젝트’와는 다릅니다.

     

    ‘동남아시아’ 팀을 위한 모음을 만들어보겠습니다.

    1️⃣  ‘새 모음’을 선택합니다.

    2️⃣  ‘탐색’에서 원하는 컨텐츠를 선택합니다. 이 때, 모음에 추가 가능한 컨텐츠 단위는 아래와 같습니다.

    • 프로젝트
    • 통합문서
    • 데이터 원본

    3️⃣ 모음의 사용권한을 부여합니다.

    ‘동남아시아’ 그룹만 해당 모음을 볼 수 있도록 설정합니다.

    4️⃣ 모음의 소유자를 ‘동남아시아’ 그룹에 속한 사용자로 지정합니다.

    가령, 동남아시아 팀장을 소유자로 선택하면, 새롭게 추가해야 할 컨텐츠가 있을 때 서버 관리자의 도움 없이 직접 모음에 새로운 컨텐츠를 추가할 수 있습니다.

    5️⃣ ‘모음’ 페이지를 시작 페이지로 설정합니다.

    이 때, 모든 사용자에 대해 모음을 시작 페이지로 설정합니다.

    동일한 방법으로 북아시아에 대한 모음을 설정한 다음, 각각의 사용자로 로그인한 결과입니다. 자신이 속한 그룹과 관련 있는 모음만 화면에 보이게 되므로, 훨씬 빠르게 원하는 정보에 접근할 수 있게 된 것입니다.

    Closing Thoughts

    분석을 위한 플랫폼을 만들기 위해서는 데이터 연결, 준비, 분석 뿐만 아니라 공유 환경 역시 중요합니다. 조직 내 태블로 사용자가 늘어날수록 거버넌스, 보안을 비롯한 서버 관리는 점점 중요해질 것입니다. 신년이 된 만큼, 사내 사용자들이 서버 환경에 만족하고 있는지 확인해보고, 새롭게 서버 환경을 단장해보는 것은 어떨까요? Happy New Year! 태블로위키는 2022년에도 태블로 사용자를 위한 재미있고 유용한 컨텐츠로 찾아오겠습니다.

    3 thoughts on “서버에서 사용자/그룹별로 컨텐츠 노출 설정하기

    1. 와 usrname() 과 ismemberof() 너무 좋은 팁입니다. 그룹사 데이터원본 만들때, 법인별로 별로도 만들어야하는지 고민이었는데, 덕분에 해결되었습니다. 감사합니다.

    댓글 남기기

    태블로위키만의 새로운 소식, 놓칠 수 없겠죠?