Applies ToMicrosoft 365용 Excel Excel 2024 Excel 2021 Excel 2019 Excel 2016

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

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

  • 파워 피벗을 사용하여 데이터 모델에 날짜 테이블을 추가하는 방법입니다.

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

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

  • 시간을 사용하여 작업하는 방법.

이 문서는 Power Pivot을 접하는 사용자를 위한 것입니다. 그러나 데이터를 가져오고, 관계를 만들고, 계산 열 및 측정값을 만드는 것을 이미 잘 이해하는 것이 중요합니다.

이 문서에서 측정 수식에서 DAX Time-Intelligence 함수를 사용하는 방법을 설명하지 않습니다. DAX 시간 인텔리전스 함수를 사용하여 측정값을 만드는 방법에 대한 자세한 내용은 Excel의 파워 피벗에서 시간 인텔리전스를 참조하세요.

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

내용

날짜 테이블 이해

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

Power View 보고서

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

날짜 테이블에는 날짜 및 시간의 다양한 표현이 포함될 수 있습니다. 예를 들어 날짜 테이블에는 피벗 테이블 또는 파워 뷰 보고서에서 데이터를 조각화하고 필터링할 때 필드 목록에서 필드로 선택할 수 있는 회계 연도, 월, 분기 또는 기간과 같은 열이 있는 경우가 많습니다.

Power View 필드 목록

Power View 필드 목록

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

예를 들어 찾아보려는 데이터에 2010년 2월 1일부터 2012년 11월 30일까지의 날짜가 있고 달력 연도를 보고하는 경우 2010년 1월 1일부터 2012년 12월 31일까지의 날짜 범위가 있는 날짜 테이블을 지정해야 합니다. 날짜 테이블의 매년에는 매년 모든 날짜가 포함되어야 합니다. 최신 데이터로 데이터를 정기적으로 새로 고치는 경우 종료 날짜를 1~2년 정도 실행하여 시간이 지남에 따라 날짜 테이블을 업데이트할 필요가 없습니다.

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

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

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

연도와 회계 연도를 모두 보고하는 경우 별도의 날짜 테이블을 만들 필요가 없습니다. 단일 날짜 테이블에는 역년, 회계 연도 및 13개의 4주 기간 달력에 대한 열이 포함될 수 있습니다. 중요한 것은 날짜 테이블에 포함된 모든 연도에 대한 연속된 날짜 집합이 포함되어 있다는 것입니다.

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

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

  • 관계형 데이터베이스 또는 기타 데이터 원본에서 가져옵니다.

  • Excel에서 날짜 테이블을 만든 다음 Power Pivot에서 새 테이블을 복사하거나 연결합니다.

  • Microsoft Azure Marketplace에서 가져옵니다.

이러한 각 사항을 좀 더 자세히 살펴보겠습니다.

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

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

테이블 가져오기 마법사

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

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

Excel에서 날짜 테이블 만들기

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

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

방법: Excel에서 날짜 테이블 만들기 및 데이터 모델에 복사

  1. Excel의 빈 워크시트에 있는 셀 A1에 열 머리글 이름을 입력하여 날짜 범위를 식별합니다. 일반적으로 Date,DateTime 또는 DateKey와 같습니다.

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

  3. 채우기 핸들을 클릭하고 끝 날짜가 포함된 행 번호로 끌어옵니다. 예를 들어 2016년 12월 31일입니다.

    Excel의 날짜 열

  4. 날짜 열의 모든 행(셀 A1의 머리글 이름 포함)을 선택합니다.

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

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

    Power Pivot의 날짜 열

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

  8. 파워 피벗의 탭에서 붙여넣기를 클릭합니다.

  9. 미리 보기 > 테이블 이름 붙여넣기에서 날짜 또는 일정과 같은 이름을 입력합니다. 열 머리글로 첫 번째 행 사용을 선택한 상태로 두고 확인을 클릭합니다.

    붙여넣기 미리 보기

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

    Power Pivot의 날짜 테이블

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

참고: 이름 날짜 는 파워 피벗의 키워드입니다. 파워 피벗 날짜에서 만든 테이블의 이름을 지정하는 경우 인수에서 테이블 이름을 참조하는 DAX 수식에 작은따옴표로 묶어야 합니다. 이 문서의 모든 예제 이미지 및 수식은 달력이라는 파워 피벗에서 만든 날짜 테이블을 참조 합니다.

이제 데이터 모델에 날짜 테이블이 있습니다. DAX를 사용하여 Year, Month 등과 같은 새 날짜 열을 추가할 수 있습니다.

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

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

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

팁: DAX를 아직 사용하지 않은 경우 빠른 시작 : Office.com 30분 안에 DAX 기본 사항 알아보 기를 통해 학습을 시작할 수 있습니다.

DAX 날짜 및 시간 함수

Excel 수식에서 날짜 및 시간 함수를 작업한 적이 있다면 날짜 및 시간 함수에 익숙할 것입니다. 이러한 함수는 Excel의 함수와 비슷하지만 몇 가지 중요한 차이점이 있습니다.

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

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

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

이러한 함수는 날짜 테이블에서 사용자 지정 날짜 열을 만들 때 자주 사용되므로 이해해야 합니다. 이러한 함수를 여러 개 사용하여 Year, Quarter, FiscalMonth 등에 대한 열을 만듭니다.

참고: DAX의 날짜 및 시간 함수는 Time Intelligence 함수와 동일하지 않습니다. Excel의 파워 피벗에서 시간 인텔리전스에 대해 자세히 알아보세요.

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

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

달력 연도에 대한 수식 예제

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

=YEAR([date])

이 수식에서 YEAR 함수는 Date 열의 값에서 연도를 반환합니다. Date 열의 값은 datetime 데이터 형식이므로 YEAR 함수는 연도를 반환하는 방법을 알고 있습니다.

연도 열

=MONTH([date])

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

월 열

분기

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

이 수식에서는 INT 함수를 사용하여 날짜 값을 정수로 반환합니다. INT 함수에 대해 지정하는 인수는 Month 열의 값으로, 2를 추가한 다음 3으로 나누어 분기를 1부터 4까지 가져옵니다.

분기 열

Month Name

=FORMAT([date],"mmmm")

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

월 이름 열

세 글자로 약어로 된 월 이름을 반환하려면 형식 인수에 "mmm"을 사용합니다.

요일

=FORMAT([date],"ddd")

이 수식에서는 FORMAT 함수를 사용하여 일 이름을 가져옵니다. 축약된 일 이름만 원하기 때문에 format 인수에 "ddd"를 지정합니다.

요일 열
샘플 피벗 테이블

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

샘플 피벗 테이블

회계 연도에 대한 수식 예제

Fiscal Year

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

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

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

회계 연도 열

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

회계 월

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

이 수식에서는 [Month] 값이 6보다 작거나 같은지 지정한 다음, 6을 사용하고 Month의 값을 추가합니다. 그렇지 않으면 [Month]의 값에서 6을 뺍니다.

회계 월 열

회계 분기

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

FiscalQuarter에 사용하는 수식은 역년도의 분기와 거의 동일합니다. 유일한 차이점은 [Month] 대신 [FiscalMonth]를 지정하는 것입니다.

회계 분기 열

휴일 또는 특별 날짜

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

휴일이나 특별한 날을 포함하는 것은 매우 간단합니다. Excel에서 포함할 날짜가 포함된 테이블을 만들 수 있습니다. 그런 다음 데이터 모델에 추가를 복사하거나 사용하여 데이터 모델에 연결된 테이블로 추가할 수 있습니다. 대부분의 경우 테이블과 Calendar 테이블 간에 관계를 만들 필요는 없습니다. 참조하는 모든 수식은 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 함수를 사용하여 Holidays 테이블의 휴일 열에서 값을 가져옵니다. 첫 번째 인수에서는 결과 값이 있는 열을 지정합니다. 휴일 테이블의 휴일 열은 반환하려는 값이므로 지정합니다.

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

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

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

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

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

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

공휴일 테이블

사용자 지정 달력 - 13개의 4주 기간

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

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

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

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

이 수식을 좀 더 신중하게 살펴보겠습니다.

먼저 다음과 같이 Date 열의 값을 정수로 반환하는 수식을 만듭니다.

=INT([date])

그런 다음 첫 번째 회계 연도의 첫 번째 일요일을 찾고 싶습니다. 2010년 7월 4일입니다.

주 열

이제 해당 값에서 40356(이전 회계 연도의 마지막 일요일인 2010년 6월 27일의 정수)을 빼서 달력 테이블의 일 시작 이후의 일 수를 다음과 같이 가져옵니다.

=INT([date]-40356)

그런 다음 다음과 같이 결과를 7(1주일의 일)로 나눕니다.

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

결과는 다음과 같습니다.

주 열

마침표

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

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

이 수식을 좀 더 신중하게 살펴보겠습니다.

먼저 다음과 같이 Week 열의 값을 정수로 반환하는 수식을 만듭니다.

=INT([Week])

그런 다음, 다음과 같이 해당 값에 3을 추가합니다.

=INT([Week]+3)

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

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

결과는 다음과 같습니다.

기간 열

기간 회계 연도

이 값은 기간 동안 회계 연도를 반환합니다.

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

이 수식을 좀 더 신중하게 살펴보겠습니다.

먼저 Period에서 값을 반환하고 12를 추가하는 수식을 만듭니다.

= ([Period]+12)

회계 연도에는 13개의 28일 기간이 있으므로 결과를 13으로 나눕니다.

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

테이블의 첫 해이므로 2010을 추가합니다.

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

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

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

결과는 다음과 같습니다.

기간 회계 연도 열

FiscalYear의 기간

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

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

이 수식은 좀 더 복잡하므로 더 잘 이해할 수 있는 언어로 먼저 설명하겠습니다. 이 수식에서는 값을 [Period]에서 13으로 나누어 연도의 마침표 번호(1-13)를 가져옵니다. 이 숫자가 0이면 13을 반환합니다.

먼저 Period에서 13까지 값의 나머지를 반환하는 수식을 만듭니다. 다음과 같이 MOD (수학 및 삼각 함수)를 사용할 수 있습니다.

=MOD([Period],13)

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

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

결과는 다음과 같습니다.

회계 연도의 기간 열

샘플 피벗 테이블

아래 이미지는 VALUES의 Sales 팩트 테이블에서 SalesAmount 필드가 있는 피벗 테이블과 ROWS의 달력 날짜 차원 테이블의 PeriodFiscalYear 및 PeriodInFiscalYear 필드를 보여 줍니다. SalesAmount는 회계 연도 및 회계 연도의 28일 기간별로 컨텍스트에 대해 집계됩니다.

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

관계

데이터 모델에서 날짜 테이블을 만들고 피벗 테이블 및 보고서에서 데이터 검색을 시작하고 날짜 차원 테이블의 열을 기반으로 데이터를 집계하려면 팩트 테이블과 트랜잭션 데이터 간의 관계를 만들어야 합니다.

날짜를 기준으로 관계를 만들어야 하므로 값이 datetime(날짜) 데이터 형식인 열 간에 관계를 만들어야 합니다.

팩트 테이블의 모든 날짜 값에 대해 날짜 테이블의 관련 조회 열에 일치하는 값이 포함되어야 합니다. 예를 들어 DateKey 열의 2012년 8월 15일 오전 12:00 값이 있는 Sales 팩트 테이블의 행(트랜잭션 레코드)에는 date(이름 달력) 테이블의 관련 날짜 열에 해당 값이 있어야 합니다. 이는 날짜 테이블의 날짜 열에 팩트 테이블에 가능한 날짜가 포함된 연속된 날짜 범위를 포함하려는 가장 중요한 이유 중 하나입니다.

다이어그램 뷰의 관계

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

참고: Power Pivot에서 두 테이블 간의 관계를 만들 수 없으면 날짜 필드에 날짜와 시간이 동일한 정밀도 수준으로 저장되지 않을 수 있습니다. 열 서식에 따라 값은 같을 수 있지만 다르게 저장됩니다. 시간 작업에 대해 자세히 알아보세요.

참고: 관계에서 정수 서로게이트 키를 사용하지 마세요. 관계형 데이터 원본에서 데이터를 가져올 때 날짜 및 시간 열은 서로게이트 키로 표현되는 경우가 많습니다. 이 열은 고유한 날짜를 나타내는 데 사용되는 정수 열입니다. 파워 피벗에서는 정수 날짜/시간 키를 사용하여 관계를 만들지 말고, 대신 날짜 데이터 형식이 있는 고유한 값이 포함된 열을 사용해야 합니다. 서로게이트 키의 사용은 기존 데이터 웨어하우스에서 모범 사례로 간주되지만 정수 키는 파워 피벗에 필요하지 않으며 피벗 테이블의 값을 다른 날짜 기간별로 그룹화하기가 어려울 수 있습니다.

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

여러 관계

경우에 따라 여러 관계를 만들거나 여러 날짜 테이블을 만들어야 할 수 있습니다. 예를 들어 Sales 팩트 테이블에 DateKey, ShipDate 및 ReturnDate와 같은 여러 날짜 필드가 있는 경우 모두 달력 날짜 테이블의 날짜 필드에 대한 관계를 가질 수 있지만 그 중 하나만 활성 관계일 수 있습니다. 이 경우 DateKey는 트랜잭션 날짜를 나타내므로 가장 중요한 날짜이므로 활성 관계로 가장 적합합니다. 다른 항목에는 비활성 관계가 있습니다.

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

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

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

비활성 관계

그러나 총 매출을 거래 날짜가 아니라 배송 날짜로 합산하려면 어떻게 해야 할까요? Sales 테이블의 ShipDate 열과 Calendar 테이블의 Date 열 간에 관계가 필요합니다. 해당 관계를 만들지 않으면 집계는 항상 트랜잭션 날짜를 기반으로 합니다. 그러나 하나만 활성화할 수 있지만 여러 관계를 가질 수 있으며 트랜잭션 날짜가 가장 중요하기 때문에 Calendar 테이블과의 활성 관계를 가져옵니다.

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

예를 들어 Sales 테이블의 ShipDate 열과 Calendar 테이블의 Date 열 사이에 비활성 관계가 있으므로 배송 날짜별로 총 판매량을 합산하는 측정값을 만들 수 있습니다. 다음과 같은 수식을 사용하여 사용할 관계를 지정합니다.

배송 날짜별 총 판매액:=CALCULATE(SUM(Sales[SalesAmount]), USERELATIONSHIP(Sales[ShipDate], Calendar[Date]))

이 수식은 SalesAmount에 대한 합계를 계산하지만 Sales 테이블의 ShipDate 열과 Calendar 테이블의 Date 열 간의 관계를 사용하여 필터링합니다.

이제 피벗 테이블을 만들고 Ship Date 측정값으로 총 판매량을 VALUES에, ROWS에 회계 연도 및 회계 분기를 배치하면 총합계가 동일하지만 회계 연도 및 회계 분기의 다른 모든 합계 금액은 거래 날짜가 아닌 배송 날짜를 기준으로 하므로 다릅니다.

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

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

여러 날짜 테이블

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

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

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

  • ReturnDate – 하나 이상의 항목이 반환된 날짜 및 시간이 포함된 입니다.

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

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

이 예제에서는 ShipCalendar라는 다른 날짜 테이블을 만들었습니다. 물론 이는 추가 날짜 열을 만드는 것을 의미하며, 이러한 날짜 열은 다른 날짜 테이블에 있으므로 Calendar 테이블의 동일한 열과 구분하는 방식으로 이름을 지정하려고 합니다. 예를 들어 ShipYear, ShipMonth, ShipQuarter 등의 열을 만들었습니다.

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

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

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

Date Table 속성

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

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

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

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

방법: Date Table 속성 설정

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

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

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

시간 작업

Excel 또는 SQL Server의 날짜 데이터 형식이 있는 모든 날짜 값은 실제로 숫자입니다. 해당 숫자에는 시간을 참조하는 숫자가 포함됩니다. 대부분의 경우 각 행과 모든 행에 대한 해당 시간은 자정입니다. 예를 들어 Sales 팩트 테이블의 DateTimeKey 필드에 2010년 10월 19일 오전 12:00:00과 같은 값이 있는 경우 이는 값이 전체 자릿수의 일 수준임을 의미합니다. DateTimeKey 필드 값에 포함된 시간이 있는 경우(예: 2010년 10월 19일 오전 8:44:00) 값이 분 단위 정밀도 수준임을 의미합니다. 값은 시간 수준 정밀도 또는 짝수 초 정밀도 수준일 수도 있습니다. 시간 값의 정밀도 수준은 날짜 테이블을 만드는 방법과 날짜 테이블과 팩트 테이블 간의 관계에 큰 영향을 미칩니다.

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

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

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

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

날짜 열에 전체 자릿수의 시간 수준이 포함되어 있지만, 팩트 테이블과 날짜 테이블 간의 관계를 만들려면 날짜 열의 값을 일 값으로 자르는 새 열을 만들어 팩트 테이블을 수정해야 할 수 있습니다. 즉, 2010년 10월 19일 오전 8:44:00과 같은 값을 2010년 10월 19일 오전 12:00:00으로 변환합니다. 그런 다음 값이 일치하므로 이 새 열과 날짜 테이블의 날짜 열 간에 관계를 만들 수 있습니다.

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

날짜/시간_키 열

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

Power Pivot의 날짜 열

Sales 테이블의 DateTimeKey 열과 Calendar 테이블의 Date 열 간에 관계를 만들려면 Sales 팩트 테이블에 새 계산 열을 만들고 TRUNC 함수를 사용하여 DateTimeKey 열의 날짜 및 시간 값을 Calendar 테이블의 Date 열에 있는 값과 일치하는 날짜 값으로 자릅니다. 수식은 다음과 같습니다.

=TRUNC([DateTimeKey],0)

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

날짜_키 열

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

마찬가지로 Sales 테이블에 DateTimeKey 열의 시간 전체 자릿수를 시간 정밀도 수준으로 줄이는 계산 열을 만들 수 있습니다. 이 경우 TRUNC 함수는 작동하지 않지만 다른 DAX 날짜 및 시간 함수를 사용하여 새 값을 1시간 정밀도 수준으로 추출하고 다시 연결할 수 있습니다. 다음과 같은 수식을 사용할 수 있습니다.

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

새 열은 다음과 같습니다.

날짜/시간_키 열

날짜 테이블의 Date 열에 시간 전체 자릿수 수준에 대한 값이 있는 경우 해당 열 간에 관계를 만들 수 있습니다.

날짜를 더 쉽게 사용할 수 있도록 만들기

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

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

테이블과 열을 최대한 유용하게 유지하고 피벗 테이블 또는 파워 뷰 보고서 필드 목록을 더 쉽게 탐색할 수 있도록 하려면 클라이언트 도구에서 불필요한 열을 숨기는 것이 중요합니다. 특정 테이블도 숨길 수 있습니다. 앞서 표시된 휴일 테이블에는 일정 테이블의 특정 열에 중요한 휴일 날짜가 포함되어 있지만 휴일 테이블 자체의 날짜 및 휴일 열은 피벗 테이블의 필드로 사용할 수 없습니다. 필드 목록을 더 쉽게 탐색할 수 있도록 여기에서는 전체 휴일 테이블을 숨길 수 있습니다.

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

데이터 모델에 날짜 테이블이 있으면 데이터를 최대한 활용할 수 있는 측정값 만들기를 시작할 수 있습니다. 일부는 현재 연도의 총 판매액을 합산하는 것만큼 간단할 수 있으며, 다른 일부는 특정 범위의 고유한 날짜를 필터링해야 하는 더 복잡할 수 있습니다. 파워 피벗 및 시간 인텔리전스 함수의 측정값에서 자세히 알아보세요.

부록

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

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

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

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

이 예제에서는 Sales라는 팩트 테이블을 파워 피벗으로 가져왔습니다. DateTime이라는 열이 포함되어 있습니다. 값은 다음과 같이 표시됩니다.

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

서식 그룹 Power Pivot의 홈 탭에서 데이터 형식을 살펴보면 텍스트 데이터 형식임을 알 수 있습니다.

리본 메뉴의 데이터 형식

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

불일치 오류

이 경우 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))

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

추가 리소스

Power Pivot의 날짜

Power Pivot의 계산

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

데이터 분석 식 참조

DAX 리소스 센터

도움이 더 필요하세요?

더 많은 옵션을 원하세요?

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

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