파워 쿼리 M의 기간은 일, 시간, 분 및 초로 표현된 두 시간 사이의 차이를 나타냅니다. 고객 상호 작용 간의 시간을 계산하든, 경과된 시간을 기준으로 레코드를 필터링하든, 동적 시간 기반 논리를 빌드하든 관계없이 지속 시간은 강력하고 지능적인 데이터 모델을 만드는 데 필수적입니다.
이 문서에서는 파워 쿼리 M에서 기간의 구조, 생성 및 조작을 살펴봅니다. 여기에는 사용자 고유의 데이터 워크플로에서 기간을 효과적으로 사용하는 데 도움이 되는 실용적인 예제 및 공유 팁이 포함되어 있습니다.
기간 만들기
기간은 함수에 의해 정의됩니다 #duration(<days>, <hours>, <minutes>, <seconds>) . 예를 들어 #duration(2, 3, 0, 0) 2일 및 3시간의 기간을 나타냅니다. 파워 쿼리 M은 컨텍스트 및 필요한 정밀도 수준에 따라 기간을 만드는 여러 가지 방법을 제공합니다.
#duration 함수 사용
기간을 만드는 가장 직접적인 방법은 구문을 사용하는 #duration(<days>, <hours>, <minutes>, <seconds>) 것입니다. 각 인수는 숫자여야 하며 결과는 기간 값입니다.
#duration(2, 5, 30, 0) // 2 days, 5 hours, 30 minutes
이 함수는 소수 자릿수 초도 지원합니다.
#duration(0, 0, 0, 1.75) // 1.75 seconds
날짜 및 시간 값에서 기간 만들기
한 날짜 및 시간 값을 다른 날짜와 시간 값에서 빼서 기간을 만들 수도 있습니다. 결과는 둘 사이의 시간 범위를 나타내는 기간입니다.
let
Source =
{
#date(2025, 7, 24) - #date(2025, 7, 23),
// Result: #duration(1, 0, 0, 0)
#time(12, 0, 0) - #time(11, 30, 30),
// Result: #duration(0, 0, 29, 30)
#datetime(2025, 7, 24, 12, 0, 0) - #datetime(2025, 7, 23, 12, 0, 0),
// Result: #duration(1, 0, 0, 0)
#datetimezone(2025, 7, 24, 12, 0, 0, 7, 0) - #datetimezone(2025, 7, 23, 10, 30, 0, 4, 0),
// Result: #duration(0, 22, 30, 0)
#datetime(2025, 7, 24, 12, 0, 0) - DateTime.From(#date(2025, 7, 23))
// Result: #duration(1, 12, 0, 0)
}
in
Source
비고
다른 날짜 및 시간 형식에서 하나의 날짜 및 시간 형식을 빼면(예: 값에서 date 값 빼기datetime) 오류가 발생합니다. 다른 날짜 및 시간 형식을 사용하여 기간을 결정해야 하는 경우 , Date.From, DateTime.From또는 DateTimeZone.From 함수를 사용하여 Time.From날짜 및 시간 형식 중 하나를 명시적으로 변경합니다.
호환되는 값에서 변환
함수는 Duration.From 호환되는 값을 기간으로 변환할 수 있습니다. 자세한 내용은 (값)으로Duration.From 이동합니다.
기간 작업
파워 쿼리 M에서 기간이 만들어지면 다양한 작업 및 함수를 사용하여 조작할 수 있습니다. 이러한 기능은 시간 기반 논리 및 계산을 위해 기간을 매우 다양하게 만듭니다.
산술 연산
기간은 표준 산술 연산을 지원합니다.
추가 및 빼기: 서로 또는 날짜 및 시간 값에서 기간을 추가하거나 뺍니다.
let Source = { #duration(1, 2, 0, 0) + #duration(0, 3, 30, 0), // Result: #duration(1, 5, 30, 0) #duration(1, 2, 0, 0) - #duration(0, 3, 30, 0), // Result: #duration(0, 22, 30, 0) #datetime(2025, 7, 24, 12, 0, 0) + #duration(0, 2, 0, 0), // Result: #datetime(2025, 7, 24, 14, 0, 0) #datetime(2025, 7, 24, 12, 0, 0) - #duration(0, 2, 0, 0), // Result: #datetime(2025, 7, 24, 10, 0, 0) #time(12, 0, 0) - #duration(0, 3, 30, 0) // Result: #time(8, 30, 0) } in Source부정: 기간을 부정하여 방향을 되돌릴 수 있습니다.
let Source = { #datetime(2025, 7, 24, 12, 0, 0) + -#duration(0, 2, 0, 0), // Result (subtracts two hours): #datetime(2025, 7, 24, 10, 0, 0) #datetime(2025, 7, 23, 12, 0, 0) - #datetime(2025, 7, 24, 12, 0, 0) // Result: -#duration(1, 0, 0, 0) } in Source
곱하기 및 나누기
기간을 숫자 값으로 곱하거나 나눌 수 있습니다.
let
Source = {
#duration(0, 2, 0, 0) * 2,
// Result (4 hours): #duration(0, 4, 0, 0)
#duration(1, 0, 0, 0) / 2
// Result (12 hours): #duration(0, 12, 0, 0)
}
in
Source
이 계산은 기간 크기 조정 또는 평균 시간 간격에 유용합니다.
비교
표준 비교 연산자를 사용하여 기간을 비교할 수 있습니다.
let
Source = #duration(1, 0, 0, 0) > #duration(0, 23, 59, 59)
// Result: true
in
Source
이 계산을 통해 경과된 시간을 기준으로 행 필터링과 같은 조건부 논리에서 기간을 사용할 수 있습니다.
형식 호환성
기간은 산술 식의 날짜 및 시간 값과 호환되지만 서로 교환할 수는 없습니다. 예를 들어 두 날짜 및 시간 값을 빼면 두 개의 날짜 및 시간 값을 duration추가하는 것은 유효하지 않습니다.
let
Source =
{
#datetime(2025, 7, 24, 12, 0, 0) - #datetime(2025, 7, 23, 12, 0, 0),
// Result: #duration(1, 0, 0, 0)
#datetime(2025, 7, 24, 12, 0, 0) + #datetime(2025, 7, 23, 12, 0, 0)
// Result: Error
}
in
Source
M의 기간 함수
파워 쿼리 M에는 기간 작업을 위한 기본 제공 함수 집합이 포함되어 있습니다. 이러한 함수는 변환, 구성 요소 추출 및 기간 값의 집계를 허용하므로 시간 기반 변환에 필수적인 도구가 됩니다.
Duration.From(값)
이 함수는 Duration.From 호환되는 값을 기간으로 변환합니다. 호환되는 값은 하루의 분수로 해석되는 숫자 또는 기간의 텍스트 표현으로 구성됩니다.
Duration.FromText 텍스트 표현 형식에 대한 자세한 내용은 로 이동합니다.
let
Source =
{
Duration.From(1.5),
// Result: 1.5 days = #duration(1, 12, 0, 0)
Duration.From("2.05:55:20.242")
// Result: #duration(2, 5, 55, 20.242)
}
in
Source
구성 요소 접근자
이러한 함수는 기간의 특정 부분을 추출합니다.
Duration.Days(<duration>)기간의 전체 일 수를 반환합니다.
Duration.Hours(<duration>)전체 일수를 초과하는 시간을 반환합니다.
Duration.Minutes(<duration>)전체 시간을 초과하는 시간(분)을 반환합니다.
Duration.Seconds(<duration>)전체 분을 초과하는 시간(초)을 반환합니다.
let
Source = #duration(2, 5, 30, 45),
TextFormat = Text.Format(
"Duration = #{0} days, #{1} hours, #{2} minutes, and #{3} seconds.",
{
Duration.Days(Source),
Duration.Hours(Source),
Duration.Minutes(Source),
Duration.Seconds(Source)
}
)
// Results: "Duration = 2 days, 5 hours, 30 minutes, and 45 seconds."
in
TextFormat
총 값 함수
이러한 함수는 소수 부분을 포함하여 단일 단위로 기간의 총 값을 반환합니다.
Duration.TotalDays(<duration>)Duration.TotalHours(<duration>)Duration.TotalMinutes(<duration>)Duration.TotalSeconds(<duration>)
let
Source =
{
Duration.TotalDays(#duration(1, 12, 0, 0)), // 1.5 days
Duration.TotalHours(#duration(1, 12, 0, 0)), // 36 hours
Duration.TotalMinutes(#duration(1, 12, 0, 0)), // 2160 minutes
Duration.TotalSeconds(#duration(1, 12, 0, 0)) // 129600 seconds
}
in
Source
기간 정규화
대부분의 경우 기간은 일, 시간(최대 23시간), 분(최대 59분) 및 초(최대 59.9999999초)로 구성됩니다. 그러나 경우에 따라 기간 매개 변수의 최대값을 초과할 수 있습니다. 이 경우 파워 쿼리 M은 다음 값을 자동으로 정규화합니다.
- 초 오버플로(분)
- 시간 단위로 분 오버플로
- 시간이 일로 오버플로
예를 들어 실행 중인 프로세스의 시작 날짜와 시간을 제공하는 열이 있다고 가정해 보겠습니다. 또한 프로세스가 완료되는 데 걸린 시간(초)을 보여 주는 열이 있습니다. 프로세스가 완료된 날짜와 시간을 보여 주는 세 번째 열을 만들려고 합니다.
let
Source = #table(type table[StartTime = datetime, Seconds = Int64.Type],
{
{#datetime(2025, 7, 25, 8, 0, 0), 5400},
{#datetime(2025, 7, 25, 13, 15, 0), 86400},
{#datetime(2025, 7, 24, 22, 30, 0), 172800}
}),
AddSeconds = Table.AddColumn(
Source,
"EndTime",
each [StartTime] + #duration(0, 0, 0, [Seconds]),
type datetime
)
in
AddSeconds
다음 표는 이러한 계산의 결과입니다.
따라서 프로세스가 발생한 시간(초)만 있었음에도 불구하고 파워 쿼리 M은 결과를 평가할 때 해당 기간 값을 분, 시간 및 일로 롤업합니다.
주, 월 및 연도를 나타냅니다.
기간은 고정 단위(일, 시간, 분, 초)를 기반으로 하므로 길이가 다른 주, 월 또는 연도의 기본 개념은 없습니다.
duration 파워 쿼리 M의 형식은 일정 규칙을 고려하지 않는 고정 구조입니다. 월 또는 연도에 걸친 정확한 기간을 위해 고정 기간을 사용하는 대신 다른 날짜와 시간을 뺍니다. 이 방법은 윤년, 다양한 월 길이 및 DST(일광 절약 시간)를 올바르게 처리합니다. 그러나 쿼리가 로컬(파워 쿼리 데스크톱) 또는 온라인(파워 쿼리 온라인)에서 실행되는지 여부에 따라 일부 날짜 및 시간 동작이 다를 수 있습니다. 자세한 내용은 현재 날짜 및 시간의 로컬, 고정 및 UTC 변형으로 이동합니다. 일반적으로 장기 계산에 고정된 기간을 사용하지 않도록 합니다.