Tableau에서 만드는 모든 데이터 원본에 데이터 모델이 있습니다. 데이터 모델을 Tableau에 연결된 데이터베이스 테이블의 데이터를 쿼리하는 방법을 알려주는 다이어그램으로 생각할 수 있습니다.

데이터 원본 페이지에서 캔버스에 추가한 테이블은 데이터 모델의 구조를 만듭니다. 데이터 모델은 단일 테이블과 같이 단순한 것부터 관계, 조인 및 유니온의 서로 다른 조합을 사용하는 여러 테이블을 포함하는 복잡한 것까지 다양합니다.

데이터 모델에는 두 가지 계층이 있습니다.

  • 데이터 원본 페이지 캔버스에서 처음 보이는 기본 뷰는 데이터 원본의 논리적 계층입니다. 논리적 계층에서 관계(또는 이음줄)를 사용하여 데이터를 결합합니다. 이 계층을 데이터 원본 페이지의 관계 캔버스로 간주할 수 있습니다. 자세한 내용은 다중 테이블 데이터 분석을 위한 관계 사용을 참조하십시오.
  • 다음 계층은 물리적 계층입니다. 물리적 계층에서 조인(링크가 새 창에서 열림) 및 유니온을 사용하여 테이블 간의 데이터를 결합합니다. 이 계층에서 각 논리적 테이블은 하나 이상의 물리적 테이블을 포함합니다. 물리적 계층을 데이터 원본 페이지의 조인/유니온 캔버스로 간주할 수 있습니다. 논리적 테이블을 두 번 클릭하여 조인 및 유니온을 보거나 추가합니다.

논리적 계층   물리적 계층
이음줄 = 관계   벤 다이어그램 = 조인
 
관련 테이블 여러 개가 있는 데이터 원본의 최상위 뷰. 이것은 논리적 계층입니다. 논리적 테이블은 관계(이음줄)를 사용하여 결합할 수 있습니다. 또한 조인 유형을 사용하지 않으며 물리적 테이블을 위한 컨테이너처럼 작동합니다.   논리적 테이블을 두 번 클릭하여 열고 해당 물리적 테이블을 표시합니다. 물리적 테이블은 조인 또는 유니온을 사용하여 결합할 수 있습니다. 이 예제에서 Book 논리적 테이블은 조인된 물리적 테이블 세 개(Book, Award, Info)로 구성됩니다.

 

논리적 계층   물리적 계층
데이터 원본 페이지의 관계 캔버스   데이터 원본 페이지의 조인/유니온 캔버스
여기에 끌어 놓은 테이블을 논리적 테이블이라고 합니다.   여기에 끌어 놓은 테이블을 물리적 테이블이라고 합니다.
논리적 테이블은 다른 논리적 테이블과 연관될 수 있습니다.   물리적 테이블은 다른 물리적 테이블에 조인하거나 유니온할 수 있습니다.
논리적 테이블은 물리적 테이블을 위한 컨테이너와 같습니다.   논리적 테이블을 두 번 클릭하여 해당 물리적 테이블을 표시합니다.
세부 수준은 논리적 테이블의 행 수준입니다.   세부 수준은 병합된 물리적 테이블의 행 수준입니다.
논리적 테이블은 데이터 원본에 병합되지 않고 고유한 상태(정규화된 상태)를 유지합니다.   물리적 테이블은 논리적 테이블을 정의하는 단일 플랫 테이블로 병합됩니다.

데이터 모델의 계층

데이터 원본의 표시되는 최상위 뷰는 데이터 모델의 논리적 계층입니다. 여기서 조인 대신 관계를 사용하여 테이블은 결합하기 때문에 이것을 관계 캔버스로 생각할 수도 있습니다.

여러 테이블의 데이터를 결합하는 경우 논리적 계층의 캔버스로 끌어 놓는 각 테이블은 또 다른 테이블과 관계를 가져야 합니다. 관계를 위해 조인 유형을 지정할 필요는 없습니다. 분석 중에 Tableau가 필드와 워크시트의 분석 컨텍스트를 기반으로 적절한 조인 유형을 자동으로 선택합니다.

데이터 모델의 물리적 계층은 조인 및 유니온을 사용하여 데이터를 결합할 수 있는 위치입니다. 이 캔버스에서 피벗만 사용할 수 있습니다. 이것을 조인/유니온 캔버스로 간주할 수 있습니다. 이전 버전의 Tableau에서 물리적 계층은 데이터 모델의 유일한 계층이었습니다. 각 논리적 테이블은 하나 이상의 물리적 테이블을 포함할 수 있습니다.

중요: 여전히 Tableau에서 조인 및 유니온을 사용하는 단일 테이블 데이터 원본을 만들 수 있습니다. Tableau의 단일 테이블 분석 동작은 변경되지 않았습니다. 업그레이드된 통합 문서는 2020.2 이전과 동일한 방식으로 작동합니다.

데이터 모델 이해

이전 버전의 Tableau에는 데이터 모델에 물리적 계층만 있습니다. Tableau 2020.2 이상에는 데이터 모델에 논리적(의미 체계) 계층과 물리적 계층이 있습니다. 이제 더 많은 옵션이 제공되므로 분석에 맞는 스키마를 사용하여 데이터를 결합할 수 있습니다.

Tableau 2020.2 이상에서 데이터 원본에 논리적 계층이 추가되었습니다. 각 논리적 테이블은 물리적 계층에 물리적 테이블을 포함합니다.

이전 버전의 Tableau에서 데이터 원본의 데이터 모델은 조인 및 유니온을 지정할 수 있는 단일 물리적 계층으로 구성되었습니다. 물리적 계층에 추가된(조인 또는 유니온된) 테이블은 분석을 위한 평활화된(비정규화된) 단일 테이블을 만듭니다.

이전 버전   2020.2 이상
 
Tableau 2020.2 이전 버전에는 데이터 모델에 물리적 계층만 있습니다.   2020.2 이상에는 데이터 모델에 논리적 계층과 물리적 계층이라는 두 계층이 있습니다.

Tableau 2020.2에서 데이터 원본의 데이터 모델은 물리적 계층 위에 새로운 의미론적 계층을 포함합니다. 논리적 계층이라고 하는 이 계층에서 여러 테이블을 추가할 수 있으며 테이블을 서로 연관시킬 수 있습니다. 논리적 계층의 테이블은 데이터 원본에 병합되지 않고 고유한 상태(정규화된 상태)를 유지하며 기본 세부 수준을 유지합니다.

논리적 테이블은 병합된 물리적 테이블을 위한 컨테이너로 작동합니다. 논리적 테이블은 단일 물리적 테이블을 포함하거나, 조인 또는 유니온을 통해 병합된 여러 물리적 테이블을 포함할 수 있습니다.

새 모델 작성

논리적 계층에 하나 이상의 테이블을 추가하는 경우 필수적으로 데이터 원본에 대한 데이터 모델을 작성합니다. 단일 논리적 테이블로 데이터 원본을 구성하거나 여러 테이블을 캔버스로 끌어다 놓아 더 복잡한 모델을 만들 수도 있습니다.

  • 캔버스에 처음 끌어 놓는 테이블이 데이터 원본에서 데이터 모델의 루트 테이블이 됩니다.
  • 루트 테이블을 끌어 놓은 후 추가 테이블을 원하는 순서로 끌어 놓을 수 있습니다. 어떤 테이블이 서로 관련되어야 하는지와 각 관계에 대해 정의할 일치하는 필드 쌍을 고려해야 합니다.
  • 스타 스키마를 만드는 경우 팩트 테이블을 먼저 끌어 놓은 다음 차원 테이블을 팩트 테이블에 연관시키는 것이 좋습니다.
  • 캔버스에서 테이블을 삭제하면 테이블의 관련 하위 항목도 자동으로 삭제됩니다. 루트 테이블을 삭제하면 모델의 다른 모든 테이블도 제거됩니다.
  • 각 관계는 하나 이상의 일치하는 필드 쌍으로 구성되어야 합니다. 복합 관계를 만들려면 여러 필드 쌍을 추가합니다. 일치하는 쌍은 동일한 데이터 유형을 가져야 합니다. 데이터 원본 페이지에서 데이터 유형을 변경해도 이 요구 사항은 영향을 받지 않습니다. Tableau는 쿼리에 계속 기초 데이터베이스의 데이터 유형을 사용합니다.
  • 계산된 필드를 기반으로 관계를 만들 수 없습니다.
  • 관계를 정의할 때 연산자를 사용하여 관계에 사용된 필드를 비교하는 방법을 지정할 수 있습니다.

관계에 대한 자세한 내용은 데이터 연관관계 만들기 및 정의를 참조하십시오.

다중 테이블 모델

  • 다중 테이블 모델을 만들려면 테이블을 데이터 원본 페이지 캔버스의 논리적 계층에 끌어 놓습니다.


데이터 원본 페이지 캔버스의 논리적 계층에 끌어 놓은 테이블은 서로 연관되어야 합니다. 추가 테이블을 논리적 계층 캔버스에 끌어 놓으면 Tableau는 관계를 정의하는 기존 키 제약 조건과 일치하는 필드를 기반으로 관계를 자동으로 만들려고 합니다. 일치하는 필드가 확인되지 않는 경우 사용자가 일치하는 필드를 선택해야 합니다.

제약 조건이 감지되지 않은 경우 다대다 관계가 만들어지고 참조 무결성이 일부 레코드 일치로 설정됩니다. 이러한 기본 설정은 좋은 선택이며 데이터 원본에 최대한 많은 유연성을 제공합니다. 기본 설정은 전체 Outer 조인을 지원하며 분석 중에 조인을 형성하기 전에 테이블 데이터를 집계하여 쿼리를 최적화합니다. 각 테이블의 모든 열 및 행 데이터를 분석에 사용할 수 있게 됩니다.

테이블을 두 번 클릭하여 모든 논리적 테이블 내부에 더 많은 데이터를 추가할 수 있습니다. 이렇게 하면 데이터 원본 페이지 캔버스의 물리적 계층이 열립니다. 조인 또는 유니온을 사용해야 한다면 물리적 계층 캔버스에 조인하거나 유니온할 테이블을 끌어 놓을 수 있습니다. 물리적 테이블은 해당하는 논리적 테이블에 병합됩니다.

관계 만들기 및 정의의 단계에 따라 여러 테이블을 결합합니다.

단일 테이블 모델

  • 단일 테이블 모델을 만들려면 테이블을 데이터 원본 페이지의 논리적 계층 캔버스에 끌어 놓습니다. 그러면 데이터 패널에서 해당 테이블의 필드를 분석에 사용할 수 있습니다.

다른 테이블을 포함하는 단일 테이블 모델

테이블을 두 번 클릭하여 단일 논리적 테이블 내부에 더 많은 데이터를 추가할 수 있습니다. 이렇게 하면 데이터 원본 페이지 캔버스의 물리적 계층이 열립니다. 조인 또는 유니온을 사용해야 한다면 물리적 계층 캔버스에 조인하거나 유니온할 테이블을 끌어 놓을 수 있습니다. 물리적 테이블은 해당하는 논리적 테이블에 병합됩니다.

이 예에서는 데이터 원본의 관계 캔버스(논리적 계층)에서 Book 테이블을 보여 줍니다. Book 논리적 테이블을 두 번 클릭하면 조인/유니온 캔버스(물리적 계층)가 열립니다.

이 예에서는 조인을 사용하여 Award 및 Info 테이블을 Book 테이블과 병합합니다. 이 경우 Book과 Award 사이의 조인은 Award 세부 수준에서 일대다입니다. 따라서 Book 및 Info에 대한 측정값이 중복될 수 있습니다. 중복을 방지하려면 Award 및 Info를 Book 논리적 테이블 내부에서 조인하는 대신 Book과 연관시킬 수 있습니다.

지원되는 데이터 모델 스키마

Tableau 2020.2에 도입된 데이터 모델링 기능은 스타 및 눈송이 데이터 모델을 비롯한 일반적인 다중 테이블 데이터 시나리오를 쉽게 분석할 수 있도록 설계되었습니다. Tableau 데이터 원본에서 다음과 같은 유형의 모델이 지원됩니다.

단일 테이블

차원 및 측정값의 혼합을 포함하는 단일 논리적 테이블에 대한 분석은 Tableau 2020.2 이전 버전처럼 작동합니다. 조인, 유니온, 사용자 지정 SQL 등의 조합을 사용하여 논리적 테이블을 작성할 수 있습니다.

스타 및 눈송이

엔터프라이즈 데이터 웨어하우스에서 데이터는 스타 또는 눈송이 스키마 구조를 갖는 것이 일반적입니다. 이러한 스키마에서 측정값은 중앙 팩트 테이블에 포함되어 있으며 차원은 독립 차원 테이블에 별도로 저장됩니다. 이 데이터 구성은 롤업 및 드릴다운을 비롯한 많은 공통적인 분석 흐름을 지원합니다.

이러한 모델은 Tableau 2020.2부터 사용할 수 있는 데이터 모델링 기능의 관계를 사용하여 직접 표현할 수 있습니다.

먼저 팩트 테이블을 모델에 끌어 놓은 다음 차원 테이블을 팩트 테이블(스타 스키마)이나 다른 차원 테이블(눈송이 형태)과 연관시킵니다.

일반적으로 올바르게 모델링된 스타 또는 눈송이 스키마에서 팩트 테이블과 차원 테이블 간의 관계는 다대일입니다. 이 정보가 데이터 웨어하우스에 인코딩된 경우 Tableau는 이 정보를 사용하여 자동으로 관계의 성능 옵션을 설정합니다. 그렇지 않은 경우 직접 이 정보를 설정할 수 있습니다. 자세한 내용은 성능 옵션을 사용하여 관계 쿼리 최적화를 참조하십시오.

올바르게 모델링된 스타 또는 눈송이 스키마에서 팩트 테이블의 모든 행은 각 차원 테이블에 일치하는 항목이 있습니다. 이것이 참이고 데이터 웨어하우스 무결성 제약 조건에 표현된 경우 Tableau는 이 정보를 사용하여 자동으로 성능 옵션의 참조 무결성 설정을 지정합니다. 일부 팩트 테이블 행이 차원 테이블에 일치하는 행이 없는 경우(“지연 도착 차원” 또는 “조기 도착 팩트”라고도 함), Tableau는 기본적으로 측정값을 계산할 때 모든 행을 유지하지만 차원 머리글을 표시할 때 값이 누락될 수 있습니다. 자세한 내용은 성능 옵션을 사용하여 관계 쿼리 최적화를 참조하십시오.

둘 이상의 테이블에 측정값이 있는 스타 및 눈송이

일부 스타 또는 눈송이 스키마에서 분석의 모든 측정값은 팩트 테이블에 포함되어 있습니다. 그러나 추가적인 관심 측정값이 분석의 차원 테이블과 관련될 수 있는 경우도 많습니다. 차원 테이블이 측정값을 포함하지 않는 경우에도 분석에서 차원 값을 카운트하거나 다른 방식으로 집계하는 것이 일반적입니다. 이러한 사례에서 팩트 테이블과 차원 테이블 간의 구분은 다소 명확하지 않습니다. 데이터 모델을 볼 때 명확하게 만들려면 데이터 원본 캔버스에 가장 세밀한 테이블을 먼저 추가하고 다른 모든 테이블을 해당 첫 번째 테이블과 관련시키는 것이 좋습니다.

이러한 테이블을 단일 논리적 테이블로 조인한 경우 차원 테이블의 측정값이 중복될 수 있으며, 결과적으로 LOD 계산이나 COUNT DISTINCT를 사용하여 값을 중복 제거하지 않는 한 왜곡된 집계가 발생합니다. 하지만 대신 이러한 테이블 간에 관계를 만든 경우 Tableau는 조인을 수행하기 전에 측정값을 집계하여 불필요한 중복 문제를 방지합니다. 이렇게 하면 측정값의 세부 수준을 주의하여 추적할 필요가 없습니다.

다중 팩트 분석

Tableau의 데이터 모델링 기능은 몇 가지 형태의 다중 팩트 분석을 지원합니다. 추가적인 팩트 테이블(측정값 포함)은 단일 차원 테이블과 연관되는 한 이전에 언급한 모델 중 하나에 추가할 수 있습니다. 예를 들어 고객 전방위 분석과 같은 상황에서 둘 이상의 팩트 테이블을 하나로 합쳐 공유 차원을 분석할 수 있습니다. 이러한 팩트 테이블은 차원 테이블이나 각각의 팩트 테이블과 세부 수준이 다를 수 있습니다. 또한 차원 테이블과 다대다 관계를 가질 수 있습니다. 이러한 시나리오에서 Tableau는 집계 전에 값이 중복되지 않게 합니다.

팩트 테이블을 연관시키는 공유 차원 테이블이 없는 경우에도 사용자 지정 SQL을 사용하거나 다른 차원 테이블의 조인 또는 유니온을 사용하여 동적으로 테이블을 작성할 수 있습니다.

두 팩트 테이블을 공통 차원에 대해 서로 직접 연관시킬 수 있습니다. 이 유형의 분석은 팩트 테이블 중 하나가 공통 차원의 상위 집합을 포함하는 경우 가장 잘 작동합니다.

지원되지 않는 모델

  • 여러 팩트 테이블이 여러 공유 차원 테이블과 연관됩니다. 일부 활용 사례에서 여러 팩트 테이블이 여러 공유 차원 테이블과 연관되는 것이 일반적입니다. 예를 들어 두 팩트 테이블 Store Sales 및 Internet Sales가 두 공통 차원 테이블 Date 및 Customer와 연관될 수 있습니다. 일반적으로 이와 같은 시나리오에서는 데이터 모델에 순환 관계를 만들어야 합니다. 순환 관계는 2020.2에서 지원되지 않습니다.

    이 유형의 모델을 물리적 계층에서 일부 테이블을 병합하여 근사화할 수 있습니다. 예를 들어 Store Sales 및 Internet Sales를 단일 테이블로 유니온하고 이 단일 테이블을 Date 및 Customer와 연관시킬 수 있습니다. 또는 Date 및 Customer를 교차 조인하여 단일 차원 테이블을 만들고 이 차원 테이블을 Store Sales 및 Internet Sales와 연관시킬 수 있습니다.

  • 공유 차원에서 3개 이상의 팩트 테이블을 직접 관련시킵니다. 이 모델을 논리적 계층에서 작성하는 것이 가능하지만 단일 테이블의 차원만 사용하는 경우가 아니라면 원하지 않는 결과가 나타날 수 있습니다.

데이터 모델의 관계에 대한 요구 사항

  • 테이블을 연관시킬 때 관계를 정의하는 필드들은 동일한 데이터 유형이어야 합니다. 데이터 원본 페이지에서 데이터 유형을 변경해도 이 요구 사항은 영향을 받지 않습니다. Tableau는 쿼리에 계속 기초 데이터베이스의 데이터 유형을 사용합니다.
  • 지리적 필드를 기반으로 관계를 정의할 수 없습니다.
  • 순환 관계는 데이터 모델에서 지원되지 않습니다.
  • 게시된 데이터 원본 사이에서 관계를 정의할 수 없습니다.

관련 테이블의 이점을 제한하는 요소

  • 잘 구조화된 모델을 고려하여 만들어지지 않았으며 여러 테이블에 측정값과 차원이 혼합되어 있는 테이블 등에서, 테이블의 불필요한 데이터(dirty data)는 다중 테이블 분석을 더 복잡하게 만들 수 있습니다.
  • 데이터 원본 필터를 사용하면 데이터의 조인 선별을 수행하는 Tableau 기능이 제한됩니다. 조인 선별은 Tableau가 불필요한 조인을 제거하여 쿼리를 간소화하는 방법을 나타내는 용어입니다.
  • 테이블의 관계 간에서 일치하지 않는 값이 많습니다.
  • 여러 팩트 테이블을 여러 차원 테이블과 상호 관련시킵니다(공유 또는 준수 차원을 모델링하려고 함).
피드백을 제공해 주셔서 감사합니다!