관계의 계산에 대한 두려움 극복

계산이 어려울 수 있습니다. 관계를 사용하는 데이터 원본의 계산은 더 두려워 보일 수 있습니다. 하지만 관계의 계산을 두려워해야 할 이유가 없습니다.

참고: 관계를 사용하는 데이터 원본의 기반이 되는 원리에 아직 익숙하지 않은 경우 이 항목을 살펴보기 전에 관계에 대한 두려움 극복을 읽어 보는 것이 좋습니다.

계산 유형

행 수준 계산은 데이터의 각 레코드에 대해 계산되는 것입니다. 예를 들어 각 판매 거래에는 할인 비율에 의해 조정될 수 있는 판매 금액인 가격이 있습니다. 이 계산을 Price * (1- ZN([Discount]))로 표현할 수 있습니다. 이 계산은 각 거래에 대해 행별로 계산됩니다. 결과는 데이터 원본에 Sales Amount(판매 금액)에 대한 새 열을 추가하는 것으로 생각할 수 있습니다.

집계 계산도 있습니다. 집계 계산은 비주얼리제이션의 세부 수준에서 계산되며 해당 값은 뷰의 구조에 따라 달라집니다. Count는 집계 계산의 예입니다. Count([Title])의 값은 개수를 판형, 저자 또는 판매 일 중 무엇을 기준으로 보는지에 따라 달라집니다.

계산 유형에 대한 자세한 내용은 블로그(링크가 새 창에서 열림)를 참조하십시오.

테이블 세부 수준

Tableau 데이터 원본에서 각 테이블은 고유한 세부 수준을 가질 수 있으므로 계산이 연결된 테이블이 큰 영향을 받습니다. 예를 들어, 전통적으로 Tableau(2020.2 이전, 관계 이전)에서는 상수 값 1로 계산을 만들고 합계를 구하는 방식으로 데이터 원본의 레코드 수를 계산할 수 있었습니다. 데이터 원본의 각 행에 1이 할당되었으므로 합계가 행 수와 동일했습니다.

그러나 이제 이 계산의 값은 1이 됩니다. 전체 데이터 원본에 대한 글로벌 세부 수준이 없으며 상수 계산은 데이터 패널 하단의 할당되지 않은 영역에 존재합니다. 이 영역에도 고유한 세부 수준이 있습니다. 1의 합계를 구해도 1입니다.

앞서 설명한 것처럼 테이블과 동일한 세부 수준을 갖는 계산(일반적으로 해당 테이블의 필드를 포함하는 계산)은 데이터 패널에서 해당 테이블에 속합니다. 예를 들어, 각 저자의 전체 이름을 가져오기 위한 First Name(이름)과 Last Name(성)의 연결(즉, [First Name] + " " + [Last Name])은 Author 테이블에 배치됩니다.

그러나 한 계산에서 여러 테이블의 필드를 사용하면 계산은 데이터 패널 하단의 할당되지 않은 영역으로 이동합니다. 이를 교차 테이블 행 수준 계산이라고 합니다. 이 계산에는 성능에 영향을 줄 수 있는 관련 테이블의 행 수준 조인이 필요합니다. (관계의 성능 옵션에 올바른 카디널리티가 설정되어 있는지 확인하십시오.)

세부 수준 할당

테이블의 세부 수준은 계산 결과가 나타내는 대상을 제어하므로 적절한 테이블에 계산을 포함하는 것이 중요합니다. FIXED 세부 수준 식을 사용하면 계산을 특정 테이블로 가져올 수 있습니다. 식이 고정된 필드(차원 선언(링크가 새 창에서 열림))는 결과의 세부 수준을 결정합니다.

예: 저자 북투어

Q: 각 저자는 몇 개의 북투어 행사에 참여하고 있습니까?

A: 이 수치는 각 저자에게 "속해야" 하므로 Author 테이블에 있어야 합니다.

  • Author Book Tour Events = {FIXED [Author Name] : SUM([Book Tour Events])}
  • (일반적인 언어로 "각 저자에 대해 관련된 총 북투어 행사의 수"라고 생각할 수 있습니다.)

Q: 북투어를 하지 않는 저자는 몇 명입니까?

A: 다음과 같은 계산을 시도하고 싶을 것입니다.

  • COUNTD(IF ISNULL([Book Tour Events]) THEN ([Author Name]) END).
  • (일반적인 언어로 "북투어 행사가 비어 있는 저자의 이름을 반환하고, 고유한 저자 이름의 수를 계산합니다."라고 생각할 수 있습니다.)

그러나 Book Tour Events(북투어 행사)는 Series 테이블에서 가져오고 Author Name(저자 이름)은 Author 테이블에서 가져오기 때문에 이것은 교차 테이블 행 수준 계산입니다. 이와 같은 교차 테이블 계산은 Inner 조인을 사용합니다. 즉, 두 테이블에 해당하는 값이 없으면 조인 결과에서 행이 삭제됩니다. 따라서 존재하지 않는 항목을 계산하도록 Tableau에 요청하는 것입니다. 그러나 두 필드가 동일한 테이블에 있으면 계산을 수행하는 좋은 방법이 될 수 있습니다. 계산에는 데이터 원본의 구조와 잘 맞지 않는다는 사실 외에는 문제가 없습니다.

대신 각 저자에 대한 북투어 행사의 유무를 표시하고 해당 결과를 Author 테이블에 유지해야 합니다. 각 저자가 "북투어에 참여 중"인지 여부가 플래그로 표시되면 북투어에 참여하지 않는 저자의 수를 계산할 수 있습니다.

  • Book tour participant? = IF {FIXED [Author Name]: COUNT([Book Tour Events])} = 0 THEN "No" ELSE "Yes" END
  • (이것을 일반적인 언어로 표현하면 "각 저자에 대해 북투어 행사의 수를 센다. 그 수가 0이면 저자에 대해 'No'라고 표시하고 그렇지 않으면 'Yes'라고 표시한다."입니다. 필드 이름을 "Book tour participant?(북투어 참여자?)"로 지정하면 'No'와 'Yes'가 적합하게 됩니다.

이제 No의 수를 세면 원래 질문에 답할 수 있습니다.

계산이 Authors without book tours = IF [Book tour participant?]= "No" THEN ([Author Name]) END이면 북투어를 하지 않는 저자 목록을 얻을 수 있습니다. (이 계산은 "Book tour participant?가 no인 모든 저자에 대해 저자 이름을 나열"이라고 생각할 수 있습니다.)

계산이 COUNTD(IF [Book tour participant?]= "No" THEN ([Author Name]) END)인 경우 데이터 패널 하단의 할당되지 않은 영역에 표시되는 숫자로 답을 받게 됩니다. 이유는 무엇일까요? 이 계산은 집계이기 때문입니다.

보너스 질문:

Book tour participant? 계산의 구조를 직접 사용하여 저자 이름 목록을 반환하는 것도 가능합니다. IF {FIXED [Author Name]: COUNT([Book Tour Events])} = 0 THEN ([Author Name]) END . 이 계산은 데이터 패널의 어디에 나타납니까? 이유는 무엇일까요? 자신의 Tableau Desktop 사본에서 시도해 보거나 이 통합 문서를 다운로드하여 확인하십시오. (Tableau Desktop 2020.2 이상이 필요합니다. 통합 문서의 데이터 패널에서 계산을 클릭하고 편집을 선택하여 계산 에디터를 연 다음 계산 댓글의 설명을 확인합니다.)

관련 리소스

압도 당해서 이전으로 돌아가고 싶으십니까? 관계에 대한 두려움 극복을 읽어보십시오.

관계를 사용하여 복잡한 분석을 수행하는 방법을 계속 탐색할 준비가 되셨습니까? 심층적인 관계에 대한 두려움 극복을 확인해 보십시오.

제품 관리 팀에서 직접 제공하는 관계의 기술적 토대에 대한 자세한 내용을 보려면 Tableau 블로그에서 관계에 대한 시리즈를 참조하십시오.

Action Analytics(링크가 새 창에서 열림)에서 Tableau가 관계를 발명한 이유는 무엇입니까?(영문)(링크가 새 창에서 열림)와 같은 동영상 팟캐스트도 참조하십시오. Library(라이브러리)(링크가 새 창에서 열림)에서 “Video Podcast(동영상 팟캐스트)”를 클릭하여 자세히 알아볼 수 있습니다.

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