태블로 대시보드 화면 전환 상황판을 위한 tabcmd 활용

들어가며

디노입니다. 대시보드 여러 장을 돌려가면서 사용할 필요가 있는 경우 크롬 익스텐션을 이용한 방법을 소개한 바 있습니다만, 개발된 크롬 익스텐션 자체의 한계로 탭(화면) 간 전환이 매끄럽지 못하고 투박하가 탁탁 넘어가는 점이 아쉬웠었습니다.

그러던 중 tabcmd 기능을 활용하여 특정 대시보드 혹은 시트에 대한 뷰를 이미지로서 특정 폴더에 저장하고, 이것을 화면 전환이 부드러운 알씨 등과 같은 이미지 뷰어를 활용하는 방법을 알게 되어 공유합니다.

Tableau Server 사이트에서 사이트 관리 작업을 자동화하는 데 사용할 수 있는 tabcmd 명령줄 유틸리티를 제공합니다. 사용자, 프로젝트, 그룹을 만들거나 삭제하는 작업의 스크립트를 예로 들 수 있습니다. 태블로의 뷰를 이미지 혹은 pdf로 export 한다거나 하는 것도 그 범주에 속하겠죠.

tabcmd를 이용한 태블로 대시보드 이미지의 다운로드 및 슬라이드 쇼를 만들기 위한 대략의 단계는 다음과 같습니다.

  • tabcmd설치
  • 배치 파일 구동하여 특정 폴더에 이미지가 잘 떨어지는 지 확인
  • 해당 폴더를 바라보도록 알씨 설치하여 구동
  • 특정 배치파일이 일정 시간마다 구동되도록 윈도우 스케줄러에 등록

1.tabcmd의 설치

다음 링크에 가셔서 tabcmd를 다운로드 받아 설치합니다.
https://www.tableau.com/ko-kr/support/releases/server/2020.2.3
(예를 들어 화면전시를 해야 하는 피시/노트북)

2. tabcmd 배치 구동하여 특정 폴더에 이미지 다운로드

여기에 batch파일을 돌려줍니다. (첨부파일) 내용은 서버에 로긴을 해서 특정 뷰를 이미지로 다운로드 해주는 겁니다. 소스를 보시면 금방 이해가 갈것입니다.

매뉴얼 해당 부분 : https://help.tableau.com/current/server/ko-kr/tabcmd_cmd.htm#export

c:/에 tabimg라는 폴더를 만들어두어야 하고요, 배치 파일의 내용은 서버 로긴 -> 이미지를 특정 폴더에 다운로드 -> 로그아웃의 간단한 구성으로 되어 있습니다.

path C:\Program Files\Tableau\Tableau Server\2020.2\extras\Command Line Utility
tabcmd login -s http://tablesuserver.com -u admid -p admpwd
tabcmd export -t sitenm “workbooknm/viewnm1?:refresh=yes” –png -f “C:\TABIMG\workbooknm_viewnm1.png”
tabcmd export -t sitenm “workbooknm/viewnm2?:refresh=yes” –png -f “C:\TABIMG\workbooknm_viewnm2.png”
tabcmd logout

이 파일을 포함한 내용을 노트패트/텍스트 에디터에 붙여넣기 하고 getTableaImage.bat라는 이름으로 저장해 본다.

위 내용을 포함한 bat파일을 만들고 이 배치파일을 싱행해본다. bat파일이 있는 폴더에서 shift+마우스 우클릭을 하면 “여기서 명령 창 열기”가 있다. 클릭하면 cmd창이 나타나는데 getTableaImage.bat를 입력한 후 엔터를 쳐서 실행한다.

3. 해당 폴더를 바라보도록 알씨 설치하여 구동

이렇게 특정 폴더에 이미지가 다운로드 되는 것을 확인하시고요 알씨를 가지고 이미지 슬라이드쇼를 해보시면 됩니다. https://www.altools.co.kr/download/alsee.aspx

꼭 알씨가 아니라도 다른 좋은 이미지 슬라이더 프로그램이라면 어느것이든 가능합니다.

4. 윈도우 스케줄러에 등록

잘 된다면 윈도우스케줄러에 bat파일을 등록하시면 됩니다. 이 내용은 구글링하면 많이 나와있을 겁니다. (여기 클릭)

마무리하며

여기까지 오셨다면 이미 화면들이 부드럽게 전환되고 있는 것을 직접 보고 계시리라 생각합니다. 이런 방법을 통해 고가의 KIOSK 프로그램 혹은 DID프로그램으로 사용하실 수 있습니다. 도움이 되셨기를 바랍니다.

 1,286 total views,  3 views today

크롬 익스텐션의 오프라인 설치

들어가며

앞에서 크롬 익스텐션을 이용한 화면전환에 대해 설명한 적이 있습니다. [바로가기] 그런데 이 익스텐션의 설치는 인터넷 연결이 전제되어야 합니다. 망분리 기관인 고객사에서는 인터넷 연결이 되지 않아 익스텐션의 설치가 여러운 상황이었습니다. 이런 경우 오프라인으로 설치하는 방법에 대해서 공유합니다.

CRX, zip 파일의 확보

먼저 크롬 익스텐션의 설치파일인 CRX파일의 확보가 선행되어야 합니다. 그런데 간단할줄로만 알았던 CRX파일의 확보가 생각보다 쉽지 않았습니다. 여러 시도끝에 CRX extractor/downloader 라는 또 다른 익스텐션을 이용해서 성공했는데 이 과정을 설명합니다.

https://chrome.google.com/webstore/detail/crx-extractordownloader/ajkhmmldknmfjnmeedkbkkojgobmljda

먼저 인터넷이 되는 컴퓨터로 이 링크로가면 CRX Extractor/Downloader 익스텐션이 보입니다. 이것을 설치해줍니다. 그림에도 나와 있지만 이 익스텐션의 특징은 CRX파일 뿐 아니라 ZIP파일로도 다운로드가 가능하다는 것입니다. CRX는 드래그&드롭으로 설치 가능하지만, 수동 설치시에는 ZIP파일이 사용하기 편리합니다.

그리고는 CRX를 얻기를 원하는 익스텐션으로 이동합니다. 저의 경우에는 Tab Rotate이므로 그곳으로 이동합니다.

https://chrome.google.com/webstore/detail/tab-rotate/pjgjpabbgnnoohijnillgbckikfkbjed

여기서 Get CRX 익스텐션을 우클릭하여 Download CRX for this extension을 선택하고 CRX를 받을지 ZIP을 받을지를 선택합니다. 페이지는 CRX를 얻기를 원하는 그 익스텐션 설치페이지 상태여야 합니다.

그러면 Tab Rotate.crx 혹은 Tab Rotate.zip을 다운로드하게 됩니다.

이제 이 파일을 망분리된 상태의 다른 피시로 usb등을 통해 가져갑니다.

CRX 설치 : CRX 파일을 드래그 앤 드롭으로 설치

먼저 CRX파일 설치 방법입니다. 확장 프로그램 관리 페이지로 이동하여 우측의 [개발자 모드] 스위치를 켜줍니다.

이 상태에서 탐색기에서 crx파일을 이 폴더 안으로 끌어 넣으면 설치하겠느냐고 물어본 후 자동으로 설치가 됩니다.

이제 익스텐션의 설정값을 잘 설정해서 운용하면 됩니다.

ZIP설치 : 드래그앤 드롭이 안되는 경우

드래그앤 드롭 방식의 설치가 안된다는 이슈가 최근 있어서 추가 합니다. 어떤 이유에서인지 드래그앤 드롭 방식으로 설치가 안되는 경우 다음을 따라하시기 바랍니다.

우선 chrome://extensions/ 여기로 이동해서 우측의 [개발자 모드]를 켜서 개발자 모드로 들어가게 되면 좌측 상단에 [압축해제된 확장 프로그램을 로드합니다] 버튼이 보이는데 이 버튼을 클릭합니다.

zip파일이 있는 곳으로 이동하여 [폴더 선택]을 눌러주면 설치가 자동으로 딥니다.

이제 설치가 잘 되었아니 익스텐션을 잘 활용합니다.

맺으며

크롬 익스텐션은 오프라인 설치가 가능한데 GetCRX 익스텐션을 활용하여 설치를 원하는 Tab Rotate 익스텐션의 CRX파일을 확보한 다음, 이것을 오프라인 컴퓨터로 복사하여 개발자 모드에서 끌어놓으면 (혹은 [압축해제된 확장 프로그램을 로드합니다] 버튼을 눌러 버튼을 지정하면)으면 설치하여 운용가능합니다.

 5,674 total views,  6 views today

태블로 서버에서 사용되는 커스텀 쿼리 리스트 만들기

들어가며

태블로 서버에 사용된 커스텀 쿼리의 목록이 필요하다는 요청이 들어왔습니다. 내용을 확인하니 많은 커스텀 쿼리를 사용하였는데 어떤 칼럼이 사용되고 어떤 칼럼이 사용되지 않았는지에 대한 검토가 필요해서 커스텀 쿼리 목록이 필요하다는 것이었습니다.

일 이십 개면 직접 다운로드 받아 태블로 데스크탑을 열어 쿼리문을 확인하면 될 것이지만 수 백개에 달해서 수동 방법으로는 해결이 불가능한 상황이었습니다. 내부의 선수들에게 확인하니 metadata API가 해답이 될 것 같다는 의견이었습니다.

메다데이터 API 및 GrqphiQL 쿼리

https://help.tableau.com/current/api/metadata_api/en-us/index.html

메타데이터api를 이용한 쿼리를 하려면 GrahpiQL 페이지로 가야 가는데 방법은,

  • 브라우저를 열어서 태블로 서버에 로긴한다. 태블로 온라인도 동일하게 적용됨
  • 다음 부분 url을 카피한다. /metadata/graphiql/
  • 브라우저 주소창에서 “.com” 이후 부분을 전부 삭제한 다음
  • 부분 url을 붙여준다

예를 들어 사이트명이 MYCO라면 주소는 아래와 같을 것인데
https://us-west-2b.online.tableau.com/#/site/MYCO/explore
이것을 다음과 같이 바꾸어 주면 됩니다.
https://us-west-2b.online.tableau.com/metadata/graphiql/

이렇게 들어가게 되면 다음과 같은 화면이 나옵니다.

왼쪽창에서 쿼리를 넣어주면 되는데 쿼리 내용은 아래 링크를 클릭해서 확보합니다.

https://github.com/tableau/metadata-api-samples/blob/master/samples/custom-sql-examples.graphql

listCustomSQLTableau 함수를 열린괄호부터 닫힌 괄호까지 복사합니다. 그림에서 붉은 부분을 복사해주세요. 아랫 부분의 다른 함수들로 살펴봐주세요.

이 내용을 graphiql화면에 붙여 넣고 [▶] 버튼을 눌러 실행해줍니다.

혹시 위와 같은 오류메시지가 뜨는 경우가 있습니다. Meatdata API를 사용할 수 있도록 설정하지 않았다는 의미이고, 이런 경우 tsm maintenance meatdata-services enable 커맨드를 콘솔에서 쳐서 실행시켜 주어야 합니다.

실행이 잘 되면 아래와 같이 메타데이터 API 저장소를 잘 만들었다고 나옵니다.

metadata API를 실행 가능하도록 설정했으니 다시 한번 GrahpiQL을 실행합니다. 오른쪽의 query 부분이 전부 커스텀 쿼리입니다. 이 서버의 경우는 3개의 커스텀쿼리를 가지고 있는 듯 했습니다.

아래에 보면 샘플로 4개의 함수가 보입니다.

  • 커스텀SQL테이블 리스팅하기
  • 커스텀SQL테이블과 Parent리스팅하기
  • 커스텀쿼리를 가지는 워크북
  • 워크북 커넥션

이 중 커스텀쿼리를 가지는 워크북 목록도 한 번 쿼리 해보겠습니다.

시험 삼아 커스텀쿼리를 사용하는 워크북 목록을 쿼리해보았습니다. 예상했던 대로 워크북이름 세 개가 쿼리되는 것을 확인할 수 있습니다.

마무리하며

이상과 같이 메타데이터api를 GraphiQL이용한 쿼리 활용사례를 알아보았습니다. 4~500개에 이르는 커스텀 쿼리가 있다면 목록을 만들어야할 때 무척 편리할 듯 합니다.

 1,033 total views,  3 views today

태블로 화면 오토 리프레시 총정리

디노입니다. 화면의 자동 갱신 (데이터 갱신도 마찬가지)을 물어보시는 분들이 많습니다. 며칠전 질문에 답변을 한 김에 정리해보았습니다.

1. html 메타 태그

html혹은 웹페이지에 임베딩한 경우에 유용한 방법입니다. 방법은 웹에서 쉽게 구글링 가능한데 html페이지에 아래 검정색 부분의 meta태그를 추가하는 방법입니다. (링크) 이해가 간단하고 조작이 쉽죠. 임베딩한 경우에만 유효하다는 단점이 있습니다.

<meta http-equiv=”refresh” content=”5″ />

2. 페이지 자체를 리프레시하는 크롬 익스텐션

요즘 많이 사용하고 있는 크롬 브라우저는 익스텐션이 있습니다. 여러가지 브라우저의 활용을 극대화하는 추가 기능일텐데요, 많은 개발자들이 재미있는 기능들을 익스텐션으로 개발하여 공유하고 있습니다. 크롬 전용이라는 제한은 있지만 현실적으로 동작합니다. 이와 유사한 개념은 파폭이나 ie에도 있을 듯 합니다. 개인적으로는 복잡할 것 없고 소스의 수정 또한 없으며 또 자동 리프레시를 원하는 경우가 대부분의 경우 전시용도가 많을 것이므로 누가 건드릴 일이 없는 화면일 것이라 이 방법을 추천드립니다.

https://chrome.google.com/webstore/search/auto%20refresh

유사한 응용 방법으로 전시회 등에서 특정 몇 개의 태블로 화면을 몇 초 간격으로 계속 돌려서 전시해야 하는 경우에도 무척 우용합니다.

3.  태블로 리프레시 크롬 익스텐션

Refresh Tableau Extension
검색을 이런 딱 맞춤으로 태블로 용으로 개발된 크롬의 익스텐션으로 나온 제품도 있네요. 다만 다운로드는 40건에 불과하고 평가가 없고, 안써봐서 모르겟음. 물론 대세는 아래의 익스텐션입니다.

4. 태블로 익스텐션

오픈 소스 좀 있습니다. 1) uiNamespace 리프레시 모듈소스 좀 점검하여 수정한 zip 파일 첨부합니다. 

폐쇠망이라면 내부에 웹서버 돌리시고, trex파일의 url맞춰주시면 데스크탑에서 문제 없이 돌아갑니다. configureation을 하러 들어가게 되면 데이터 소스 목록이 나타나고 리프레시할 데이터 소스를 선택하면 됩니다. 완성도도 있고 잘 동작하네요

테스트가 끝나면 서버에도 등록을 하셔야 합니다. ui는 심심합니다. 설치에 큰 어려움은 없습니다. 망분리 상황이라면 외부 참조를 하고 있는 js라이브러리들은 다운받아서 망 안으로 전부 이동시켜야 합니다. 잘 돌아갑니다.  

사용법 매뉴얼은 다음과 같습니다. https://onlinehelp.tableau.com/current/pro/desktop/ko-kr/dashboard_extensions.htm

2) 아래 링크는 다른 익스텐션인데 좀 예전 방식의 javascript api를 사용한 refresh 방법인데 예전 방식이므로 적절치 않은데 디자인 UI 컨셉은 좋습니다.

 https://databoss.starschema.net/auto-refresh-tableau-dashboard-without-embedding/

5. 태블로 익스텐션 개발

내부에 능숙한 개발자가 있다면 태블로 extension api를 사용해서 개발을 하는 것도 방법입니다. 만일 개발을 하게 된다면refresh는 위 4와 같은 UI로가고 config설정창은 uiNamespace 이것을 좀 수정하면 어떨까 생각해보았습니다. 여력이 되면 완성하여 공개하는 것도 고려하고 있습니다만, 좀처럼 짬이 잘 나지는 않는군요.

https://tableau.github.io/extensions-api/

맺으며

지금까지 태블로 서버 화면의 오토리프레시 방안에 대해 살펴보았습니다. 도움이 되셨기 바랍니다.

 609 total views,  1 views today

태블로 서버의 포트 변경

몇 시간전에 태블로 서버를 업그레이드 해주고 나왔는데 예전에 사용하던 포트가 80번 포트가 아니라는 겁니다. 포트를 간단하게 바꿀 수 있겠거니 했는데 쬐금 까다로와 공유합니다.

Tableau server Port change 이 글을 참조했고요 url은 오른쪽을 참조하세요. https://community.tableau.com/thread/315269

방안 1은 서버를 날리고 재설치하라고 합니다. ㅎㅎ 방법은 방법이네요. 이것은 패스

방안 2는 아래 내용을 참고하시고요, 그림 아래의 커맨드를 붙여서 커맨드창에 붙이시면 잘 적용됩니다.

cmd창을 하나 열고 위의 내용 처럼 아래의 커맨드를 쳐넣습니다.

C:\Users\Administrator>tsm topology list-nodes
node1

C:\Users\Administrator>tsm stop
Stopping service…
Job id is ‘8’, timeout is 30 minutes.
Service stopped successfully.

C:\Users\Administrator>tsm topology set-ports –node-name node1 –port-name gateway:primary –port-value 18080
This operation will perform a server restart. Are you sure you wish to continue?
(y/n): y
Starting the reconfigure async job…
Job id is ‘9’, timeout is 40 minutes.
16% – Disabling all services.
33% – Waiting for the services to stop.
50% – Reconfiguring services.
66% – Waiting for services to reconfigure.
83% – Enabling all services.
100% – Waiting for the services to start.
The reconfigure async job succeeded.

C:\Users\Administrator>tsm topology list-ports
Node                       Name                                        Instance  Port
node1                      filestore:primary                           0         8539
node1                      filestore:status                            0         8856
node1                      databasemaintenance:primary                 0         8577
node1                      cacheserver:primary                         0         8334
node1                      cacheserver:primary                         1         8625
node1                      interactive:microservice.relationship_service  0         8268
node1                      interactive:microservice.content_model_service  0         8588
node1                      interactive:primary                         0         8350
node1                      interactive:debug                           0         8107
node1                      interactive:jmx                             0         8711
node1                      interactive:jmx.rmi                         0         8465
node1                      dataserver:microservice.dataServerService   0         8834
node1                      dataserver:primary                          0         8558

node1                      apigateway:debug                            0         8166
node1                      apigateway:jmx                              0         8219
node1                      apigateway:jmx.rmi                          0         8844
node1                      nlp:primary                                 0         8091
node1                      clientfileservice:primary                   0         8559
node1                      clientfileservice:status                    0         8872
node1                      webhooks:microservice.webhooks              0         8077
node1                      webhooks:primary                            0         8445
node1                      webhooks:debug                              0         8001
node1                      webhooks:jmx                                0         8426
node1                      webhooks:jmx.rmi                            0         8579
node1                      licenseservice:vendor_daemon                0         8548
node1                      clustercontroller:status                    0         8725
node1                      clustercontroller:storage                   0         8053
node1                      gateway:primary                             0         18080
node1                      tabadminagent:filetransfer                  0         8928
node1                      tabadminagent:columbo                       0         8628
node1                      tdsservice:microservice.tds_service         0         8901
node1                      tdsservice:primary                          0         8249
node1                      tdsservice:debug                            0         8723
node1                      tdsservice:jmx                              0         8123
node1                      tdsservice:jmx.rmi                          0         8664

다행히도 이상 없이 잘 진행됩니다. 업그레이드를 할 때는 여러가지를 잘 기록해두고 이상없는지 반드시 체크해야하겠습니다.

아 한가지가 빠졌네요

tsm start 잊지 마세요.

 800 total views,  1 views today