메모
이 함수는 의미 없는 결과를 반환할 가능성이 있으므로 시각적 계산
날짜 열 입력의 경우 지정된 시작 날짜로 시작하고 지정된 날짜 간격의 수와 형식에 대해 계속되는 날짜 열이 포함된 테이블을 반환합니다.
달력 입력의 경우 지정된 시작 날짜로 시작하고 지정된 수 및 날짜 간격 유형에 대해 계속되는 테이블을 반환합니다. 테이블에는 모든 기본 태그가 지정된 열과 모든 시간 관련 열이 포함됩니다.
이 함수는 필터로 CALCULATE 함수에 전달하는 데 적합합니다. 식을 사용하여 일, 월, 분기 또는 연도와 같은 표준 날짜 간격을 기준으로 식을 필터링합니다.
구문
DATESINPERIOD(<dates> or <calendar>, <start_date>, <number_of_intervals>, <interval>[, <endbehavior>])
매개 변수
| 변수 | 정의 |
|---|---|
dates or calendar |
날짜 또는 달력 참조가 포함된 열 |
start_date |
날짜 식입니다. 달력 구문을 사용하는 경우 Day 범주에 태그가 지정된 기본 열과 동일한 데이터 형식을 사용하세요. |
number_of_intervals |
날짜를 추가하거나 뺄 간격 수를 지정하는 정수입니다. |
interval |
날짜를 이동할 간격입니다. 간격 값은 다음 DAYWEEKMONTHQUARTERYEAR중 하나일 수 있습니다. 주 일정에만 사용할 수 있습니다. |
endbehavior |
일정 참조가 제공되는 경우에만 적용됩니다. Optional. 대상 간격이 원본 범위보다 긴 경우 종료 날짜가 정렬되는 방식을 제어합니다. 유효한 값은 PRECISE(기본값) 및 ENDALIGNED입니다. |
반환 값
날짜 열 입력의 경우 날짜 값의 단일 열을 포함하는 테이블입니다.
일정 입력의 경우 모든 기본 태그가 지정된 열과 모든 시간 관련 열이 포함된 테이블입니다.
비고
가장 일반적인 사용 사례에서
dates표시된 날짜 테이블의 날짜 열에 대한 참조입니다.number_of_intervals지정한 숫자가 양수이면 날짜가 정시에 이동됩니다. 숫자가 음수이면 날짜가 시간에서 뒤로 이동합니다.interval매개 변수는 열거형입니다. 유효한 값은DAY,WEEK,MONTH,QUARTER,YEAR입니다. 열거형이므로 값이 문자열로 전달되지 않습니다. 따라서 따옴표 안에 묶지 마십시오.endbehavior제공되면(달력 시간 인텔리전스에만 해당) DATESINPERIOD 값을 'sExtension매개 변수로 DATEADD전달합니다. 자세한 예제는 endbehavior 이해 를 참조하세요.날짜 열 입력의 경우 반환된 테이블에는 열에
dates저장된 날짜만 포함될 수 있습니다. 예를 들어dates열이 2017년 7월 1일부터 시작되고start_date값이 2016년 7월 1일인 경우 반환된 테이블은 2017년 7월 1일부터 시작됩니다.달력 입력의 경우 태그가 지정된 일 열에 입력 날짜를 찾을 수 없으면 결과가 정의되지 않습니다. 유효한 날짜 입력을 제공하세요.
일정 입력의 경우 시작 날짜에 태그가 지정된 날짜 열과 동일한 데이터 형식 및 형식을 사용합니다. 예를 들어 열이 YYYY-Sn-Qn-Mnn-Wnn-Dnn 형식을 사용하는 경우(예: "2014-S2-Q4-M11-W45-D03" ) 시작 날짜는 동일한 형식(예: "2015-S2-Q4-M11-W45-D03")을 따라야 합니다. 그렇지 않으면 동작이 정의되지 않습니다.
이 함수는 계산 열 또는 RLS(행 수준 보안) 규칙에서 사용되는 경우 DirectQuery 모드에서 사용할 수 없습니다.
예제
다음 Sales 테이블 측정값 정의는 DATESINPERIOD 함수를 사용하여 이전 연도(PY)의 수익을 계산합니다.
수식은 MAX 함수를 사용합니다. 이 함수는 필터 컨텍스트에 있는 최신 날짜를 반환합니다. 따라서 DATESINPERIOD 함수는 지난 해의 최신 날짜부터 시작하는 날짜 테이블을 반환합니다.
이 문서의 예제는 Adventure Works DW 2020 Power BI Desktop 모델 샘플과 함께 사용할 수 있습니다. 모델을 얻으려면 DAX 샘플 모델참조하세요.
Revenue PY =
CALCULATE (
SUM ( Sales[Sales Amount] ),
DATESINPERIOD ( 'Date'[Date], MAX ( 'Date'[Date] ), -1, YEAR )
)
보고서는 2020년 6월로 필터링됩니다. MAX 함수는 2020년 6월 30일을 반환합니다. DATESINPERIOD 함수는 2019년 7월 1일부터 2020년 6월 30일까지 날짜 범위를 반환합니다. 지난 해인 2020년 6월 30일부터 날짜 값의 1년입니다.
일정 기반 시간 인텔리전스의 예
다음 Sales 테이블 측정값 정의는 DATESINPERIOD 함수를 사용하여 이전 연도(PY)의 수익을 계산합니다.
수식은 MAX 함수를 사용합니다. 이 함수는 필터 컨텍스트에 있는 최신 날짜를 반환합니다. 따라서 이 함수는 DATESINPERIOD 지난 해의 최신 날짜부터 기본 열을 반환합니다. DateKey는 날짜 형식이 아닌 열로 "Day" 범주에 태그를 지정할 수 있음을 보여 주는 예제로 사용됩니다.
이 문서의 예제는 Adventure Works DW 2020 Power BI Desktop 모델 샘플과 함께 사용할 수 있습니다. 모델을 얻으려면 DAX 샘플 모델참조하세요.
Revenue PY =
CALCULATE (
SUM ( Sales[Sales Amount] ),
DATESINPERIOD ( FiscalCalendar, MAX ( 'Date'[DateKey] ), -1, YEAR )
)
보고서는 2020년 6월로 필터링됩니다. MAX 함수는 2020년 6월 30일을 반환합니다. DATESINPERIOD 그런 다음 2019년 7월 1일부터 2020년 6월 30일까지의 범위를 반환합니다. 작년인 2020년 6월 30일부터 1년입니다.
달력 시간 인텔리전스에 대한 endbehavior 매개 변수 이해
내부적으로 동일한 간격, DATESINPERIOD 간격 수 및 endbehavior 전달된 DATESINPERIOD간격으로 호출 DATEADD 하여 끝 경계를 계산합니다. 음수(창을 뒤로 굴릴 때 일반적)인 경우 number_of_intervals 함수는 범위를 (endDate, startDate]반환합니다. 여기서 endDate 는 달력 컨텍스트를 이동한 후 반환 DATEADD 되는 날짜입니다 <endbehavior>startDate<number_of_intervals><interval>. 양수 값의 경우 반환된 간격은 .입니다 [startDate, endDate).
-
PRECISE에서 반환 DATEADD한 정확한 값을 유지합니다. -
ENDALIGNED는 의미 체계를 DATEADDEndAligned따라 원본 선택이 이미 자체 끝에 도달한 대상 기간의 끝으로 경계를 이동합니다. 이는 필터 컨텍스트가 마침표의 마지막 날에 이미 종료되고 뒤로 보이는 창(예: 6개월)이 이동된 기간의 마지막 날을 경계로 사용하려는 경우에 유용합니다.
EndAligned를 사용하여 예제
EndAlignedTest =
CALCULATE (
COUNTROWS ( SUMMARIZE ( Sales, 'Date'[MonthName] ) ),
DATESINPERIOD ( 'Gregorian Calendar', MAX ( 'Date'[Date] ), -6, MONTH, EndAligned )
)
이 측정값은 현재 컨텍스트를 기준으로 지난 6개월 동안의 고유한 월 이름을 계산합니다. 이 EndAligned경우 창은 컨텍스트가 이미 월 경계에서 종료되는 경우 이동된 월의 끝에 경계를 유지하여 포함할 추가 후행 날짜를 Precise 방지합니다(예 Feb 28 : 이동 Aug 28, 끌어오기 Aug 29–31 및 효과적으로 범위를 7개월로 확장). 이 설정은 EndAligned 해당 시나리오에서 개수를 6으로 유지합니다.
다음 비교에서는 현재 필터 컨텍스트가 2023년 2월 28 일에 종료되고 식이 호출 DATESINPERIOD(..., -6, MONTH, <endbehavior>)된다고 가정합니다. 기능 범위는 (endDate, startDate]포함되는 endDate 동안 startDate 반환된 DATEADD 값이 제외됩니다.
| endbehavior |
DATEADD endDate |
DATESINPERIOD 레인지 | 측정값에서 반환된 월 이름 |
|---|---|---|---|
Precise |
2022-08-28 |
(2022-08-28, 2023-02-28] → 2022년 8월 29일 – 2023년 2월 28일 |
8월, 9월, 10월, 11월, 12월, 1월, 2월 (7) |
EndAligned |
2022-08-31 |
(2022-08-31, 2023-02-28] → 2022년 9월 1일 – 2023년 2월 28일 |
9월, 10월, 11월, 12월, 1월, 2월 (6) |
클래식 및 달력 시간 인텔리전스 간의 동작 차이
내부적으로 동일한 DATESINPERIOD 논리 DATEADD 를 사용하여 시작 날짜부터 종료 날짜를 확인한 다음 범위를 계산합니다. 일부 시나리오에서는 클래식 및 달력 시간 인텔리전스를 비교할 때 다른 결과를 얻을 수 있습니다. 예를 들어 음력 연도 DATEADD 에서는 날짜 세분성에서 다른 결과를 생성하므로 결과 DATESINPERIOD 도 달라집니다. 달력 기반 시간 인텔리전스에서 2008년 2월 29일을 1년 뒤로 이동하면 2007년 3월 1일이 60일로 취급되기 때문입니다. 클래식 시간 인텔리전스에서 동일한 교대조는 2007년 2월 28일을 반환합니다. 종료 날짜가 다르므로 출력 DATESINPERIOD 도 달라집니다. 해결 방법은 종료 날짜를 계산하는 데 달력(달력,DATEADD 연도< 수, 월)을 사용하는 >것입니다. 예를 들어 1년에 달력에 13개월이 있는 경우 (일정, -13, 월)을 사용합니다 DATEADD. 이 방법은 월별로 변경되므로 2008년 2월은 2007년 2월로 이동합니다. 그런 다음 새 종료 날짜에 따라 사용자 지정 datesInPeriod를 작성합니다.