Microsoft로 로그인
로그인하거나 계정을 만듭니다.
안녕하세요.
다른 계정을 선택합니다.
계정이 여러 개 있음
로그인할 계정을 선택합니다.

Power Pivot의 날짜 테이블은 시간이 지날 때 데이터를 검색하고 계산하는 데 필수적입니다. 이 문서에서는 날짜 테이블과 Power Pivot에서 테이블을 만드는 방법을 철저하게 이해합니다. 특히 이 문서에서는 다음을 설명합니다.

  • 날짜 테이블이 날짜 및 시간으로 데이터를 검색하고 계산하는 데 중요한 이유입니다.

  • Power Pivot를 사용하여 데이터 모델에 날짜 테이블을 추가하는 방법

  • 날짜 테이블에서 연도, 월 및 기간과 같은 새 날짜 열을 만드는 방법

  • 날짜 테이블과 팩트 테이블 간의 관계를 만드는 방법

  • 시간으로 작업하는 방법

이 문서는 Power Pivot를 새로 사용하려는 사용자를 위한 것입니다. 그러나 데이터 가져오기, 관계 만들기 및 계산된 열 및 측정값 만들기에 대한 이해가 이미 중요합니다.

문서에서는 측정 수식에서 DAX Time-Intelligence 함수를 사용하는 방법을 설명하지 않습니다. DAX Time Intelligence 함수를 사용하여 측정값을 만드는 방법에 대한 자세한 내용은 의 Power Pivot의 Time Intelligence를 Excel.

참고: Power Pivot에서 이름 "measure" 및 "계산 필드"는 동의어입니다. 이 문서 전체에서 이름 측정값을 사용하고 있습니다. 자세한 내용은 Power Pivot의 측정값을 참조하세요.

내용

날짜 테이블 이해

거의 모든 데이터 분석에는 날짜 및 시간 동안 데이터를 검색하고 비교하는 것이 관련됩니다. 예를 들어 지난 회계 분기의 판매 금액을 합산한 다음 해당 합계를 다른 분기와 비교하거나 계정에 대한 월말 종가 잔액을 계산할 수 있습니다. 이러한 각 경우 날짜를 사용하여 특정 기간 동안 판매 트랜잭션 또는 잔액을 그룹화하고 집계합니다.

Power View 보고서

회계 분기 기준 총 판매액 피벗 테이블

날짜 테이블에는 날짜와 시간의 다양한 표현이 포함될 수 있습니다. 예를 들어 날짜 테이블에는 회계 연도, 월, 분기 또는 기간과 같은 열이 있으며, 피벗 테이블 또는 보고서에서 데이터를 잘라서 필터링할 때 필드 목록에서 필드로 선택할 Power View 있습니다.

Power View 필드 목록

Power View 필드 목록

연도, 월, 분기와 같은 날짜 열에 해당 범위 내의 모든 날짜를 포함하려면 날짜 테이블에 연속된 날짜 집합이 있는 열이 하나 이상 있어야 합니다. 즉, 해당 열에는 날짜 테이블에 포함된 각 연도에 대해 매일 하나의 행이 있어야 합니다.

예를 들어 찾아보는 데이터에 2010년 2월 1일부터 2012년 11월 30일까지의 날짜가 있으며 일정 연도에 대해 보고하는 경우 2010년 1월 1일부터 2012년 12월 31일까지의 날짜 범위가 최소인 날짜 테이블을 사용할 수 있습니다. 날짜 테이블의 매년은 매년 모든 일 수를 포함해야 합니다. 최신 데이터로 데이터를 정기적으로 새로 고치는 경우 종료 날짜를 1년 또는 2년으로 실행해야 할 수 있으므로 시간이 지날수록 날짜 테이블을 업데이트할 수 없습니다.

연속된 날짜 집합이 있는 날짜 테이블

연속된 날짜가 있는 날짜 테이블

회계 연도에 대해 보고하는 경우 각 회계 연도에 대해 연속된 날짜 집합이 있는 날짜 테이블을 만들 수 있습니다. 예를 들어 회계 연도가 3월 1일로 시작하고 현재 날짜(예: 2013년도)까지 회계 연도에 대한 데이터가 있는 경우 2009년 3월 1일로 시작하고 2013 회계연도의 마지막 날짜까지 각 회계 연도에 적어도 매일 포함되는 날짜 테이블을 만들 수 있습니다.

연도와 회계 연도 모두를 보고하는 경우 별도의 날짜 테이블을 만들 필요가 없습니다. 단일 날짜 테이블에는 연도, 회계 연도 및 134주 기간 일정의 열이 포함할 수 있습니다. 중요한 점은 날짜 테이블에 포함된 모든 연도에 대한 연속적인 날짜 집합이 포함되어 있습니다.

데이터 모델에 날짜 테이블 추가

데이터 모델에 날짜 테이블을 추가할 수 있는 방법은 여러 가지가 있습니다.

  • 관계식 데이터베이스 또는 기타 데이터 원본에서 가져오기

  • 날짜 테이블을 Excel Power Pivot에서 새 테이블을 복사하거나 링크합니다.

  • 마켓플레이스에서 Microsoft Azure 가져오기.

이러한 각을 자세히 살펴보자.

관계적 데이터베이스에서 가져오기

데이터 웨어하우스 또는 다른 유형의 관계형 데이터베이스에서 일부 또는 전체 데이터를 가져오는 경우 이미 날짜 테이블과 가져오는 나머지 데이터 간에 관계가 있을 가능성이 있습니다. 날짜와 형식은 팩트 데이터의 날짜와 일치할 수 있으며 날짜는 과거에 잘 시작되어 향후로 멀어질 수 있습니다. 가져오는 날짜 테이블은 매우 크며 데이터 모델에 포함해야 할 날짜 범위를 초과하는 범위의 날짜를 포함할 수 있습니다. Power Pivot의 테이블 가져오기 마법사의 고급 필터 기능을 사용하여 실제로 필요한 날짜와 특정 열만 선택적으로 선택할 수 있습니다. 이렇게 하면 통합 문서의 크기를 크게 줄이고 성능을 향상시킬 수 있습니다.

표 가져오기 마법사

테이블 가져오기 마법사 대화 상자

대부분의 경우 가져온 테이블에 이미 있기 때문에 회계 연도, 주, 월 이름 등의 추가 열을 만들 필요가 없습니다. 그러나 경우에 따라 데이터 모델로 날짜 테이블을 가져온 후 특정 보고 요구에 따라 추가 날짜 열을 만들어야 할 수도 있습니다. 다행히 DAX를 사용하여 쉽게 할 수 있습니다. 나중에 날짜 테이블 필드를 만드는 방법을 자세히 알아보면 됩니다. 모든 환경은 다릅니다. 데이터 원본에 관련 날짜 또는 일정 테이블이 있는지 확인하지 않은 경우 데이터베이스 관리자에게 문의하세요.

날짜 테이블을 Excel

데이터 모델에서 날짜 테이블을 Excel 데이터 모델의 새 테이블에 복사할 수 있습니다. 이 작업을 매우 쉽게 할 수 있으며 많은 유연성을 제공합니다.

날짜 테이블을 Excel 연속된 범위의 단일 열로 시작됩니다. 그런 다음, Excel 수식을 사용하여 연도 Excel, 분기, 월, 회계 연도, 기간 등의 추가 열을 만들거나 데이터 모델에 표를 복사한 후 계산된 열로 만들 수 있습니다. Power Pivot에서 추가 날짜 열 만들기는 이 문서의 의 1부에서 날짜 테이블에 새 날짜 열 추가 섹션에 설명되어 있습니다.

방법: 날짜 테이블을 Excel 데이터 모델에 복사합니다.

  1. Excel 워크시트의 빈 워크시트에서 A1셀에 열 헤더 이름을 입력하여 날짜 범위를 식별합니다. 일반적으로 날짜, DateTime 또는 DateKey와 같은 것입니다.

  2. A2에서시작 날짜를 입력합니다. 예를 들어 2010년 1월 1일.

  3. 채우기 핸들을 클릭하고 종료 날짜가 포함된 행 번호로 아래로 드래그합니다. 예를 들어 2016/12/31 입니다.

    Excel의 날짜 열

  4. 날짜 열에서 모든 행을 선택합니다(셀 A1의헤더 이름을 포함).

  5. 스타일 그룹에서 서식을 표로 클릭한다음 스타일을 선택합니다.

  6. 표로 서식 대화 상자에서 확인 을 클릭합니다.

    Power Pivot의 날짜 열

  7. 헤더를 포함하여 모든 행을 복사합니다.

  8. Power Pivot의 홈 탭에서붙여넣기를 클릭합니다.

  9. 테이블 이름 붙여넣기 > 날짜 또는 일정과 같은 이름을 입력합니다.번째 행을열 헤더로 선택된 다음 확인 을 클릭합니다.

    붙여넣기 미리 보기

    Power Pivot의 새 날짜 테이블(이 예제의 일정 이름)은 다음과 같습니다.

    Power Pivot의 날짜 테이블

    참고: 데이터 모델에 추가 를 사용하여 연결된 테이블을 만들 수 있습니다. 그러나 통합 문서에는 날짜 테이블의 두 가지 버전이 있기 때문에 통합 문서가 불필요하게 크게 됩니다. 하나는 Excel 1개, Power Pivot.에서 1개입니다.

참고: 이름 날짜는 Power Pivot의 키워드입니다. Power Pivot Date에서 만든 테이블의 이름을 지정하는 경우 인수에서 참조하는 모든 DAX 수식에서 단일 따옴표로 테이블 이름을 묶아야 합니다. 이 문서의 모든 예제 이미지 및 수식은 일정이라는 Power Pivot에서 만든 날짜 테이블을 참조합니다.

이제 데이터 모델에 날짜 테이블이 있습니다. DAX를 사용하여 연도, 월 등의 새 날짜 열을 추가할 수 있습니다.

날짜 테이블에 새 날짜 열 추가

각 연도에 대해 매일 행이 하나씩 있는 단일 날짜 열이 있는 날짜 테이블은 모든 날짜를 날짜 범위에 정의하는 데 중요합니다. 팩트 테이블과 날짜 테이블 간의 관계를 만드는 데도 필요합니다. 그러나 매일 하나의 행이 있는 단일 날짜 열은 피벗 테이블 또는 보고서의 날짜를 Power View 유용하지 않습니다. 날짜 테이블에 범위 또는 날짜 그룹에 대한 데이터를 집계하는 데 도움이 되는 열을 포함해야 합니다. 예를 들어 월 또는 분기별 판매 금액을 합산하거나 전년도 성장률을 계산하는 측정값을 만들 수 있습니다. 이러한 각 경우 날짜 테이블에는 해당 기간에 대한 데이터를 집계할 수 있는 연도, 월 또는 분기 열이 필요합니다.

관계형 데이터 원본에서 날짜 테이블을 가져온 경우 원하는 다른 유형의 날짜 열이 이미 포함되어 있을 수 있습니다. 경우에 따라 이러한 열 중 일부를 수정하거나 추가 날짜 열을 만들 수 있습니다. 특히 데이터 모델에서 사용자 Excel 테이블을 만들고 데이터 모델에 복사하는 경우 특히 그에 해당합니다. 다행히 Power Pivot에서 새 날짜 열을 만드는 것은 DAX의 날짜 및 시간 함수를 사용하여 매우 쉽습니다.

팁: DAX를 아직 작업하지 않은 경우 빠른 시작: Office.com에서 DAX 기본 사항 30분만에 학습을 시작하는 것이 가장 좋은 Office.

DAX 날짜 및 시간 함수

수식에서 날짜 및 시간 함수를 Excel 경우 날짜 및 시간 함수를 잘 알고 있을 수 있습니다. 이러한 함수는 해당 함수와 유사하지만 Excel 몇 가지 중요한 차이점이 있습니다.

  • DAX 날짜 및 시간 함수는 날짜 시간 데이터 형식을 사용 합니다.

  • 열의 값을 인수로 사용할 수 있습니다.

  • 날짜 값을 반환 및/또는 조작하는 데 사용할 수 있습니다.

이러한 함수는 날짜 테이블에서 사용자 지정 날짜 열을 만들 때 자주 사용되어 이해해야 합니다. 이러한 함수의 수를 사용하여 연도, 분기, FiscalMonth에 대한 열을 만들 것입니다.

참고: DAX의 날짜 및 시간 함수는 Time Intelligence 함수와 동일하지 않습니다. 2013에서 Power Pivot의 Time Intelligence에 Excel 자세히 알아보고

DAX에는 다음 날짜 및 시간 함수가 포함됩니다.

수식에 사용할 수 있는 다른 많은 DAX 함수도 있습니다. 예를 들어 여기에 설명된 많은 수식은 MOD TRUNC와같은 수학 및 삼각함수,IF와같은 논리 함수 및 서식과 같은 텍스트 함수를 사용하여 다른 DAX 함수에 대한 자세한 내용은 이 문서의 의 추가 리소스 섹션을 참조하세요.

일정 연도에 대한 수식 예제

다음 예제에서는 일정이라는 날짜 테이블에 추가 열을 만드는 데 사용되는 수식을 설명합니다. Date라는 하나의 열이 이미 존재하며 2010년 1월 1일에서 2016년 12월 31일까지 연속된 날짜 범위가 포함되어 있습니다.

연도

=YEAR([date])

이 수식에서 YEAR 함수는 날짜 열의 값에서 연도를 반환합니다. 날짜 열의 값은 날짜 시간 데이터 형식이기 때문에 YEAR 함수는 연도에서 반환하는 방법을 알고 있습니다.

연도 열

=MONTH([date])

이 수식에서는 YEAR 함수와 마찬가지로 MONTH 함수를 사용하여 날짜 열에서 월 값을 반환할 수 있습니다.

월 열

분기

=INT(([월]+2)/3)

이 수식에서는 INT 함수를 사용하여 날짜 값을 정수로 반환합니다. INT 함수에 대해 지정하는 인수는 월 열의 값으로, 2를 추가한 다음 3으로 나누고 분기 1~4를 얻습니다.

분기 열

월 이름

=FORMAT([date],"mmmm")

이 수식에서는 월 이름을 얻기 위해 FORMAT 함수를 사용하여 날짜 열에서 텍스트로 숫자 값을 변환합니다. 날짜 열을 첫 번째 인수로 지정한 다음 형식을 지정합니다. 월 이름이 모든 문자를 표시하기를 원하기 때문에 "mmmm"을 사용했습니다. 결과는 다음과 같습니다.

월 이름 열

세 문자로 약어를 반환하려는 경우 형식 인수에서 "mmm"을 사용하게 됩니다.

요일

=FORMAT([date],"ddd")

이 수식에서는 FORMAT 함수를 사용하여 일 이름을 얻습니다. 약어 날짜 이름을 원하기 때문에 형식 인수에 "ddd"를 지정합니다.

요일 열
샘플 피벗 테이블

연도, 분기, 월 등의 날짜에 대한 필드가 있는 경우 피벗 테이블 또는 보고서에서 사용할 수 있습니다. 예를 들어 다음 이미지는 VALUES의 판매 팩트 테이블의 SalesAmount 필드 및 ROWS의 일정 차원 테이블의 연도 및 분기를 보여줍니다. SalesAmount는 연도 및 분기 컨텍스트에 대해 집계됩니다.

샘플 피벗 테이블

회계 연도에 대한 수식 예제

회계 연도

=IF([Month]<= 6,[Year],[Year]+1)

이 예제에서는 회계 연도가 7월 1일부터 시작됩니다.

회계 연도의 시작 및 종료 날짜가 종종 달력 연도와 다르기 때문에 날짜 값에서 회계 연도를 추출할 수 있는 함수는 없습니다. 회계 연도의 값을 얻기 위해 먼저 IF 함수를 사용하여 월 값이 6보다 작거나 같을지 테스트합니다. 두 번째 인수에서 월 값이 6보다 작거나 같을 경우 연도 열에서 값을 반환합니다. 그렇지 않은 경우 연도에서 값을 반환하고 1을 추가합니다.

회계 연도 열

회계 연도 말월 값을 지정하는 또 다른 방법은 월을 지정하는 측정값을 만드는 것입니다. 예를 들어 FYE:=6입니다. 그런 다음 월 번호 대신 측정값 이름을 참조할 수 있습니다. 예를 들어 =IF([Month]<=[FYE],[Year],[Year]+1). 이렇게 하면 회계 연도 말월을 여러 가지 수식에서 참조할 때 더 유연하게 사용할 수있습니다.

회계 월

=IF([Month]<= 6, 6+[Month], [Month]- 6)

이 수식에서는 [월]의 값이 6보다 작거나 같아야 하는지 지정한 다음 6을 사용하여 월의 값을 추가합니다. 그렇지 않으면 [월]의 값에서 6을 뺄 수 있습니다.

회계 월 열

회계 분기

=INT(([FiscalMonth]+2)/3)

FiscalQuarter에 사용하는 수식은 연도의 분기와 훨씬 동일합니다. 유일한 차이점은 [월] 대신 [FiscalMonth]을 지정하는 것입니다.

회계 분기 열

공휴일 또는 특별한 날짜

특정 날짜가 공휴일 또는 다른 특별한 날짜인 것을 나타내는 날짜 열을 포함할 수 있습니다. 예를 들어 피벗테이블에 휴일 필드를 슬라이서 또는 필터로 추가하여 새해의 매출 합계를 합산할 수 있습니다. 다른 경우 다른 날짜 열 또는 측정값에서 해당 날짜를 제외할 수 있습니다.

공휴일 또는 특별한 날을 포함하여 매우 간단합니다. 포함할 날짜가 Excel 테이블을 만들 수 있습니다. 그런 다음 데이터 모델에 추가를 복사하거나 사용하여 데이터 모델에 연결된 테이블로 추가할 수 있습니다. 대부분의 경우 테이블과 일정 테이블 간에 관계를 만들 필요가 없습니다. 참조하는 모든 수식은 LOOKUPVALUE 함수를 사용하여 값을 반환할 수 있습니다.

다음은 날짜 테이블에 추가할 공휴일을 Excel 테이블에서 만든 테이블의 예입니다.

날짜

공휴일

1/1/2010

새해

11/25/2010

추수 감사절

12/25/2010

크리스마스

2011-01-01

새해

11/24/2011

추수 감사절

12/25/2011

크리스마스

2012-01-01

새해

2012-11-22

추수 감사절

12/25/2012

크리스마스

1/1/2013

새해

11/28/2013

추수 감사절

12/25/2013

크리스마스

11/27/2014

추수 감사절

12/25/2014

크리스마스

1/1/2014

새해

11/27/2014

추수 감사절

12/25/2014

크리스마스

1/1/2015

새해

11/26/2014

추수 감사절

12/25/2015

크리스마스

2016-01-01

새해

11/24/2016

추수 감사절

12/25/2016

크리스마스

날짜 테이블에서 Holiday라는 열을 만들고 이와 같은 수식을 사용합니다.

=LOOKUPVALUE(Holidays[Holiday], Holidays[date], Calendar[date])

이 수식을 좀 더 신중하게 살펴보자.

LOOKUPVALUE 함수를 사용하여 휴일 테이블의 휴일 열에서 값을 얻습니다. 첫 번째 인수에서 결과 값이 될 열을 지정합니다. 반환하려는 값이기 때문에 휴일 테이블에 휴일 열을 지정합니다.

=LOOKUPVALUE(Holidays[Holiday], Holidays[date], Calendar[date])

그런 다음 검색할 날짜가 있는 두 번째 인수인 검색 열을 지정합니다. 휴일 테이블에 날짜 열을 지정합니다.

=LOOKUPVALUE(Holidays[Holiday],Holidays[date],Calendar[date])

마지막으로, 휴일 테이블에서 검색할 날짜가 있는 일정 테이블에 열을 지정합니다. 물론 일정 테이블의 날짜열입니다.

=LOOKUPVALUE(Holidays[Holiday], Holidays[date],Calendar[date])

휴일 열은 휴일 테이블의 날짜와 일치하는 날짜 값이 있는 각 행의 휴일 이름을 반환합니다.

공휴일 테이블

사용자 지정 일정 - 134주 기간

소매 또는 식품 서비스와 같은 일부 조직에서는 종종 134주 기간과 같은 다른 기간에 보고합니다. 134주 기간 달력으로 각 기간은 28일입니다. 따라서 각 기간에는 월요일 4개, 화요일 4개, 수요일 4개가 포함되어 있습니다. 각 기간은 동일한 일 수를 포함하며 일반적으로 공휴일은 매년 같은 기간에 해당합니다. 주 중 어느 날에 기간을 시작할지 선택할 수 있습니다. 일정 또는 회계 연도의 날짜와 마찬가지로 DAX를 사용하여 사용자 지정 날짜로 추가 열을 만들 수 있습니다.

아래 예제에서 첫 번째 전체 기간은 회계 연도의 첫 번째 일요일에 시작됩니다. 이 경우 회계 연도는 7/1부터 시작됩니다.

이 값은 회계 연도의 첫 번째 전체 주부터 시작하는 주 번호를 제공합니다. 이 예제에서는 첫 번째 전체 주가 일요일에 시작되고 일정 테이블의 첫 번째 회계 연도의 첫 번째 전체 주가 실제로 2010년 7월 4일에서 시작되고 일정 테이블의 마지막 전체 주까지 계속됩니다. 이 값 자체가 분석에 유용한 것은 아니지만 다른 28일 기간 수식에서 사용하기 위해 계산해야 합니다.

=INT([date]-40356)/7)

이 수식을 좀 더 신중하게 살펴보자.

먼저 날짜 열의 값을 정수로 반환하는 수식을 만들 수 있습니다.

=INT([date])

그런 다음 첫 번째 회계 연도의 첫 번째 일요일을 봐야 합니다. 2010년 7월 4일입니다.

주 열

이제 이 값에서 40356(이전 회계 연도의 마지막 일요일인 2010/6/27 정수)을 빼면 달력 테이블의 날짜가 시작된 이후의 일 수를 얻습니다.

=INT([date]-40356)

그런 다음 결과를 다음과 같이 7(일주일에 일)으로 분할합니다.

=INT([date]-40356)/7)

결과는 다음과 같습니다.

주 열

마침표

이 사용자 지정 일정의 기간은 28일을 포함하며 항상 일요일에 시작됩니다. 이 열은 첫 번째 회계 연도의 첫 번째 일요일부터 시작되는 기간의 수를 반환합니다.

=INT(([Week]+3)/4)

이 수식을 좀 더 신중하게 살펴보자.

먼저 다음과 같이 주 열의 값을 정수로 반환하는 수식을 생성합니다.

=INT([Week])

그런 다음 이 값에 3을 추가합니다.

=INT([Week]+3)

그런 다음 결과를 4로 나 같습니다.

=INT(([Week]+3)/4)

결과는 다음과 같습니다.

기간 열

기간 회계 연도

이 값은 기간에 대한 회계 연도를 반환합니다.

=INT(([Period]+12)/13)+2008

이 수식을 좀 더 신중하게 살펴보자.

먼저 기간에서 값을 반환하고 12를 추가하는 수식을 생성합니다.

= ([기간]+12)

회계 연도에 13일 28일 기간이 있기 때문에 결과를 13으로 분할합니다.

=(([Period]+12)/13)

테이블의 첫 번째 연도이기 때문에 2010을 추가합니다.

=(([Period]+12)/13)+2010

마지막으로 INT 함수를 사용하여 결과의 일부를 제거하고 13으로 나눈 경우 전체 숫자를 반환합니다.

=INT(([기간]+12)/13) + 2010

결과는 다음과 같습니다.

기간 회계 연도 열

FiscalYear의 기간

이 값은 각 회계 연도의 첫 번째 전체 기간(일요일 시작)부터 시작하여 기간 번호 1~13을 반환합니다.

=IF(MOD([Period],13), MOD([Period],13),13)

이 수식은 좀 더 복잡하기 때문에 먼저 이해하기 좋은 언어로 설명할 것입니다. 이 수식은 값을 [기간]에서 13으로 나누고 연도에 기간 번호(1-13)를 얻습니다. 해당 숫자가 0이면 13을 반환합니다.

먼저 기간 13까지 값의 나머지를 반환하는 수식을 생성합니다. 이렇게 MOD(수학 및 삼각 함수)를 사용할 수 있습니다.

=MOD([Period],13)

이 경우 대부분의 경우 예제 달력 날짜 테이블의 처음 5일과 같이 첫 번째 회계 연도 내에 해당 날짜가 빠지지 않습니다. 기간 값이 0인 경우를 제외하고 원하는 결과를 제공합니다. IF 함수를 사용하여 이 기능을 사용할 수 있습니다. 결과가 0인 경우 다음과 같이 13을 반환합니다.

=IF(MOD([Period],13),MOD([Period],13),13)

결과는 다음과 같습니다.

회계 연도의 기간 열

샘플 피벗 테이블

아래 이미지는 VALUES의 판매 팩트 테이블의 SalesAmount 필드와 ROWS의 일정 날짜 차원 테이블의 PeriodFiscalYear 및 PeriodInFiscalYear 필드가 있는 피벗 테이블을 보여줍니다. SalesAmount는 회계 연도 및 회계 연도의 28일 기간으로 컨텍스트에 대해 집계됩니다.

회계 연도의 샘플 피벗 테이블

관계

데이터 모델에서 날짜 테이블을 만든 후 피벗 테이블 및 보고서에서 데이터를 검색하고 날짜 차원 테이블의 열에 따라 데이터를 집계하려면 거래 데이터와 날짜 테이블 간의 관계를 만들어야 합니다.

날짜를 기준으로 관계를 만들어야 하기 때문에 날짜(날짜) 데이터 형식의 값이 있는 열 간에 해당 관계를 만들어야 합니다.

팩트 테이블의 모든 날짜 값에 대해 날짜 테이블의 관련 보기 열에 일치하는 값이 포함되어야 합니다. 예를 들어 DateKey 열에 8/15/15 AM 값이 있는 Sales 팩트 테이블의 행(트랜잭션 레코드)은 날짜(일정 명명) 테이블의 관련 날짜 열에 해당 값이 있어야 합니다. 이는 날짜 테이블의 날짜 열에 팩트 테이블에 가능한 날짜가 포함된 연속된 날짜 범위를 포함하려는 가장 중요한 이유 중 하나입니다.

다이어그램 뷰의 관계

참고: 각 테이블의 날짜 열은 동일한 데이터 형식(Date)을 되어야 하지만 각 열의 형식은 중요하지 않습니다.

참고: Power Pivot에서 두 테이블 간에 관계를 만들 수 없는 경우 날짜 필드는 날짜와 시간을 동일한 정밀도 수준으로 저장하지 않을 수 있습니다. 열 서식에 따라 값이 동일하게 표시될 수 있지만 다르게 저장될 수 있습니다. 시간 사용에 대한 자세한 내용을 읽어보아야 합니다.

참고: 관계에서 정수 대리 키를 사용하지 않도록 합니다. 관계식 데이터 원본에서 데이터를 가져올 때 날짜 및 시간 열은 고유 날짜를 나타내는 데 사용되는 정수 열인 대리 키로 표시됩니다. Power Pivot에서는 정수 날짜/시간 키를 사용하여 관계를 만들지 말아야 합니다. 대신 날짜 데이터 형식이 있는 고유한 값이 포함된 열을 사용합니다. 서로게이트 키를 사용하는 것이 기존 데이터 웨어하우스에서 모범 사례로 간주되어도 정수 키는 Power Pivot에 필요하지 않습니다. 다른 날짜 기간에 따라 피벗Tables에서 값을 그룹화하기 어려울 수 있습니다.

관계를 만들 때 형식 불일치 오류가 발생하는 경우 팩트 테이블의 열이 날짜 데이터 형식이 아니기 때문에 발생할 수 있습니다. Power Pivot에서 날짜가 아닌 데이터 형식(일반적으로 텍스트 데이터 형식)을 날짜 데이터 형식으로 자동으로 변환할 수 없는 경우 이러한 일이 일어날 수 있습니다. 팩트 테이블에서 열을 계속 사용할 수 있지만 새 계산 열에서 DAX 수식을 사용하여 데이터를 변환해야 합니다. 텍스트 데이터 형식 날짜를 부록의 나중에 날짜 데이터 형식으로 변환을 참조하세요.

여러 관계

경우에 따라 여러 관계를 만들거나 여러 날짜 테이블을 만들어야 할 수도 있습니다. 예를 들어 Sales 팩트 테이블에 DateKey, ShipDate 및 ReturnDate와 같은 날짜 필드가 여러 개 있는 경우 모두 일정 날짜 테이블의 날짜 필드에 관계가 있을 수 있지만 둘 중 하나만 활성 관계일 수 있습니다. 이 경우 DateKey는 트랜잭션 날짜를 나타내고 따라서 가장 중요한 날짜를 나타내기 때문에 활성 관계로 가장 잘 됩니다. 다른 사람에는 비활성 관계가 있습니다.

다음 피벗테이블은 회계 연도 및 회계 분기별 총 매출을 계산합니다. Total Sales:=SUM([SalesAmount])이라는수식이 있는 총 판매라는 측정값이 값에 배치하고 일정 날짜 테이블의 FiscalYear 및 FiscalQuarter 필드가 ROWS에 배치됩니다.

회계 분기 기준 총 판매액 피벗 테이블 피벗 테이블 필드 목록

이 직선형 피벗테이블은 DateKey의 트랜잭션 날짜까지 총 판매액을 합산하기 때문에 올바르게 작동합니다. 총 판매량 측정값은 DateKey의 날짜를 사용하며 영업 테이블에 DateKey와 일정 날짜 테이블의 날짜 열 간에 관계가 있기 때문에 회계 연도 및 회계 분기로 합산됩니다.

비활성 관계

하지만 거래 날짜가 아니라 배송 날짜로 총 매출을 합산하고 싶을 경우 어떻게 하나요? 판매 테이블의 ShipDate 열과 일정 테이블의 날짜 열 간의 관계가 필요합니다. 이러한 관계를 만들지 않는 경우 집계는 항상 트랜잭션 날짜를 기준으로 합니다. 그러나 하나만 활성 상태일 수 있으며 트랜잭션 날짜가 가장 중요하기 때문에 일정 테이블과 활성 관계를 맺는 경우에도 여러 관계를 맺을 수 있습니다.

이 경우 ShipDate에는 비활성 관계가 있으므로 배송 날짜를 기준으로 데이터를 집계하기 위해 만든 모든 측정값 수식은 USERELATIONSHIP 함수를 사용하여 비활성 관계를 지정해야 합니다.

예를 들어 판매 테이블의 ShipDate 열과 일정 테이블의 날짜 열 간에 비활성 관계가 있기 때문에 배송 날짜로 총 매출을 합산하는 측정값을 만들 수 있습니다. 이러한 수식을 사용하여 사용할 관계를 지정합니다.

배송 날짜:=계산(SUM(Sales[SalesAmount]), USERELATIONSHIP(Sales[ShipDate], Calendar[Date]))

이 수식은 단순히 SalesAmount에 대한 합계를 계산하지만 판매 테이블의 ShipDate 열과 일정 테이블의 날짜 열 간의 관계를 사용하여 필터링합니다.

이제 피벗 테이블을 만들고 배송 날짜별 총 판매량을 값으로 계산하고 행에 회계 연도 및 회계 분기를 기준으로 계산하면 총합계가 동일하지만 회계 연도 및 회계 분기의 다른 모든 합계 금액은 거래 날짜가 아니라 배송 날짜를 기반으로 하여 다르기 때문에 다릅니다.

배송일 기준 총 판매액 피벗 테이블 피벗 테이블 필드 목록

비활성 관계를 사용하면 하나의 날짜 테이블만 사용할 수 있지만 모든 측정값(예: 배송 날짜 기준 총 판매량)은 수식에서 비활성 관계를 참조해야 합니다. 즉, 여러 날짜 테이블을 사용하는 또 다른 대안이 있습니다.

여러 날짜 테이블

팩트 테이블에서 여러 날짜 열을 사용하는 또 다른 방법은 여러 날짜 테이블을 만들고, 다른 날짜 테이블 간에 별도의 활성 관계를 만드는 것입니다. 판매 테이블 예제를 다시 살펴보겠습니다. 데이터를 집계할 날짜가 있는 세 개의 열이 있습니다.

  • 각 트랜잭션에 대한 판매 날짜가 있는 DateKey입니다.

  • ShipDate – 판매된 상품이 고객에게 배송된 날짜와 시간을 제공합니다.

  • ReturnDate – 반환된 하나 이상의 항목이 수신된 날짜와 시간이 있는 경우입니다.

트랜잭션 날짜가 있는 DateKey 필드가 가장 중요합니다. 이러한 날짜를 기준으로 대부분의 집계를 할 것이기 때문에 일정 테이블의 날짜 열과 날짜 열 간의 관계를 가장 확실하게 원할 것입니다. ShipDate 및 ReturnDate 및 Date 필드 간에 비활성 관계를 만들지 않는 경우 일정 테이블에 특별한 측정 수식이 필요한 경우 배송 날짜 및 반환 날짜에 대한 추가 날짜 테이블을 만들 수 있습니다. 그런 다음, 이러한 관계 간에 활성 관계를 만들 수 있습니다.

다이어그램 뷰의 여러 날짜 테이블 관계

이 예제에서는 ShipCalendar라는 다른 날짜 테이블을 만들어 졌습니다. 물론 이는 추가 날짜 열을 만드는 것을 의미하며, 이러한 날짜 열은 다른 날짜 테이블에 있기 때문에 일정 테이블의 동일한 열과 차별화하는 방식으로 이름을 지정합니다. 예를 들어 ShipYear, ShipMonth, ShipQuarter라는 열을 만들 수 있습니다.

피벗 테이블을 만들고 값에 총 판매 측정값을 놓고 ROWS에 ShipFiscalYear 및 ShipFiscalQuarter를 놓는 경우 비활성 관계를 만들 때와 배송 날짜별 특별 총 판매량 계산 필드를 만들 때와 동일한 결과가 표시됩니다.

배송 달력을 사용한 배송일 기준 총 판매액 피벗 테이블 피벗 테이블 필드 목록

이러한 각 접근 방식은 신중하게 고려해야 합니다. 단일 날짜 테이블과 여러 관계를 사용하는 경우 USERELATIONSHIP 함수를 사용하여 비활성 관계를 전송하는 특별한 측정값을 만들어야 할 수 있습니다. 반면에 필드 목록에서 여러 날짜 테이블을 만드는 것은 혼란스러울 수 있으며 데이터 모델에 테이블이 더 수록 메모리가 더 많이 필요하게 됩니다. 가장 적합한 것을 실험합니다.

Date Table 속성

Date Table 속성은 TOTALYTDTime-Intelligence PREVIOUSMONTH 및 DATESBETWEEN과 같은 함수를 올바르게 작동하기 위해 필요한 메타데이터를 설정합니다. 이러한 함수 중 하나를 사용하여 계산을 실행할 때 Power Pivot 수식 엔진은 필요한 날짜를 어디로 이동해야 하는지 알고 있습니다.

경고: 이 속성이 설정되지 않은 경우 DAX Time-Intelligence 함수를 사용하는 측정값이 올바른 결과를 반환하지 않을 수 있습니다.

Date Table 속성을 설정할 때 날짜 테이블과 날짜(datetime) 데이터 형식의 날짜 열을 지정합니다.

날짜 테이블로 표시 대화 상자

방법: 날짜 테이블 속성 설정

  1. PowerPivot 창에서 일정 테이블을 선택합니다.

  2. 디자인 탭에서 날짜 표로 표시를 클릭합니다.

  3. 날짜 테이블로 표시 대화 상자에서 고유한 값과 날짜 데이터 형식이 있는 열을 선택합니다.

시간 작업

날짜 데이터 형식이 있는 모든 날짜 Excel SQL Server 숫자입니다. 해당 숫자에 포함된 숫자는 시간을 참조하는 숫자입니다. 대부분의 경우 각 행과 모든 행에 대한 시간은 자정입니다. 예를 들어 Sales 팩트 테이블의 DateTimeKey 필드에 10/19/2010 12:00:00:00 AM과 같은 값이 있는 경우 값이 일간 정밀도 수준에 해당합니다. DateTimeKey 필드 값에 시간(예: 10/19/2010 8:44:00 AM)이 포함되어 있는 경우 값이 분 수준의 정밀도에 해당합니다. 값은 시간 수준 정밀도 또는 초 정밀도 수준일 수도 있습니다. 시간 값의 정밀도 수준은 날짜 테이블을 만드는 방법과 날짜 테이블과 팩트 테이블 간의 관계에 상당한 영향을 미치게 됩니다.

하루 수준의 정밀도 또는 시간 수준으로 데이터를 집계할지 여부를 결정해야 합니다. 즉, 날짜 테이블의 열(예: 아침, 오후 또는 시간)을 피벗 테이블의 행, 열 또는 필터 영역에서 시간 날짜 필드로 사용할 수 있습니다.

참고: 일수는 DAX Time Intelligence 함수가 사용할 수 있는 가장 작은 시간 단위입니다. 시간 값으로 작업할 필요가 없는 경우 일 수를 최소 단위로 사용할 데이터의 정밀도를 줄여야 합니다.

데이터를 시간 수준으로 집계하려는 경우 날짜 테이블에 시간이 포함된 날짜 열이 필요합니다. 실제로 날짜 범위의 매년 매시간 또는 매분마다 행이 하나씩 있는 날짜 열이 필요합니다. 팩트 테이블의 DateTimeKey 열과 날짜 테이블의 날짜 열 간에 관계를 만들기 위해 일치하는 값이 있어야 합니다. 상상할 수 있는 것 처럼, 많은 년을 포함하면 매우 큰 날짜 테이블을 만들 수 있습니다.

그러나 대부분의 경우 데이터를 하루로만 집계하려는 경우입니다. 즉, 연도, 월, 주 또는 주일과 같은 열을 피벗 테이블의 행, 열 또는 필터링 영역에서 필드로 사용할 수 있습니다. 이 경우 날짜 테이블의 날짜 열에는 앞에서 설명한 대로 1년 동안 매일 행 하나만 포함되어야 합니다.

날짜 열에 시간 수준의 정밀도가 포함되어 있지만 팩트 테이블과 날짜 테이블 간의 관계를 만들 수 있도록 날짜 수준으로만 집계되는 경우 날짜 열의 값을 일 값으로 잘라 새 열을 만들어 팩트 테이블을 수정해야 할 수 있습니다. 즉, 10/19/2010 8:44:00AM과 같은 값을 10/19/2010 12:00:00 AM으로 변환합니다. 그러면 값이 일치하기 때문에 이 새 열과 날짜 테이블의 날짜 열 간의 관계를 만들 수 있습니다.

예제를 살펴보겠습니다. 이 이미지는 Sales 팩트 테이블에 DateTimeKey 열을 보여줍니다. 이 테이블의 데이터에 대한 모든 집계는 연도, 월, 분기 등 일정 날짜 테이블의 열을 사용하여 하루 수준으로만 필요합니다. 값에 포함된 시간은 실제 날짜와 관련이 없습니다.

날짜/시간_키 열

이 데이터를 시간 수준으로 분석할 필요가 없습니다. 일정 날짜 테이블에 매시간에 한 행과 매년 매분마다 한 행을 포함할 필요가 없습니다. 따라서 날짜 테이블의 날짜 열은 다음과 같습니다.

Power Pivot의 날짜 열

Sales 테이블의 DateTimeKey 열과 일정 테이블의 날짜 열 간의 관계를 만들 경우 판매 팩트 테이블에 새 계산된 열을 만들고 TRUNC 함수를 사용하여 DateTimeKey 열의 날짜 및 시간 값을 일정 테이블의 날짜 열의 값과 일치하는 날짜 값으로 바를 수 있습니다. 수식은 다음과 같습니다.

=TRUNC([DateTimeKey],0)

이렇게 하면 DateTimeKey 열의 날짜가 있는 새 열(DateKey라는 이름)과 각 행에 대해 오전 12:00:00의 시간이 표시됩니다.

날짜_키 열

이제 이 새(DateKey) 열과 일정 테이블의 날짜 열 간에 관계를 만들 수 있습니다.

마찬가지로 DateTimeKey 열의 시간 정밀도를 시간 수준의 정밀도로 줄이는 Sales 테이블에서 계산된 열을 만들 수 있습니다. 이 경우 TRUNC 함수는 작동하지 않지만 다른 DAX 날짜 및 시간 함수를 사용하여 새 값을 1시간 수준의 정밀도로 추출하고 다시 컨캐이팅할 수 있습니다. 이러한 수식을 사용할 수 있습니다.

= DATE(YEAR([DateTimeKey]), MONTH([DateTimeKey]), DAY([DateTimeKey]) + TIME(HOUR([DateTimeKey]), 0, 0)

새 열은 다음과 같습니다.

날짜/시간_키 열

날짜 테이블의 날짜 열에 시간 정밀도 수준에 대한 값이 제공된 경우 해당 날짜 간에 관계를 만들 수 있습니다.

날짜를 더 많이 사용 가능

날짜 테이블에서 만든 날짜 열의 상당수는 다른 필드에 필요하지만 분석에 유용하지는 않습니다. 예를 들어 이 문서 전체에서 참조하고 표시한 Sales 테이블의 DateKey 필드는 모든 트랜잭션에 대해 특정 날짜 및 시간에서 발생하는 것으로 기록하기 때문에 중요합니다. 그러나 분석 및 보고의 시점에서 피벗 테이블 또는 보고서에서 행, 열 또는 필터 필드로 사용할 수 없습니다.

마찬가지로 이 예제에서는 일정 테이블의 날짜 열이 매우 유용하고 실제로 중요하지만 피벗 테이블의 차원으로 사용할 수 없습니다.

테이블과 열을 가능한 한 유용하게 유지하고 피벗 테이블 또는 Power View 필드 목록을 더 쉽게 탐색하기 위해 클라이언트 도구에서 불필요한 열을 숨기는 것이 중요합니다. 특정 테이블도 숨길 수도 있습니다. 앞에서 보여준 휴일 테이블에는 일정 테이블의 특정 열에 중요한 공휴일 날짜가 포함되어 있지만, 휴일 테이블의 날짜 및 공휴일 열은 피벗 테이블의 필드로 사용할 수 없습니다. 여기서도 필드 목록을 더 쉽게 탐색할 수 있도록 전체 휴일 테이블을 숨길 수 있습니다.

날짜를 작업하는 또 다른 중요한 측면은 규칙 이름입니다. 원하는 경우 Power Pivot에서 테이블과 열의 이름을 지정할 수 있습니다. 그러나 특히 통합 문서가 다른 사용자와 공유되는 경우 명명 규칙을 사용하면 필드 목록뿐만 아니라 Power Pivot 및 DAX 수식에서도 테이블과 날짜를 쉽게 식별할 수 있습니다.

데이터 모델에 날짜 테이블이 있는 후 데이터를 가장 많이 사용할 수 있는 측정값 만들기를 시작할 수 있습니다. 일부는 현재 연도의 판매 합계를 합산하는 것만큼 간단할 수 있으며, 다른 날짜는 특정 범위의 고유한 날짜를 필터링해야 하는 더 복잡할 수 있습니다. Power Pivot 및 Time Intelligence 함수의 측정값에 대해 자세히 알아보습니다.

부록

텍스트 데이터 형식 날짜를 날짜 데이터 형식으로 변환

경우에 따라 트랜잭션 데이터가 있는 팩트 테이블에 텍스트 데이터 형식의 날짜가 포함될 수 있습니다. 즉, 2012-12-04T11:47:09로 나타나는 날짜는 사실상 날짜가 아니며 Power Pivot에서 이해할 수 있는 날짜 유형이 아는 것은 아 없습니다. 실제로 날짜처럼 읽는 텍스트입니다. 팩트 테이블의 날짜 열과 날짜 테이블의 날짜 열 간의 관계를 만들하려면 두 열 모두 날짜 데이터 형식이 되어야 합니다.

일반적으로 텍스트 데이터 형식인 날짜 열의 데이터 형식을 날짜 데이터 형식으로 변경하려고 할 때 Power Pivot는 날짜를 해석하고 자동으로 실제 날짜 데이터 형식으로 변환할 수 있습니다. Power Pivot에서 데이터 형식 변환을 할 수 없는 경우 형식 불일치 오류가 발생합니다.

그러나 날짜를 여전히 실제 날짜 데이터 형식으로 변환할 수 있습니다. 새 계산 열을 만들고 DAX 수식을 사용하여 텍스트 문자열에서 연도, 월, 일, 시간 등을 구문 분석한 다음 Power Pivot가 실제 날짜로 읽을 수 있는 방식으로 다시 함께 연계할 수 있습니다.

이 예제에서는 Sales라는 팩트 테이블을 Power Pivot으로 가져왔다. DateTime이라는 열이 포함되어 있습니다. 값은 이처럼 표시됩니다.

팩트 테이블의 날짜/시간 열

서식 그룹 Power Pivot의 홈 탭의 데이터 형식을 살펴보면 텍스트 데이터 형식인 것으로 표시됩니다.

리본 메뉴의 데이터 형식

데이터 형식이 일치하지 않는 경우 DateTime 열과 날짜 테이블의 날짜 열 간에 관계를 만들 수 없습니다. 데이터 형식을 날짜로변경하려고 하는 경우 형식 불일치 오류가 발생합니다.

불일치 오류

이 경우 Power Pivot는 데이터 형식을 텍스트에서 날짜로 변환할 수 없습니다. 이 열은 계속 사용할 수 있지만 실제 날짜 데이터 형식에 들어가기 위해 텍스트를 구문 분석하고 Power Pivot에서 날짜 데이터 형식을 만들 수 있는 값으로 다시 만드는 새 열을 만들어야 합니다.

이 문서의 앞부분에 있는 시간 작업 섹션에서 다음을 기억하세요. 분석이 하루 중 시간 수준의 정밀도로 설정될 필요가 없는 한 팩트 테이블의 날짜를 하루 수준의 정밀도로 변환해야 합니다. 이를 염두에 두어 새 열의 값을 하루 정밀도 수준(시간 제외)으로 설정하기를 원합니다. DateTime 열의 값을 날짜 데이터 형식으로 변환하고 다음 수식을 사용하여 정밀도의 시간 수준을 제거할 수 있습니다.

=DATE(LEFT([DateTime],4), MID([DateTime],6,2), MID([DateTime],9,2))

그러면 새 열(이 경우 Date)이 표시됩니다. Power Pivot는 날짜가 될 값을 감지하고 데이터 형식을 날짜로 자동으로 설정하기도 합니다.

팩트 테이블의 날짜 열

정밀도의 시간 수준을 유지하려는 경우 수식을 확장하여 시간, 분 및 초를 포함하기만 하면 됩니다.

=DATE(LEFT([DateTime],4), MID([DateTime],6,2), MID([DateTime],9,2)) +

TIME(MID([DateTime],12,2), MID([DateTime],15,2), MID([DateTime],18,2))

날짜 데이터 형식의 날짜 열이 이제 날짜와 날짜 열 간의 관계를 만들 수 있습니다.

추가 리소스

Power Pivot의 날짜

Power Pivot의 계산

퀵 스타트: 30분 내에 DAX 기본 익히기

데이터 분석 식 참조

DAX 리소스 센터

도움이 더 필요하세요?

더 많은 옵션을 원하세요?

구독 혜택을 살펴보고, 교육 과정을 찾아보고, 디바이스를 보호하는 방법 등을 알아봅니다.

커뮤니티를 통해 질문하고 답변하고, 피드백을 제공하고, 풍부한 지식을 갖춘 전문가의 의견을 들을 수 있습니다.

이 정보가 유용한가요?

언어 품질에 얼마나 만족하시나요?
사용 경험에 어떠한 영향을 주었나요?
제출을 누르면 피드백이 Microsoft 제품과 서비스를 개선하는 데 사용됩니다. IT 관리자는 이 데이터를 수집할 수 있습니다. 개인정보처리방침

의견 주셔서 감사합니다!

×