출처 : Tableau Blog
1. 대시보드 성능
Tableau를 일단 시작하면, 간단한 비주얼리제이션에 직관적으로 필드와 수식, 계산을 점점 더 추가하여 결국 렌더링 속도가 점차 느려질 때까지 분석을 심화하게 됩니다. 응답 시간이 2초만 되어도 잠재 고객을 잃는 이 세상에서 성능은 실로 중요합니다.
어떻게 하면 대시보드의 실행 속도를 높일 수 있을까요? 첫 번째 단계는 성능 기록을 실행하고 해석하여 문제 지점을 파악하는 것입니다. 성능 기록기는 Tableau의 가속을 위한 지름길 입장권과도 같습니다. 성능 기록기는 대시보드에서 속도가 느린 워크시트와 쿼리, 오래 걸리는 렌더링 시간을 정확하게 짚어냅니다. 또한 쿼리 텍스트까지도 표시하기 때문에, 데이터베이스 팀과 함께 데이터베이스 수준에서 최적화 작업을 할 수 있습니다.
이제 어떤 뷰나 데이터 연결로 속도가 저하되는지 알았으니, 아래 여섯 가지 팁을 활용하여 대시보드 성능을 높여보시기 바랍니다. 각 팁에는 신속한 해결책뿐만 아니라 성능 저하의 가장 일반적인 원인도 밝혀 놓았습니다.
2. 데이터 전략으로 성능 향상
추출은 대개 라이브 데이터 원본을 사용할 때보다 훨씬 속도가 빠르고 특히 프로토타입 생성에 효과적입니다. 비결은 도메인별로 데이터를 구분하여 사용하는 것입니다. 데이터 엔진은 데이터 웨어하우스를 대체하는 용도가 아닙니다 그보다는 빠른 프로토타입 생성과 데이터 발견을 돕기 위한 것입니다.
추출이 열 형식의 저장소이기 때문에 데이터 집합이 넓을수록 쿼리 속도가 느려집니다.
- 수행 중인 분석에 맞게 필드 수를 최소화하십시오. 사용하지 않는 열은 사용되지 않은 필드 모두 숨기기 옵션을 사용하여 데이터 원본에서 제거하십시오.
- 레코드 수를 최소화하십시오. 추출 필터를 사용하여 필요한 데이터만 둘 수 있습니다.
- 계산을 구현하고 열을 제거하고 가속화된 뷰를 사용하여 추출을 최적화하면 향후 쿼리 속도를 높일 수 있습니다.
유의점: 추출이 늘 장기적인 해결책이 되지는 않습니다. 일반적인 추출 범위는 5억~10억 개의 행이고, 유용성은 상황에 따라 다릅니다. 계속해서 새로 고치는 데이터를 쿼리할 경우는 뷰 운용에 실시간 연결을 사용하는 것이 더 합리적일 때가 있습니다.
3. 뷰에서 마크(데이터 요소) 수 줄이기
데이터가 아주 세부적일 경우 Tableau는 각각의 요소를 렌더링하고 정확한 장소에 놓아야 합니다. 각 마크는 Tableau에서 구문 분석해야 할 배치(일괄 작업)를 뜻합니다. 따라서 마크가 많을수록 처리할 배치도 늘어납니다. 그래프에 점을 1,000개 그리기가 차트에 막대를 3개 그리기보다 더 어렵습니다.
퀵 필터가 많은 큰 크로스탭을 사용하면 Tableau 뷰에서 전체 행과 차원을 보려고 할 때 로드 시간이 늘어날 수 있습니다.
뷰에 마크(데이터 요소)가 과도하게 많으면 시각적 분석의 가치도 떨어집니다. 크고 느린 수동 테이블 스캔은 너무 많은 정보를 가져올 수 있고 데이터를 보고 이해하기가 더 어려워집니다.
이런 함정을 다음과 같이 피할 수 있습니다.
- 안내가 제공되는 분석을 수행하십시오. 계획한 모든 것을 하나의 뷰에 넣어서 표시할 필요는 없습니다. 관련 뷰를 컴파일하고 동작 필터로 연결하여 개요에서 세부 뷰로 신속하게 오갈 수 있습니다.
- 세부 수준 선반에서 불필요한 차원을 제거하십시오.
- 탐색하여 다양한 유형의 뷰에 데이터를 표시해 보십시오.
4. 개수와 유형별로 필터 제한
Tableau의 필터링은 매우 강력하면서도 다양하게 표현할 수 있는 도구입니다. 하지만 필터를 비효율적으로 사용하거나 과도하게 사용하는 경우 통합 문서와 대시보드의 성능이 저하될 수 있습니다. 참고: 필터 대화 상자를 표시하려면 Tableau가 필터 멤버를 로드해야 하고 특히 필터링된 차원이 뷰에 없는 경우에는 추가 쿼리를 생성해야 합니다.
- 사용 중인 필터 수를 줄이십시오. 뷰에 필터가 너무 많으면 쿼리가 더 복잡해지고 이로 인해 결과 반환에 시간이 더 오래 걸립니다. 필터를 다시 한번 확인하여 필요 없는 필터는 모두 제거하십시오.
- 포함 필터를 사용하십시오. 제외 필터는 차원의 전체 도메인을 로드하는 반면, 포함 필터는 그렇지 않습니다. 특히 많은 멤버가 있는 차원에 대해, 포함 필터가 제외 필터보다 훨씬 더 빠르게 실행됩니다.
- 연속형 날짜 필터를 사용하십시오. 연속형 날짜 필터(기준 날짜 범위 필터)는 데이터베이스의 인덱싱 속성을 활용할 수 있기 때문에 불연속형 날짜 필터보다 속도가 빠릅니다.
- 부울 또는 숫자 필터를 사용하십시오. 컴퓨터는 문자열보다 정수와 부울(t/f)을 훨씬 더 빨리 처리합니다.
- 매개 변수와 동작 필터를 사용하십시오. 그러면 쿼리 로드가 줄어들고 데이터 원본 전체를 대상으로 작업할 수 있습니다.
5. 계산 최적화 및 구체화
- 데이터베이스에서 계산을 수행하십시오. 가능하다면 언제든지, 특히 운영 뷰를 사용할 경우 Tableau의 오버헤드가 줄도록 데이터베이스에서 계산을 수행하십시오. Tableau의 계산된 필드에는 집계 계산이 효과적입니다. 가능하다면 데이터베이스에서 행 수준 계산을 수행하십시오.
- 중첩된 계산 수를 줄이십시오. 러시아 중첩 인형에서 보듯이, 계산을 꺼내고 쌓는 일은 하나의 계층이 추가될수록 더 많은 시간이 걸립니다.
- 뷰에서 LOD 또는 테이블 계산의 세부 수준을 줄이십시오. 계산이 세부적일수록 시간이 오래 걸립니다.
- LOD - 계산에 사용되는 고유한 차원 멤버의 수를 살펴보십시오.
- 테이블 계산 - 뷰에 마크가 많을수록 계산 시간이 더 오래 걸립니다.
- 가능하면 AVG 대신에 MIN 또는 MAX를 사용하십시오. AVG에는 MIN 또는 MAX보다 더 많은 처리 작업이 필요합니다. 종종 행이 중복되어 MIN, MAX 또는 AVG에 같은 결과가 표시됩니다.
- 계산으로 그룹을 만드십시오. 포함 필터처럼 계산된 그룹은 도메인의 지정된 멤버만 로드하는 반면, Tableau의 그룹 기능은 전체 도메인을 로드합니다.
- 문자열 계산보다는 부울 또는 숫자형 계산을 사용하십시오. 컴퓨터에서는 문자열보다 정수와 부울(t/f)을 훨씬 더 빨리 처리할 수 있습니다. 부울>정수>실수>날짜>날짜/시간>문자열 순입니다.
6. Tableau의 쿼리 최적화 사용
- 낮은 세부 수준의 차원에서 혼합하십시오. 혼합할 멤버가 많을수록 시간이 오래 걸립니다. 혼합은 데이터를 관계 수준으로 집계합니다. 혼합은 행 수준 조인을 대체하는 용도가 아닙니다.
- 조인되는 테이블을 최소화하십시오. 조인 수가 많으면 시간이 오래 걸립니다. 많은 수의 조인된 테이블로 데이터 연결을 만들 때는 데이터베이스에서 뷰를 구현하는 것이 더 빠를 수 있습니다.
- 데이터베이스가 여러 조인으로 구성되었다면 참조 무결성을 가정하십시오.
- 사용자 지정 SQL을 제거하십시오. 데이터 연결에 사용자 지정 SQL이 사용되지 않은 경우 Tableau에서 데이터베이스 최적화를 활용할 수 있습니다.
7.통합 문서 정리
- 대시보드 범위를 줄이십시오. 하나의 대시보드에 과도하게 많은 워크시트를 사용하면 성능이 떨어질 수 있습니다.
- 사용하지 않는 워크시트와 데이터 원본은 삭제하거나 통합하십시오. 깔끔한 통합 문서가 좋은 통합 문서입니다.