효율적인 계산 만들기

질문에 응답하는 데 필요한 일부 정보를 데이터가 제공하지 않는 경우 분석을 돕는 계산된 필드를 만들 수 있습니다.

계산된 필드에서 세율과 같은 하드코딩된 상수를 정의하거나, 수익에서 비용을 빼는 것처럼 빼기나 곱하기 같은 간단한 산술 연산을 수행하거나, 더 복잡한 수학적 수식을 사용하거나, 논리적 테스트(IF/THEN, CASE)를 수행하거나, 유형 변환을 수행하거나, R 같은 외부 서비스로 식을 전송하는 등 많은 작업을 수행할 수 있습니다.

Tableau에는 다양한 계산 유형이 있습니다.

기본 및 집계 계산: 이러한 계산 유형은 초기 데이터 원본에 대한 쿼리의 일부로 생성되며 데이터베이스 내에서 계산됩니다. 일반적으로 기본 및 집계 계산은 매우 확장하기 쉬우며 계산 성능을 향상시킬 수 있는 많은 데이터베이스 조정 기법이 있습니다.

테이블 계산: 이러한 계산은 쿼리 결과 집합에서 Tableau에 의해 계산됩니다. 이는 Tableau에서 더 많은 작업을 수행한다는 의미이지만 일반적으로 테이블 계산은 원래 데이터 원본보다 훨씬 적은 수의 레코드 집합에 대해 수행됩니다. 테이블 계산 성능에 문제가 있는 경우(대개 Tableau에서 반환되는 결과 집합이 매우 큰 경우) 일부 계산을 데이터 원본 계층으로 되돌리는 것을 고려해 보십시오. 이렇게 하는 한 가지 방법은 데이터를 집계한 후 집계된 데이터에 대해 계산을 수행하는 것입니다.

세부 수준(LOD) 식: LOD 식은 초기 데이터 원본에 대한 쿼리의 일부로 생성되며 데이터베이스 내에서 계산됩니다. 이러한 식은 중첩된 select 문으로 표현되기 때문에 데이터베이스 성능에 의존적입니다. 테이블 계산 또는 통합이 LOD 식보다 나을 수도, 그 반대일 수도 있습니다.

LOD 식이 성능 저하의 원인이라고 생각하면 식을 테이블 계산이나 데이터 통합으로 바꿔 성능이 향상되는지 확인하십시오. 예를 들어 Tableau 작업 순서의 예제 2를 참조하십시오.

LOD 식은 조인 선별의 영향을 받을 수 있기 때문에 LOD 식 사용 시 쿼리가 느리게 실행되는 경우 조인을 위한 참조 무결성 가정을 살펴보십시오.

자세한 내용은 Tableau 백서 세부 수준(LOD) 표현식의 이해를 참조하십시오.

조건부 계산을 위한 매개 변수 사용

Tableau에서 일반적으로 사용하는 기법은 계산 수행 방식을 결정하는 값을 사용자가 선택할 수 있도록 매개 변수 컨트롤을 표시하는 것입니다. 일반적으로 사용자가 쉽게 이해할 수 있는 옵션을 제공하려면 매개 변수를 문자열 유형으로 만드는 것이 좋습니다. 하지만 문자열 계산보다 수치 계산이 훨씬 빠르기 때문에 매개 변수의 다음으로 표시 기능을 활용하여 텍스트 레이블을 표시하지만 계산 논리에는 기반 정수 값을 사용해야 합니다. 자세한 내용은 매개 변수 만들기를 참조하십시오.

날짜 필드 변환

기본 날짜 형식으로 저장되지 않은 날짜 데이터를 사용하는 경우가 많습니다. 예를 들어 날짜가 문자열이거나 숫자 타임스탬프일 수 있습니다. 이런 경우 데이터가 지원한다면 DATEPARSE 함수를 사용할 수 있습니다. 이 함수는 비레거시 Microsoft Excel 및 텍스트 파일 연결, MySQL, Oracle, PostgreSQL 및 Tableau 데이터 추출 데이터 원본에 사용할 수 있습니다. 그렇지 않은 경우 필드를 “2012-01-01” 같은 날짜 문자열로 구문 분석하십시오. 로캘의 영향을 받지 않는 ISO 문자열을 사용하는 것이 좋습니다. 그런 다음 이 값을 DATE 함수로 전달합니다. 원래 데이터가 숫자 필드인 경우 필드를 먼저 문자열로 변환하고 다시 날짜로 변환하는 것은 매우 비효율적입니다. 데이터를 숫자로 유지하고 DATEADD 및 날짜 리터럴 값을 사용하여 계산을 수행하는 것이 훨씬 빠릅니다. 대규모 데이터 집합인 경우 성능 이점이 상당할 수 있습니다. 이러한 함수에 대한 자세한 내용은 날짜 함수를 참조하십시오.

CASE 논리 문 사용

복잡한 논리 문으로 작업할 때는 CASE 문이 IF 또는 ELSEIF 문보다 빠를 수 있습니다.

ELSEIF는 ELSE IF보다 빠르다는 것을 기억하십시오. IF가 중첩되는 경우 두 번째 IF 문을 첫 번째 문의 일부분으로 고려하지 않고 계산하기 때문입니다.

자세한 내용은 효율적인 통합 문서 설계 백서를 참조하십시오.

측정값 집계

사용자가 만든 뷰의 속도가 느린 경우 집계된 측정값으로 작업 중인지 확인합니다. 집계 해제된 데이터에서 많은 데이터 행을 한 번에 보려고 할 수 있습니다. 데이터를 집계하여 행 수를 줄일 수 있습니다. 이렇게 하려면 분석 > 측정값 집계를 선택합니다.

계산 팁

사소하지만 계산 성능을 향상시킬 수 있는 많은 팁이 있습니다.

  • 값의 고유 카운트는 거의 모든 데이터 원본에서 가장 느린 집계 유형 중 하나입니다. 가능하면 COUNTD 집계를 사용하지 마십시오.

  • 광범위한 영향이 있는 매개 변수(예: 사용자 지정 SQL 문의 매개 변수)를 사용하면 캐시 성능이 저하될 수 있습니다.

  • 복잡한 계산을 기반으로 필터링하면 초기 데이터에서 인덱스가 손실될 수 있습니다.

  • 외부 서비스와 통합하기 위한 RAWSQL 및 SCRIPT_* 같은 스크립트 함수는 특히, 많은 값을 DBMS/R 서버와 주고 받아야 하는 경우 성능을 저하시킬 수 있습니다.

  • 타임스탬프 수준의 세부 수준이 필요한 경우에만 NOW를 사용하십시오. 날짜 수준 계산에는 TODAY를 사용합니다.

  • 모든 기본 계산은 결국 초기 데이터로 전달됩니다. 이는, 레이블 문자열 같은 리터럴 계산도 마찬가지입니다. 열 머리글과 같은 레이블을 만들어야 하지만 데이터가 매우 큰 경우 큰 데이터 원본에 오버헤드가 추가되지 않도록 레코드 하나에 레이블만 유지하는 간단한 텍스트/Excel 파일 데이터 원본을 만드십시오.

피드백을 제공해 주셔서 감사합니다!귀하의 피드백이 제출되었습니다. 감사합니다!