다음을 통해 공유


관계 개요

이 항목에서는 PowerPivot for Excel에서 테이블 간에 정의할 수 있는 관계에 대해 소개합니다. 이 항목은 다음과 같은 섹션으로 구성됩니다.

  • 관계란?

  • 관계를 정의하기 위한 요구 사항

  • 관계 자동 검색 및 유추

이 항목을 읽고 나면 관계란 무엇인지, 관계를 정의하기 위한 요구 사항은 무엇인지 그리고 PowerPivot for Excel에서 자동으로 관계를 검색하는 방법을 이해할 수 있습니다. 또한 데이터베이스 전문가가 관계를 설명하는 데 사용하는 몇 가지 용어도 배울 수 있습니다.

관계란?

관계는 각 테이블에 있는 하나 이상의 열(PowerPivot의 경우 각 테이블에 있는 정확히 하나의 열)에 기반을 둔 두 데이터 테이블 간의 연결입니다. 관계가 어떤 점에서 유용한지 궁금하다면 여러분이 기업에서 고객 주문 데이터를 추적하는 업무를 담당하고 있다고 가정해 보십시오. 관계를 사용하면 다음과 같은 구조를 지닌 단일 테이블에서 모든 데이터를 추적할 수 있습니다.

CustomerID

이름

EMail

DiscountRate

OrderID

OrderDate

Product

Quantity

1

Ashton

chris.ashton@contoso.com

.05

256

2010-01-07

Compact Digital

11

1

Ashton

chris.ashton@contoso.com

.05

255

2010-01-03

SLR Camera

15

2

Jaworski

michal.jaworski@contoso.com

.10

254

2010-01-03

Budget Movie-Maker

27

이 접근 방법도 나쁘지 않지만 이 경우 각 주문에 대해 고객의 전자 메일 주소와 같은 중복 데이터가 다량 저장될 수 있습니다. 저장 비용은 저렴하지만 전자 메일 주소가 변경될 경우 해당 고객에 대한 모든 행을 업데이트해야 합니다. 데이터를 여러 테이블로 분할하고 해당 테이블 간에 관계를 정의하면 이러한 문제를 해결할 수 있습니다. 이것이 바로 SQL Server와 같은 관계형 데이터베이스에서 사용하는 방법입니다. 예를 들어 PowerPivot for Excel로 가져온 데이터베이스에서 다음과 같은 세 개의 관련 테이블을 사용하여 주문 데이터를 나타낼 수 있습니다.

Customers

[CustomerID]

이름

Email

1

Ashton

chris.ashton@contoso.com

2

Jaworski

michal.jaworski@contoso.com

CustomerDiscounts

[CustomerID]

DiscountRate

1

.05

2

.10

Orders

[CustomerID]

OrderID

OrderDate

Product

Quantity

1

256

2010-01-07

Compact Digital

11

1

255

2010-01-03

SLR Camera

15

2

254

2010-01-03

Budget Movie-Maker

27

이러한 테이블을 동일한 데이터베이스에서 가져오는 경우 PowerPivot에서는 [대괄호] 안에 있는 열을 기준으로 테이블 간의 관계를 검색하여 PowerPivot 창에서 이러한 관계를 재현할 수 있습니다. 자세한 내용은 이 항목의 관계 자동 검색 및 유추를 참조하십시오. 테이블을 여러 원본에서 가져오는 경우 두 테이블 간에 관계 만들기에 나와 있는 설명에 따라 수동으로 관계를 만들 수 있습니다.

열 및 키

관계는 동일한 데이터가 포함된 각 테이블의 열에 기반을 둡니다. 예를 들어 Customers 테이블과 Orders 테이블은 모두 고객 ID가 저장된 열을 포함하기 때문에 서로 관련시킬 수 있습니다. 이 항목의 예에서는 열 이름이 같지만 반드시 같아야 할 필요는 없습니다. 한 열은 이름이 CustomerID이고 다른 열은 이름이 CustomerNumber일 수 있습니다. Orders 테이블의 모든 행에 Customers 테이블에 저장되어 있는 ID만 있으면 됩니다.

관계형 데이터베이스에는 일반적으로 특수 속성을 가진 열로 나타나는 여러 가지 유형의 키가 있습니다. 다음 네 가지 유형의 키는 관계를 만들 때 유용한 키입니다.

  • 기본 키: 테이블의 행을 고유하게 식별합니다(예: Customers 테이블의 CustomerID).

  • 대체 키(또는 후보 키): 기본 키가 아닌 고유 열입니다. 예를 들어 Employees 테이블에 직원 ID와 주민 등록 번호가 저장될 수 있으며 둘 모두 고유합니다.

  • 외래 키: 다른 테이블의 고유 열을 참조하는 열입니다(예: Customers 테이블의 CustomerID를 참조하는 Orders 테이블의 CustomerID).

  • 복합 키: 두 개 이상의 열로 구성된 키입니다. PowerPivot for Excel에서는 복합 키가 지원되지 않습니다. 자세한 내용은 이 항목의 "복합 키 및 조회 열"을 참조하십시오.

PowerPivot for Excel에서는 기본 키 또는 대체 키를 관련 조회 열 또는 그냥 조회 열이라고 합니다. 테이블에 기본 키와 대체 키가 모두 있는 경우 둘 중의 하나를 조회 열로 사용할 수 있습니다. 외래 키는 원본 열 또는 열이라고 합니다. 이 예에서는 Orders 테이블의 CustomerID(열)와 Customers 테이블의 CustomerID(조회 열) 간에 관계가 정의됩니다. 관계형 데이터베이스에서 데이터를 가져오는 경우 기본적으로 PowerPivot for Excel에서는 한 테이블에서 외래 키를 선택하고 다른 테이블에서 해당되는 기본 키를 선택합니다. 하지만 고유한 값을 가진 모든 열을 조회 열로 사용할 수 있습니다.

관계 유형

Customers와 Orders 간의 관계는 일 대 다 관계입니다. 모든 고객은 여러 개의 주문을 가질 수 있지만 각 주문은 여러 고객을 가질 수 없습니다. 관계의 유형에는 일 대 일과 다 대 다가 있습니다. 각 고객에 대해 단일 할인율을 정의하는 CustomerDiscounts 테이블은 Customers 테이블과 일 대 일 관계에 있습니다. 다 대 다 관계의 예로는 Products 및 Customers 간의 직접적인 관계를 들 수 있습니다. 이 관계에서 고객은 여러 개의 제품을 구입할 수 있고 한 제품을 여러 명의 고객이 구입할 수도 있습니다. PowerPivot for Excel에서는 사용자 인터페이스에서 다 대 다 관계를 지원하지 않습니다. 자세한 내용은 이 항목의 "다 대 다 관계"를 참조하십시오.

다음 표에서는 세 테이블 간의 관계를 보여 줍니다.

관계

유형

조회 열

Customers-CustomerDiscounts

일 대 일

Customers.CustomerID

CustomerDiscounts.CustomerID

Customers-Orders

일 대 다

Customers.CustomerID

Orders.CustomerID

관계와 성능

관계를 만든 후에 PowerPivot for Excel에서는 일반적으로 새로 만든 관계의 테이블에 있는 열을 사용하는 모든 수식을 다시 계산해야 합니다. 데이터의 양이 많거나 관계가 복잡하면 처리에 시간이 걸릴 수 있습니다. 자세한 내용은 수식 다시 계산을 참조하십시오.

관계를 정의하기 위한 요구 사항

PowerPivot for Excel에서 관계를 만들 때 따라야 할 몇 가지 요구 사항이 있습니다.

테이블 간 단일 관계

관계가 여러 개 있으면 테이블 간의 종속성이 모호해질 수 있습니다. 정확한 계산을 만들려면 한 테이블에서 다음 테이블로 연결되는 단일 경로가 필요합니다. 따라서 각 테이블 쌍 사이에는 하나의 관계만 있을 수 있습니다. 예를 들어 AdventureWorksDW2012 에서 DimDate 테이블에는 DateKey라는 열이 있으며 이 열은 FactInternetSales 테이블에 있는 OrderDate, DueDate 및 ShipDate 열과 관련되어 있습니다. 이러한 테이블을 가져오려는 경우 첫 번째 관계는 성공적으로 만들어지지만 같은 열에 적용되는 연속된 관계에 대해 다음 오류가 나타나게 됩니다.

*관계: table[column 1]-> table[column 2] - 상태: 오류 - 원인: 테이블 <table 1>과 <table 2> 간의 관계를 만들 수 없습니다. 두 테이블 간에는 하나의 직접 또는 간접 관계만 존재합니다.

테이블이 두 개 있고 이 테이블 간에 여러 관계가 있는 경우 조회 열을 포함하는 테이블의 여러 복사본을 가져와서 각 테이블 쌍 간에 하나의 관계를 만들어야 합니다.

각 원본 열에 하나의 관계 사용

원본 열은 여러 관계에 참여할 수 없습니다. 특정 열을 한 관계의 원본 열로 이미 사용했지만 해당 열을 사용하여 다른 테이블의 다른 관련 조회 열에 연결하려는 경우 열의 복사본을 만든 다음 해당 열을 새 관계에 사용할 수 있습니다.

계산 열에 DAX 수식을 사용하면 동일한 값을 가진 열의 복사본을 쉽게 만들 수 있습니다. 자세한 내용은 계산 열를 참조하십시오.

각 테이블의 고유 식별자

각 테이블에는 해당 테이블의 각 행을 고유하게 식별하는 단일 열이 있어야 합니다. 이 열을 대개 기본 키라고 합니다.

고유 조회 열

조회 열의 데이터 값은 고유해야 합니다. 즉, 열에 중복된 값이 있으면 안 됩니다. PowerPivot for Excel에서 null 및 빈 문자열은 공백과 동일하며 이는 고유 데이터 값입니다. 이는 조회 열에 Null 값을 여러 개 포함할 수 없음을 의미합니다.

호환되는 데이터 형식

원본 열과 조회 열의 데이터 형식이 호환되어야 합니다. 데이터 형식에 대한 자세한 내용은 PowerPivot 통합 문서에서 지원되는 데이터 형식을 참조하십시오.

복합 키 및 조회 열

PowerPivot 통합 문서에서는 복합 키를 사용할 수 없습니다. 즉, 테이블의 각 행을 고유하게 식별하는 열이 항상 정확히 하나여야 합니다. 복합 키를 기반으로 하는 기존 관계를 가진 테이블을 가져오는 경우 테이블 가져오기 마법사는 해당 관계를 PowerPivot에서 만들 수 없으므로 이 관계를 무시합니다.

PowerPivot에서 두 테이블 간의 관계를 만들려고 하고 기본 키 및 외래 키를 정의하는 열이 여러 개 있는 경우 먼저 이들 값을 결합하여 단일 키 열을 만든 후 관계를 만들어야 합니다. 이 작업을 데이터를 가져오기 전에 수행하거나 PowerPivot에서 계산 열을 만들어 수행할 수 있습니다.

다 대 다 관계

PowerPivot for Excel에서는 다 대 다 관계를 지원하지 않으므로 PowerPivot에서 접합 테이블을 추가할 수 없습니다. 하지만 DAX 함수를 사용하여 다 대 다 관계를 모델링할 수 있습니다.

자체 조인 및 루프

자체 조인은 PowerPivot 테이블에서 허용되지 않습니다. 자체 조인은 테이블 자체의 재귀적 관계입니다. 자체 조인은 주로 부모-자식 계층을 정의하는 데 사용됩니다. 예를 들어 Employees 테이블을 자체에 조인하여 기업의 관리 체인을 보여 주는 계층을 만들 수 있습니다.

PowerPivot for Excel에서는 통합 문서의 관계 사이에 루프를 만들 수 없습니다. 즉, 다음과 같은 관계 집합은 금지됩니다.

테이블 1, 열 a - 테이블 2, 열 f

테이블 2, 열 f - 테이블 3, 열 n

테이블 3, 열 n - 테이블 1, 열 a

루프를 초래하는 관계를 만들려고 하면 오류가 발생합니다.

관계 자동 검색 및 유추

데이터를 PowerPivot 창으로 가져오면 테이블 가져오기 마법사가 테이블 간의 기존 관계를 자동으로 검색합니다. 또한 피벗 테이블을 만들면 PowerPivot for Excel에서 테이블의 데이터를 분석합니다. 정의되지는 않았지만 가능한 관계를 검색하고 이러한 관계에 포함시키기에 적합한 열을 제안합니다.

검색 알고리즘은 열의 값과 메타데이터에 대한 통계 데이터를 사용하여 관계의 가능성을 유추합니다.

  • 관련된 모든 열에 있는 데이터 형식은 서로 호환되어야 합니다. 자동 검색의 경우 정수 및 텍스트 데이터 형식만 지원됩니다. 데이터 형식에 대한 자세한 내용은 PowerPivot 통합 문서에서 지원되는 데이터 형식을 참조하십시오.

  • 관계를 성공적으로 검색하기 위해서는 조회 열에 있는 고유 키 수가 다 측의 테이블에 있는 값보다 커야 합니다. 즉, 관계에서 다 측의 키 열은 조회 테이블의 키 열에 없는 값을 포함하지 않아야 합니다. 예를 들어 제품과 제품 ID가 나열된 테이블(조회 테이블)이 있고 각 제품에 대한 판매 정보가 나열된 판매 테이블(관계의 다 측)이 있다고 가정해 보십시오. 판매 레코드에 포함된 제품 ID가 Product 테이블에 없는 경우 관계를 자동으로 만들 수 없지만 이를 수동으로 만들 수는 있습니다. PowerPivot for Excel에서 이러한 관계를 검색하도록 하려면 먼저 누락된 제품의 ID로 Product 조회 테이블을 업데이트해야 합니다.

  • 다 측의 키 열 이름이 조회 테이블의 키 열 이름과 비슷한지 확인합니다. 이름이 정확히 같을 필요는 없습니다. 예를 들어 비즈니스 설정에서는 기본적으로 동일한 데이터가 들어 있는 열에 대해 Emp ID, EmployeeID, Employee ID, EMP_ID 등의 다양한 이름을 사용합니다. 알고리즘은 비슷한 이름을 검색하여, 비슷하거나 정확하게 같은 이름을 가진 열에 더 높은 확률을 할당합니다. 따라서 가져오는 데이터의 열 이름을 기존 테이블의 열과 비슷한 이름으로 바꿔서 관계를 만들 수 있는 가능성을 높일 수 있습니다. PowerPivot for Excel에서 가능한 관계를 여러 개 찾은 경우에는 관계를 만들지 않습니다.

이 정보는 일부 관계가 검색되지 않은 이유를 이해하거나 필드 이름 및 데이터 형식과 같은 메타데이터의 변경을 통해 관계 자동 검색의 성능을 향상시키는 방법을 이해하는 데 도움이 됩니다. 자세한 내용은 관계 문제 해결PowerPivot의 백그라운드 자동 관계 검색을 참조하십시오.

명명된 집합에 대한 자동 검색

명명된 집합과 피벗 테이블의 관련 필드 간의 관계는 자동으로 검색되지 않습니다. 이러한 관계를 수동으로 만들 수 있습니다. 자동 관계 검색을 사용하려면 각 명명된 집합을 제거하고 명명된 집합의 개별 필드를 피벗 테이블에 직접 추가합니다.

관계 유추

경우에 따라 테이블 간의 관계가 자동으로 연결됩니다. 예를 들어 아래에서 처음 두 테이블 집합 간에 관계를 만들면 다른 두 테이블 간에 관계가 존재하는 것으로 유추되어 관계가 자동으로 만들어집니다.

Products 및 Category -- 수동으로 생성됨

Category 및 SubCategory -- 수동으로 생성됨

Products 및 SubCategory -- 관계가 유추됨

관계가 자동으로 연결되려면 위와 같이 관계가 한 방향으로 형성되어야 합니다. 예를 들어 처음에 Sales와 Products 간에 관계를 만들고 Sales와 Customers 간에 관계를 만들었다면 관계는 유추되지 않습니다. 이는 Products와 Customers 간의 관계가 다 대 다 관계이기 때문입니다.

참고 항목

개념

두 테이블 간에 관계 만들기

관계 삭제

관계 보기 및 편집

관계 문제 해결