Power BI Desktop에서 관계 만들기 및 관리Create and manage relationships in Power BI Desktop

여러 테이블을 가져올 때 이러한 모든 테이블의 데이터를 사용하여 분석을 수행하려는 경우가 있습니다.When you import multiple tables, chances are you’re going to do some analysis using data from all those tables. 결과를 정확하게 계산하고 보고서에 올바른 정보를 표시하려면 테이블 간의 관계가 필요합니다.Relationships between those tables are necessary in order to accurately calculate results and display the correct information in your reports. Power BI Desktop에서는 이러한 관계를 쉽게 만들 수 있습니다.Power BI Desktop makes creating those relationships easy. 실제로 아무 작업도 수행할 필요가 없는 경우가 대부분입니다. 자동 검색 기능이 자동으로 작업을 수행할 수 있습니다.In-fact, in most cases you won’t have to do anything, the Autodetect feature can do it for you. 그러나 경우에 따라 직접 관계를 만들어야 하거나 관계를 일부 변경해야 할 수 있습니다.However, in some cases you might have to create relationships yourself, or you might need to make some changes to a relationship. 어떤 경우든지 Power BI Desktop에서의 관계 및 관계를 만들고 편집하는 방법을 이해하는 것이 중요합니다. Either way, it’s important to understand relationships in Power BI Desktop and how to create and edit them.

로드하는 동안 자동 검색 Autodetect during load

둘 이상의 테이블을 동시에 쿼리하는 경우 데이터가 로드될 때 Power BI Desktop에서 자동으로 관계를 찾고 만들려고 합니다.If you query two or more tables at the same time, when the data is loaded, Power BI Desktop will attempt to find and create relationships for you. 카디널리티, 교차 필터 방향 및 활성 속성이 자동으로 설정됩니다.Cardinality, Cross filter direction, and Active properties are automatically set. Power BI Desktop은 쿼리하는 테이블의 열 이름을 보고 잠재적 관계가 있는지 여부를 확인합니다.Power BI Desktop looks at column names in the tables you are querying to determine if there are any potential relationships. 관계가 있는 경우 자동으로 생성됩니다.If there are, those relationships are created automatically. Power BI Desktop이 높은 수준의 신뢰도로 일치 항목이 있음을 확인할 수 없는 경우에는 자동으로 관계를 만들지 않습니다.If Power BI Desktop cannot determine with a high-level of confidence there is a match, it will not automatically create the relationship. 이 경우 관계 관리 대화 상자를 사용하여 관계를 만들거나 편집할 수 있습니다.You can still use the Manage Relationships dialog to create or edit relationships.

자동 검색을 사용하여 관계 만들기Create a relationship by using Autodetect

탭에서 관계 관리> 자동 검색을 클릭합니다.On the Home tab, click Manage Relationships > AutoDetect.

수동으로 관계 만들기Create a relationship manually

  1. 탭에서 관계 관리 > 새로 만들기를 클릭합니다.On the Home tab, click Manage Relationships > New.
  2. 관계 만들기 대화 상자의 첫 번째 테이블 드롭다운 목록에서 테이블을 선택한 다음 관계에 사용할 열을 선택합니다.In the Create Relationship dialog, in the first table drop-down list, select a table, and then select the column you want to use in the relationship.
  3. 두 번째 테이블 드롭다운 목록에서 관계에 사용할 다른 테이블을 선택하고 사용할 다른 열을 선택한 다음 확인을 클릭합니다.In the to second table drop-down list, select the other table you want in the relationship, then select the other column you want to use, and then click OK.

기본적으로 Power BI Desktop이 새 관계에 대한 카디널리티(방향), 교차 필터 방향 및 활성 속성을 자동으로 구성하지만 필요한 경우 고급 옵션에서 변경할 수 있습니다.By default, Power BI Desktop will automatically configure the Cardinality (direction), Cross filter direction, and Active properties for your new relationship; however, you can change these if necessary in Advanced options. 자세한 내용은 이 문서의 뒷부분에 있는 고급 옵션 이해 섹션을 참조하세요.To learn more, see the Understanding advanced options section later in this article.

관계 편집Edit a relationship

  1. 탭에서 관계 관리를 클릭합니다.On the Home tab, click Manage Relationships.
  2. 관계 관리 대화 상자에서 관계를 선택하고 편집을 클릭합니다.In the Manage Relationships dialog, select the relationship, then click Edit.

고급 옵션 구성 Configure advanced options

관계를 만들거나 편집할 때 고급 옵션을 구성할 수 있습니다.When you create or edit a relationship, you can configure advanced options. 기본적으로 최상의 추측에 따라 고급 옵션이 자동으로 구성됩니다.By default, advanced options are automatically configured based on a best guess. 열의 데이터에 따라 각 관계마다 다를 수 있습니다.This can be different for each relationship based on the data in the columns.

카디널리티Cardinality

다대일(*:1) - 가장 일반적인 기본 형식입니다.Many to One (*:1) - This is the most common, default type. 이는 한 테이블의 열은 둘 이상의 값 인스턴스를 가질 수 있고, 다른 관련 테이블(조회 테이블이라고도 함)은 하나의 값 인스턴스만 가질 수 있음을 의미합니다.This means the column in one table can have more than one instance of a value, and the other related table, often know as the Lookup table, has only one instance of a value.

일대일(1:1) - 이는 한 테이블의 열과 다른 관련 테이블이 하나의 특정 값 인스턴스만 가질 수 있음을 의미합니다.One to One (1:1) - This means the column in one table has only one instance of a particular value, and the other related table has only one instance of a particular value.

카디널리티를 변경하는 경우에 대한 자세한 내용은 이 문서의 뒷부분에 있는 고급 옵션 이해 섹션을 참조하세요.See the Understanding advanced options section later in this article for more details about when to change cardinality.

교차 필터 방향Cross filter direction

양쪽 - 가장 일반적인 기본 방향입니다.Both - This is the most common, default direction. 이는 필터링 용도로 두 테이블이 모두 단일 테이블인 것처럼 처리됨을 의미합니다.This means for filtering purposes, both tables are treated as if they're a single table. 이 작업은 주위에 조회 테이블이 많은 단일 테이블에서 잘 작동합니다.This works well with a single table that has a number of lookup tables that surround it. 부서에 대한 조회 테이블이 있는 판매 실적 테이블을 예로 들 수 있습니다.An example is a Sales actuals table with a lookup table for department. 이를 종종 별 모양 스키마 구성(여러 조회 테이블이 있는 중앙 테이블)이라고 합니다. 그러나 조회 테이블이 있는(일부 공통) 테이블이 여럿인 경우 양쪽 설정을 사용하지 않는 게 나을 것입니다.This is often called a Star schema configuration (a central table with several Lookup tables.) However, if you have two or more tables that also have lookup tables (with some in common) then you wouldn't want to use the Both setting. 앞의 예에서 각 부서에 대한 목표 예산을 기록하는 판매 예산 테이블도 있다고 가정해 보겠습니다.To continue the previous example, in this case, you also have a budget sales table that records target budget for each department. 또한 부서 테이블은 판매와 예산에 모두 연결되어 있습니다.And, the department table is connected to both the sales and the budget table. 이러한 유형의 구성에서는 양쪽 설정을 사용하지 않습니다.Avoid the Both setting for this kind of configuration.

단일 – 이는 값이 집계되는 테이블에 연결된 테이블의 필터링 선택 항목이 적용됨을 의미합니다.Single - This means that filtering choices in connected tables work on the table where values are being aggregated. Excel 2013 이전 버전의 데이터 모델에서 파워 피벗을 가져오는 경우 모든 관계가 단일 방향을 갖습니다.If you import a Power Pivot in Excel 2013 or earlier data model, all relationships will have a single direction.

교차 필터 방향을 변경하는 경우에 대한 자세한 내용은 이 문서의 뒷부분에 있는 고급 옵션 이해 섹션을 참조하세요.See the Understanding advanced options section later in this article for more details about when to change cross filter direction.

이 관계를 활성으로 만들기Make this relationship active

이 옵션을 선택하면 관계가 활성 기본 관계로 사용됩니다.When checked, this means the relationship serves as the active, default relationship. 두 테이블 간에 두 개 이상의 관계가 있는 경우 활성 관계를 통해 Power BI Desktop이 두 테이블을 포함하는 시각화 요소를 자동으로 만들 수 있습니다.In cases where there are more than one relationship between two tables, the active relationship provides a way for Power BI Desktop to automatically create visualizations that include both tables.

특정 관계를 활성으로 만드는 경우에 대한 자세한 내용은 이 문서의 뒷부분에 있는 고급 옵션 이해 섹션을 참조하세요.See the Understanding advanced options section later in this article for more details about when to make a particular relationship active.

관계 이해Understanding relationships

관계를 사용하여 두 테이블을 연결한 후에는 관계 세부 정보에 대해 걱정하거나 가져오기 전에 단일 테이블로 평면화할 필요 없이 단일 테이블인 것처럼 두 테이블의 데이터로 작업할 수 있습니다.Once you have connected two tables together with a relationship, you can work with the data in both tables as if they were a single table, freeing you from having to worry about relationship details, or flattening those tables into a single table before importing them. 대부분의 상황에서 Power BI Desktop은 자동으로 관계를 만들 수 있으므로 사용자가 직접 관계를 만드는 작업은 필요하지 않습니다.In many situations, Power BI Desktop can automatically create relationships for you, so creating those relationships yourself might not even be needed. 그러나 Power BI Desktop은 두 테이블 간의 관계가 존재해야 하는 상황에서 불확실성이 높아 관계를 결정하지 못할 경우 자동으로 관계를 만듭니다.However, if Power BI Desktop can’t determine with a high-degree of certainty that a relationship between two tables should exist, it will not automatically create the relationship . 이 경우 관계를 직접 만들어야 합니다.In that case, you will need to create the relationship.

Power BI Desktop에서 관계가 작동하는 방식을 이해하는 데 도움이 되도록 간단한 자습서로 연습해 보겠습니다.Let’s do a little tutorial, to better show you how relationships work in Power BI Desktop.

이 단원은 직접 완료할 수 있습니다.You can complete this lesson yourself. 아래 ProjectHours 표를 Excel 워크시트로 복사하고 셀을 모두 선택한 다음 삽입 > 를 클릭합니다.Copy the ProjectHours table below into an Excel worksheet, select all of the cells, click INSERT > Table. 테이블 만들기 대화 상자에서 확인을 클릭합니다.In the Create Table dialog, just click OK. 그런 다음 테이블 이름ProjectHours를 입력합니다.Then in Table Name, type ProjectHours. CompanyProject 테이블에 대해 동일한 작업을 수행합니다.Do the same for the CompanyProject table. 그런 다음 Power BI Desktop에서 데이터 가져오기를 사용하여 데이터를 가져올 수 있습니다.You can then import the data by using Get Data in Power BI Desktop. 통합 문서와 테이블을 데이터 소스로 선택합니다.Select your workbook and tables as a data source.

첫 번째 테이블인 ProjectHours는 개인이 특정 프로젝트에서 작업한 시간 수를 기록하는 작업 티켓 레코드입니다.This first table, ProjectHours, is a record of work tickets that record the number of hours a person has worked on a particular project.

ProjectHoursProjectHours

TicketTicket SubmittedBySubmittedBy HoursHours ProjectProject DateSubmitDateSubmit
10011001 Brewer, AlanBrewer, Alan 2222 BlueBlue 1/1/20131/1/2013
10021002 Brewer, AlanBrewer, Alan 2626 RedRed 2/1/20132/1/2013
10031003 Ito, ShuIto, Shu 3434 YellowYellow 12/4/201212/4/2012
10041004 Brewer, AlanBrewer, Alan 1313 OrangeOrange 1/2/20121/2/2012
10051005 Bowen, EliBowen, Eli 2929 PurplePurple 10/1/201310/1/2013
10061006 Bento, NunoBento, Nuno 3535 GreenGreen 2/1/20132/1/2013
10071007 Hamilton, DavidHamilton, David 1010 YellowYellow 10/1/201310/1/2013
10081008 Han, MuHan, Mu 2828 OrangeOrange 1/2/20121/2/2012
10091009 Ito, ShuIto, Shu 2222 PurplePurple 2/1/20132/1/2013
10101010 Bowen, EliBowen, Eli 2828 GreenGreen 10/1/201310/1/2013
10111011 Bowen, EliBowen, Eli 99 BlueBlue 10/15/201310/15/2013

두 번째 테이블인 CompanyProject는 A, B 또는 C 우선 순위가 할당된 프로젝트 목록입니다.This second table, CompanyProject, is a list of projects with an assigned priority, A, B, or C.

CompanyProjectCompanyProject

ProjNameProjName PriorityPriority
BlueBlue AA
RedRed BB
GreenGreen CC
YellowYellow CC
PurplePurple BB
OrangeOrange CC

각 테이블에는 프로젝트 열이 있습니다.Notice that each table has a project column. 각각의 이름은 약간씩 다르게 지정되나 값은 동일하게 보입니다.Each are named slightly different, but the values look like they’re the same. 이는 중요하며, 잠시 후에 다시 살펴보겠습니다.That’s important, and we’ll get back to it in a little bit.

이제 두 테이블을 모델로 가져왔으므로 보고서를 만들어 보겠습니다.Now that we have our two tables imported into a model, let’s create a report. 먼저 프로젝트 우선 순위별로 제출된 시간 수를 확인하려고 하므로 필드에서 PriorityHours를 선택합니다.The first thing we want to get is the number of hours submitted by project priority, so we select Priority and Hours from Fields.

보고서 캔버스에서 테이블을 보면 각 프로젝트에 대한 시간 수가 256.00으로 표시되며, 합계이기도 합니다.If we look at our table in the Report canvas, you’ll see the number of hours is 256.00 for each project, and it’s also the total. 분명히 이 값은 잘못된 것입니다.Clearly this isn’t correct. 이유가 무엇일까요?Why? 이는 두 테이블 간의 관계가 없으면 다른 테이블의 값(CompanyProject 테이블의 Priority)으로 분리된 한 테이블의 값(Project 테이블의 Hours)에 대한 합계를 계산할 수 없기 때문입니다.It’s because we can’t calculate a sum total of values from one table (Hours in the Project table), sliced by values in another table (Priority in the CompanyProject table) without a relationship between these two tables.

따라서 이러한 두 테이블 간에 관계를 만들겠습니다.So, let’s create a relationship between these two tables.

열에서 두 테이블에 모두 프로젝트 이름이 있지만 값은 비슷해 보였습니다.Remember those columns we saw in both tables with a project name, but with values that look alike? 이러한 두 열을 사용하여 테이블 간의 관계를 만들겠습니다.We’re going to use these two columns to create a relationship between our tables.

이러한 열을 사용하는 이유는 무엇일까요?Why these columns? ProjectHours 테이블의 Project 열을 보면 Blue, Red, Yellow, Orange 등의 값이 표시됩니다.Well, if we look at the Project column in the ProjectHours table, we see values like Blue, Red, Yellow, Orange, and so on. 실제로 동일한 값을 가진 여러 행이 표시됩니다.In fact, we see several rows that have the same value. 프로젝트에 대한 많은 색상 값이 있습니다.In-effect, we have many color values for Project.

CompanyProject 테이블의 ProjName 열을 보면 프로젝트에 대해 각 색상 값이 하나뿐입니다.If we look at the ProjName column in the CompanyProject table, we see there’s only one of each of the color values for project. 이 테이블의 각 색상 값은 고유하며, 이러한 두 테이블 간에 관계를 만들 수 있기 때문에 이는 중요합니다.Each color value in this table is unique, and that’s important, because we can create a relationship between these two tables. 이 경우 다대일 관계입니다.In this case, a many-to-one relationship. 다대일 관계에서는 테이블 중 하나에 고유한 값을 가진 열이 하나 이상 있어야 합니다.In a many-to-one relationship, at least one column in one of the tables must contain unique values. 일부 관계에 대한 몇 가지 고급 옵션이 있으며 나중에 살펴보겠지만, 지금은 두 테이블의 각 Project 열 간에 관계를 만들겠습니다.There are some advanced options for some relationships, and we’ll look at those later, but for now, let’s create a relationship between the Project columns in each of our two tables.

새 관계를 만들려면To create the new relationship

  1. 관계 관리를 클릭합니다.Click Manage Relationships.
  2. 관계 관리에서 새로 만들기를 클릭합니다.In Manage Relationships, click New. 관계에 사용하려는 테이블, 열 및 고급 설정을 선택할 수 있는 관계 만들기 대화 상자가 열립니다.This opens the Create Relationship dialog, where we can select the tables, columns, and any advanced settings we want for our relationship.
  3. 첫 번째 테이블에서 ProjectHours를 선택한 다음 Project 열을 선택합니다.In the first table, select ProjectHours, then select the Project column. 관계의 다 측면입니다.This is the many side of our relationship.
  4. 두 번째 테이블에서 CompanyProject를 선택한 다음 ProjName 열을 선택합니다.In the second table, select CompanyProject, then select the ProjName column. 관계의 일 측면입니다.This is the one side of our relationship.
  5. 관계 만들기 대화 상자와 관계 관리 대화 상자에서 확인을 클릭합니다.Go ahead and click OK in both the Create Relationship dialog and the Manage Relationships dialog.

자세한 설명을 위해 지금은 이 관계를 어려운 방법으로 만들었습니다.In the interest of full disclosure, you really just created this relationship the hard way. 관계 관리 대화 상자에서 자동 검색 단추를 클릭하기만 해도 됐을 것입니다.You could've just clicked on the Autodetect button in the Manage Relationships dialog. 사실 두 열의 이름이 같은 경우 자동 검색은 사용자가 데이터를 로드할 때 이미 이 작업을 마쳤습니다.In-fact, Autodetect would have already done it for you when you loaded the data if both columns had the same name. 하지만 무엇이 문제일까요?But, what’s the challenge in that?

이제 보고서 캔버스에서 다시 테이블을 살펴보겠습니다.Now, let’s look at the table in our Report canvas again.

이제 훨씬 좋아보이지 않나요?Now that looks a whole lot better, doesn’t it?

Priority를 기준으로 시간 합계를 계산하는 경우 Power BI Desktop은 CompanyProject 조회 테이블에서 고유한 색상 값의 모든 인스턴스를 찾고 CompanyProject 테이블에서 각 값의 모든 인스턴스를 찾은 다음 각 고유한 값의 합계를 계산합니다.When we sum up hours by Priority, Power BI Desktop will look for every instance of the unique color values in the CompanyProject lookup table, and then look for every instance of each of those values in the CompanyProject table, and calculate a sum total for each unique value.

꽤 쉬웠지만 사실상 자동 검색을 사용하면 이러한 작업조차 불필요할 수 있습니다.That was pretty easy, in-fact, with Autodetect, you might not even have to do this much.

고급 옵션 이해Understanding advanced options

자동 검색을 통해 관계가 생성되거나 수동으로 관계를 만들면 Power BI Desktop이 테이블의 데이터를 기반으로 하여 고급 옵션을 자동으로 구성합니다.When a relationship is created, either with Autodetect or one you create manually, Power BI Desktop will automatically configure advanced options based on the data in your tables. 관계 만들기/편집 대화 상자에서 고급 옵션을 확장하여 고급 관계 속성을 구성할 수 있습니다.You can configure advanced relationship properties by expanding Advanced options in the Create/Edit relationship dialog.

이미 설명한 것처럼 이러한 속성은 일반적으로 자동으로 설정되며 사용자가 처리할 필요가 없습니다. 그러나 직접 고급 옵션을 구성하는 것이 좋은 여러 가지 상황이 있습니다.As we said, these are usually set automatically and you won’t need to mess with them; however, there are several situations where you might want to configure advanced options yourself.

이후에 데이터를 업데이트하려면 다른 카디널리티가 필요합니다.Future updates to the data require a different cardinality

일반적으로 Power BI Desktop은 관계에 대한 최상의 카디널리티를 자동으로 결정할 수 있습니다.Normally, Power BI Desktop can automatically determine the best cardinality for the relationship. 데이터가 나중에 변경될 것을 알고 있으므로 자동 설정을 재정의해야 하는 경우 카디널리티 컨트롤에서 선택할 수 있습니다.If you do need to override the automatic setting, because you know the data will change in the future, you can select it in the Cardinality control. 다른 카디널리티를 선택해야 하는 예를 살펴보겠습니다.Let’s look at an example where we need to select a different cardinality.

아래의 CompanyProjectPriority 테이블은 모든 회사 프로젝트 목록과 해당 우선 순위입니다.The CompanyProjectPriority table below is a list of all company projects and their priority. ProjectBudget 테이블은 예산이 승인된 프로젝트 집합입니다.The ProjectBudget table is the set of projects for which budget has been approved.

ProjectBudgetProjectBudget

Approved ProjectsApproved Projects BudgetAllocationBudgetAllocation AllocationDateAllocationDate
BlueBlue 40,00040,000 12/1/201212/1/2012
RedRed 100,000100,000 12/1/201212/1/2012
GreenGreen 50,00050,000 12/1/201212/1/2012

CompanyProjectPriorityCompanyProjectPriority

ProjectProject PriorityPriority
BlueBlue AA
RedRed BB
GreenGreen CC
YellowYellow CC
PurplePurple BB
OrangeOrange CC

CompanyProjectPriority 테이블의 Project 열과 ProjectBudget 테이블의 ApprovedProjects 열 간에 다음과 같이 관계를 만듭니다.If we create a relationship between the Project column in the CompanyProjectPriority table and ApprovedProjects column in the ProjectBudget table, like this:

카디널리티는 자동으로 일대일(1:1)로 설정되고 교차 필터링은 양쪽으로 설정됩니다(표시 참조).Cardinality is automatically set to One-to-One (1:1), and cross filtering to be Both (as shown). 이는 Power BI Desktop에서 두 테이블의 최적 조합은 실제로 다음과 같이 표시되기 때문입니다.This is because to Power BI Desktop, the best combination of the two tables really looks like this:

ProjectProject PriorityPriority BudgetAllocationBudgetAllocation AllocationDateAllocationDate
BlueBlue AA 40,00040,000 12/1/201212/1/2012
RedRed BB 100,000100,000 12/1/201212/1/2012
GreenGreen CC 50,00050,000 12/1/201212/1/2012
YellowYellow CC

PurplePurple BB

OrangeOrange CC

결합된 테이블의 Project 열에 반복 값이 없기 때문에 두 테이블 간에 일대일 관계가 있습니다.There is a one-to-one relationship between our two tables because there are no repeating values in the combined table’s Project column. Project 열은 각 값이 한 번씩만 나타나므로 고유하며, 따라서 두 테이블의 행을 중복 없이 직접 결합할 수 있습니다.The Project column is unique, because each value occurs only once, so, the rows from the two tables can be combined directly without any duplication.

그러나 다음에 새로 고칠 때 데이터가 변경되는 것을 알고 있다고 가정해 보세요.But, let’s say you know the data will change the next time you refresh it. 이제 새로 고친 버전의 ProjectBudget 테이블에 Blue와 Red에 대한 추가 행이 있습니다.A refreshed version of the ProjectBudget table now has additional rows for Blue and Red:

ProjectBudgetProjectBudget

Approved ProjectsApproved Projects BudgetAllocationBudgetAllocation AllocationDateAllocationDate
BlueBlue 40,00040,000 12/1/201212/1/2012
RedRed 100,000100,000 12/1/201212/1/2012
GreenGreen 50,00050,000 12/1/201212/1/2012
BlueBlue 80,00080,000 6/1/20136/1/2013
RedRed 90,00090,000 6/1/20136/1/2013

이는 두 테이블의 최적 조합이 이제 다음과 같이 표시됨을 의미합니다.This means the best combination of the two tables now really looks like this:

ProjectProject PriorityPriority BudgetAllocationBudgetAllocation AllocationDateAllocationDate
BlueBlue AA 40,00040,000 12/1/201212/1/2012
RedRed BB 100,000100,000 12/1/201212/1/2012
GreenGreen CC 50,00050,000 12/1/201212/1/2012
YellowYellow CC

PurplePurple BB

OrangeOrange CC

BlueBlue AA 8000080000 6/1/20136/1/2013
RedRed BB 9000090000 6/1/20136/1/2013

새로 결합된 테이블의 Project 열에는 반복 값이 있습니다.In this new combined table, the Project column has repeating values. 테이블을 새로 고치고 나면 원래의 두 테이블 간에 일대일 관계가 없습니다.The two original tables won’t have a one-to-one relationship once the table is refreshed. 이 경우 이후의 업데이트로 인해 Project 열에 중복 항목이 포함될 것을 알고 있으므로 ProjectBudget 쪽을 다로 지정하고 CompanyProject 쪽을 일로 지정하여 카디널리티를 다대일(*:1)로 설정하려고 합니다.In this case, because we know those future updates will cause the Project column to have duplicates, we want to set the Cardinality to be Many-to-One (*:1), with the Many on the ProjectBudget side and the One on the CompanyProject side.

복잡한 관계 테이블 집합에 대해 교차 필터 방향 조정Adjusting cross filter direction for a complex set of tables of relationships

대부분의 관계에 대해 교차 필터 방향은 '양쪽'으로 설정됩니다.For most relationships, the cross filter direction is set to ‘Both’. 그러나 드물긴 하지만 모든 관계가 단일 방향으로 설정되는 이전 버전의 파워 피벗에서 모델을 가져오는 경우처럼 기본값과 다른 값으로 설정해야 하는 경우가 있습니다.There are, however, some more uncommon circumstances where you might need to set this different from the default, like if you’re importing a model from an older version of Power Pivot, where every relationship is set to a single direction.

양쪽 설정을 사용하면 Power BI Desktop이 연결된 테이블의 모든 측면을 단일 테이블처럼 처리할 수 있습니다.The Both setting enables Power BI Desktop to treat all aspects of connected tables as if they are a single table. 그러나 Power BI Desktop이 관계의 교차 필터 방향을 '양쪽'으로 설정할 수 없고 보고 용도로 명확한 기본값 집합도 사용 가능하도록 유지해야 하는 경우가 있습니다.There are some situations, however, where Power BI Desktop cannot set a relationship’s cross filter direction to ‘Both’ and also keep an unambiguous set of defaults available for reporting purposes. 관계 교차 필터 방향을 양쪽으로 설정하지 않는 경우는 보통 모호해지기 때문입니다.If a relationship cross filter direction isn't set to Both, then it’s usually because it would create ambiguity. 기본 교차 필터 설정이 적합하지 않은 경우 특정 테이블 방향이나 양쪽으로 설정할 수 있습니다.If the default cross filter setting isn’t working for you, try setting it to a particular table or Both.

단일 방향 교차 필터링은 대부분의 상황에서 작동합니다.Single direction cross filtering works for many situations. 실제로 Excel 2013 또는 그 이전 버전의 파워 피벗에서 모델을 가져온 경우 모든 관계가 단일 방향으로 설정됩니다.In fact, if you’ve imported a model from Power Pivot in Excel 2013 or earlier, all of the relationships will be set to single direction. 단일 방향은 집계 작업이 발생하는 테이블에 연결된 테이블의 필터링 선택 항목이 적용됨을 의미합니다.Single direction means that filtering choices in connected tables work on the table where aggregation work is happening. 때로는 교차 필터링 이해가 약간 어려울 수 있으므로 예를 살펴보겠습니다.Sometimes, understanding cross filtering can be a little difficult, so let’s look at an example.

단일 방향 교차 필터링을 사용하여 프로젝트 시간을 요약하는 보고서를 만드는 경우 CompanyProject, Priority 또는 CompanyEmployee, City를 기준으로 요약(또는 필터링)하도록 선택할 수 있습니다.With single direction cross filtering, if you create a report that summarizes the project hours and then you can choose to summarize (or filter) by CompanyProject, Priority or CompanyEmployee, City. 그러나 (덜 일반적인 질문이기는 하지만) 프로젝트당 직원 수를 계산하려는 경우에는 작동하지 않습니다.If however, you want to count the number of employee per projects (a less common question), it won’t work. 모두 동일한 값을 가진 열이 생성됩니다.You’ll get a column of values that are all the same. 아래 예제에서는 관계 교차 필터링 방향이 둘 다 단일 방향(ProjectHours 테이블 방향)으로 설정됩니다.In the example below, both relationships cross filtering direction is set to a single direction – towards the ProjectHours table:

필터 지정은 CompanyProject에서 CompanyEmployee로 진행되지만(아래 그림 참조) CompanyEmployee까지 진행되지는 않습니다.Filter specification will flow from CompanyProject to CompanyEmployee (as shown in the image below) but, it won’t flow up to CompanyEmployee. 그러나 교차 필터링 방향을 양쪽으로 설정하면 작동합니다.However, if you set the cross filtering direction to Both it will work. 양쪽으로 설정하면 필터 지정이 Employee까지 진행될 수 있습니다.The Both setting allows the filter specification to flow up to Employee.

교차 필터링 방향을 둘 다로 설정하면 이제 보고서가 올바르게 표시됩니다.With the cross filtering direction set to Both, our report now appears correct:

양쪽 방향으로의 교차 필터링은 위 패턴과 같은 테이블 관계 패턴에서도 제대로 작동합니다.Cross filtering both directions works well for a pattern of table relationships that look like the pattern above. 일반적으로 이를 다음과 같이 별모양 스키마라고 합니다.This is most commonly called a star schema, like this:

교차 필터링 방향은 다음 다이어그램과 같이 데이터베이스에서 자주 발견되는 보다 일반적인 패턴에서는 제대로 작동하지 않습니다.Cross filtering direction does not work well with a more general pattern often found in databases, like in this diagram:

루프와 함께 이러한 테이블 패턴이 있는 경우 교차 필터링에서 모호한 관계 집합을 만들 수 있습니다.If you have a table pattern like this, with loops, then cross filtering can create an ambiguous set of relationships. 예를 들어 테이블 X에서 필드 합계를 계산한 다음 테이블 Y의 필드를 기준으로 필터링하도록 선택하는 경우 필터가 상단 테이블을 통해 진행되어야 하는지 또는 하단 테이블을 통해 진행되어야 하는지 명확하지 않습니다.For instance, if you sum up a field from TableX and then choose to filter by a field on TableY, then it’s not clear how the filter should travel, through the top table or the bottom table. 이러한 패턴의 공통 예로 판매 실적 데이터가 있는 판매 테이블이 될 테이블 X와 예산 데이터가 될 테이블 Y를 들 수 있습니다.A common example for this kind of pattern is TableX to be a Sales table with actuals data and for TableY to be budget data. 그러면 가운데 테이블이 부서, 지역 등, 두 테이블이 사용할 조회 테이블이 됩니다.Then, the tables in the middle are lookup tables that both tables use, such as Division or Region.

활성/비활성 관계와 마찬가지로 보고서에 모호성을 만드는 경우 Power BI Desktop에서 관계를 양쪽으로 설정할 수 없습니다.Just like with active/inactive relationships, Power BI Desktop won’t allow a relationship to be set as Both if it will create ambiguity in reports. 여러 가지 방법으로 이를 처리할 수 있는 데, 다음은 가장 일반적인 두 가지 방법입니다.There are several different ways you can deal with this, here are the two most common:

  • 모호성을 줄이기 위해 관계를 삭제하거나 비활성으로 표시합니다.Delete or mark relationships as inactive to reduce ambiguity. 그런 다음 관계 교차 필터링을 양쪽으로 설정할 수 있습니다.Then you might be able to set a relationship cross filtering as Both.
  • 테이블을 두 번 가져와(두 번째는 다른 이름으로) 루프를 제거합니다.Bring in a table twice (with a different name the second time) to eliminate loops. 이렇게 하면 관계 패턴이 별모양 스키마와 비슷해집니다.This makes the pattern of relationships like a star schema. 별모양 스키마를 사용할 경우 모든 관계를 양쪽으로 설정할 수 있습니다.With a star schema all of the relationships can be set to Both.

잘못된 활성 관계Wrong active relationship

Power BI Desktop이 자동으로 관계를 만들 때 두 테이블 간에 둘 이상의 관계를 발견하는 경우도 있습니다.When Power BI Desktop automatically creates relationships, it sometimes encounters more than one relationship between two tables. 이 경우 관계 중 하나만 활성으로 설정됩니다.When this happens only one of the relationships is set to be active. 활성 관계는 서로 다른 두 테이블에서 필드를 선택할 때 Power BI Desktop이 자동으로 시각화를 만들 수 있도록 기본 관계 역할을 합니다.The active relationship serves as the default relationship so that when you choose fields from two different tables, Power BI Desktop can automatically create a visualization for you. 그러나 자동으로 선택된 관계가 잘못된 경우도 있습니다.However, in some cases the automatically selected relationship can be wrong. 관계 관리 대화 상자를 사용하여 관계를 활성 또는 비활성으로 설정하거나, 관계 편집 대화 상자에서 활성 관계를 설정할 수 있습니다.You can use the Manage Relationships dialog to set a relationship as active or inactive, or you can set the active relationship in the Edit relationship dialog.

기본 관계가 있도록 하기 위해 Power BI Desktop은 지정된 시간에 두 테이블 간에 하나의 활성 관계만 허용합니다.To ensure there’s a default relationship, Power BI Desktop only allows a single active relationship between two tables at a given time. 따라서 먼저 현재 관계를 비활성으로 설정한 다음 활성화할 관계를 설정해야 합니다.So, you must first set the current relationship as inactive and then set the relationship you want to be active.

예를 살펴보겠습니다.Let’s look at an example. 이 첫 번째 테이블은 ProjectTickets이고 다음 테이블은 EmployeeRole입니다.This first table is ProjectTickets, and the next table is EmployeeRole.

ProjectTicketsProjectTickets

TicketTicket OpenedByOpenedBy SubmittedBySubmittedBy HoursHours ProjectProject DateSubmitDateSubmit
10011001 Perham, TomPerham, Tom Brewer, AlanBrewer, Alan 2222 BlueBlue 1/1/20131/1/2013
10021002 Roman, DanielRoman, Daniel Brewer, AlanBrewer, Alan 2626 RedRed 2/1/20132/1/2013
10031003 Roth, DanielRoth, Daniel Ito, ShuIto, Shu 3434 YellowYellow 12/4/201212/4/2012
10041004 Perham, TomPerham, Tom Brewer, AlanBrewer, Alan 1313 OrangeOrange 1/2/20121/2/2012
10051005 Roman, DanielRoman, Daniel Bowen, EliBowen, Eli 2929 PurplePurple 10/1/201310/1/2013
10061006 Roth, DanielRoth, Daniel Bento, NunoBento, Nuno 3535 GreenGreen 2/1/20132/1/2013
10071007 Roth, DanielRoth, Daniel Hamilton, DavidHamilton, David 1010 YellowYellow 10/1/201310/1/2013
10081008 Perham, TomPerham, Tom Han, MuHan, Mu 2828 OrangeOrange 1/2/20121/2/2012
10091009 Roman, DanielRoman, Daniel Ito, ShuIto, Shu 2222 PurplePurple 2/1/20132/1/2013
10101010 Roth, DanielRoth, Daniel Bowen, EliBowen, Eli 2828 GreenGreen 10/1/201310/1/2013
10111011 Perham, TomPerham, Tom Bowen, EliBowen, Eli 99 BlueBlue 10/15/201310/15/2013

EmployeeRoleEmployeeRole

EmployeeEmployee RoleRole
Bento, NunoBento, Nuno Project ManagerProject Manager
Bowen, EliBowen, Eli Project LeadProject Lead
Brewer, AlanBrewer, Alan Project ManagerProject Manager
Hamilton, DavidHamilton, David Project LeadProject Lead
Han, MuHan, Mu Project LeadProject Lead
Ito, ShuIto, Shu Project LeadProject Lead
Perham, TomPerham, Tom Project SponsorProject Sponsor
Roman, DanielRoman, Daniel Project SponsorProject Sponsor
Roth, DanielRoth, Daniel Project SponsorProject Sponsor

실제로 여기에는 두 개의 관계가 있습니다.There are actually two relationships here. 하나는 ProjectTickets 테이블의 SubmittedBy와 EmployeeRole 테이블의 Employee 간 관계이고, 다른 하나는 ProjectTickets 테이블의 OpenedBy와 EmployeeRole 테이블의 Employee 간 관계입니다.One is between SubmittedBy in the ProjectTickets table and Employee in the EmployeeRole table, and the other is between OpenedBy in the ProjectTickets table and Employee in the EmployeeRole table.

두 관계를 모두 모델에 추가하면(먼저 OpenedBy 추가) 관계 관리 대화 상자에 OpenedBy가 활성 상태로 표시됩니다.If we add both relationships to the model (OpenedBy first), then the Manage Relationships dialog will show that OpenedBy is active:

이제 보고서 캔버스의 테이블 시각화에 EmployeeRole의 Role 및 Employee 필드와 ProjectTickets의 Hours 필드를 사용하는 보고서를 만들면 프로젝트 스폰서만 표시되는 데 이것은 이들만이 프로젝트 티켓을 열었기 때문입니다.Now, if we create a report that uses Role and Employee fields from EmployeeRole, and the Hours field from ProjectTickets in a table visualization in the Report canvas, we’ll see only project sponsors because they’re the only ones that opened a project ticket.

활성 관계를 변경하여 OpenedBy 대신 SubmittedBy를 가져올 수 있습니다.We can change the active relationship and get SubmittedBy instead of OpenedBy. 관계 관리에서 ProjectTickets(OpenedBy)와 EmployeeRole(Employee) 간의 관계를 선택 취소한 다음 Project Tickets(SubmittedBy)와 EmployeeRole(Employee) 간의 관계를 선택합니다.In Manage Relationships, we uncheck the ProjectTickets(OpenedBy) to EmployeeRole(Employee) relationship, and then we check the Project Tickets(SubmittedBy) to EmployeeRole(Employee) relationship.

관계 보기의 모든 관계 참조See all of your relationships in Relationship View

경우에 따라 모델에 여러 테이블이 있고 테이블 간의 관계가 복잡할 수 있습니다.Sometimes your model has multiple tables and complex relationships between them. Power BI Desktop의 관계 보기는 모델의 모든 관계, 방향 및 카디널리티를 이해하기 쉽고 사용자 지정 가능한 표로 제시합니다.Relationship View in Power BI Desktop shows all of the relationships in your model, their direction, and cardinality in an easy to understand and customizable diagram. 자세한 내용은 Power BI Desktop의 관계 보기를 참조하세요.To learn more, see Relationship View in Power BI Desktop.