작성일자 : 2023-09-26
Ver 0.1.1
0. Intro
프로젝트를 하면서 Heroku Postgresql을 데이터 원본으로 하여 Tableau 대시보드를 개발한 TWBX파일을 볼 일이 있었다.
통합문서는 Live로 연결되어 있던터라 데이터베이스에 대한 정보가 필요했다. 정보를 맞게 입력했으나 그래도 파일은 열리지 않았고, 점점 더 찾아본 이후 해당 대시보드가 커스텀 커넥터를 이용해 만들어진것을 알게 되었다.
통합문서가 열리지 않았던 이유는 커스텀 커넥터에서 문제가 있었던 것으로 추측되었고, 다른 협력사에서 했던 작업이라 다시 커스텀 커텍터를 받아서 연결을 시도해보니 정상 작동되었다.
그간 Heroku Postgresql을 데이터 원본으로 하여 개발을 해보거나 본적이 없어 솔직히 이슈가 있었을 때 처음부터 해결 방법에 대해서 몰랐는데, 주변의 도움을 받아 연결하는 방법을 알아냈다. 크게 방법은 두가지이며, 1) 기타 데이터 베이스 사용과 2) 커스텀 커넥터 사용이다.
우선 Heroku는 업무를 하며 몇번 들어봤지만, 실체를 접한건 프로젝트를 하면서 처음이었고, 들어만 봤던 것이라 실체에 대한 정리가 필요했다.
1. How to
1. 기타 데이터베이스(JDBC)
Tableau Desktop에서 기본 기능(기타 데이터베이스(JDBC))를 사용해 연결할 수 있는 방법이다. 다음 방법으로 커스텀 커넥터를 소개할텐데, 커스텀 커넥터의 경우 커넥터에 문제가 생길시 DB에 연결할 수 없게되니 개인적으로는 이 방법으로 사용하는것이 좋을 것으로 판단된다.
연결 방법
1. 연결에 필요한 인증서 및 추가 파일들을 로컬 디렉토리에 저장한다.
2. '연결' -> 서버에 연결 중 '자세히...' -> 기타 데이터베이스(JDBC) 선택
3. 1번에서 저장한 파일들의 경로를 토대로 URL 경로를 아래와 같은 형식으로 적는다.
(URL 경로 예시)
jdbc:postgresql://<host>:<port>/<database>?ssl=ture&sslmode=prefer&sslcert=<path.postgresql.crt>&sslkey=<path.postgresql.pk8>&sslrootcert=<path.root.crt>
4. 언어 선택 및 사용자 이름, 비밀번호를 입력하고 로그인
참고 사이트
2. 커스텀 커넥터 사용(.taco)
커스텀 커넥터의 경우 방법이 존재하는 것은 알고 있었지만, 실제로 본적은 없었다. 커스텀 커넥터에 대한 소개는 Tableau Help에서 찾을 수 있다. 간단히 내용을 정리해 보면 아래와 같다.
각 커넥터는 일련의 XML 및 JavaScript 파일로 구성되며, 단일 패키지 .jar 파일로 압축되고 ".taco" 파일 확장자를사용하여 제공됩니다. 이 TACO 파일은 신뢰할 수 있는 공개 인증 기관을 사용하여 개발자가 서명합니다. XML 및JavaScript 파일은 다음을 설명하는 구성 파일입니다.
- 데이터 원본에 대한 연결을 만들기 위해 사용자 입력을 수집하는 데 필요한 UI 요소
- 연결에 필요한 모든 언어 또는 사용자 지정
- ODBC 또는 JDBC 드라이버를 사용하여 연결하는 방법
Tableau 커넥터 SDK를 사용하여 개발된 커넥터는 SQL을 사용하여 인터페이스하는 ODBC 또는 JDBC 드라이버에 연결하는데 적합합니다. 기반 기술은 관계형 데이터베이스에서 잘 작동합니다.
직접 커넥터를 작성하려면 Tableau가 제공하는 Tableau Github를 참고 하여 작성하면 된다고 한다.
XML 및 JavaScript에 대해서 잘 알지는 못하지만, 이에 대해서 공부하고 sdk 파일을 작성하는 방법에 대해서도 이해해보는 시간을 갖으면 좋을 것 같다.
연결 방법
1. 커스텀 커넥터를 작성한다.
2. '.taco' 파일을 커넥터 리포지토리에 저장한다(Tableau 리포지토리 -> 커넥터)
3. C드라이브에 Heroku_Postgresql 폴더를 생성한다.
4. 2번에서 생성한 폴더에 postgresql.crt, postgresql.pk8, root.crt 파일을 저장한다.
5. Tableau Desktop의 데이터 원본에서 커스텀 커넥터를 클릭하여 연결
참고 사이트
- Tableau Connector SDK (Github)