metric_column의 timestamp_column에 대한 음수가 아닌 도함수를 계산합니다.
이 함수는 표준 SQL의 일부가 아닌 ClickHouse 전용 윈도우 함수입니다.
각 행의 도함수는 timestamp_column이 아닌 윈도우의 ORDER BY 절에 의해 결정되는 윈도우 평가 순서상의 이전 행을 기준으로 계산됩니다.
timestamp_column 인수는 현재 행과 이전 행 사이의 경과 시간을 측정하는 용도로만 사용되며, 행의 정렬 순서를 결정하지 않습니다.
결과는 INTERVAL당 메트릭의 변화율이며, 음수 값은 0으로 고정됩니다.
이 함수는 카운터와 같이 단조 증가하는 메트릭에 유용합니다. 이러한 메트릭에서 값의 감소는 실제 음수 변화율이 아닌 카운터 재설정을 나타내는 경우가 많습니다.
구문
nonNegativeDerivative(metric_column, timestamp_column[, INTERVAL X UNITS])
OVER ([[PARTITION BY grouping_column] [ORDER BY sorting_column]
[ROWS, RANGE, or GROUPS expression_to_bound_rows_within_the_group]] | [window_name])
FROM table_name
WINDOW window_name AS ([PARTITION BY grouping_column] [ORDER BY sorting_column] [ROWS, RANGE, or GROUPS expression_to_bound_rows_within_the_group])윈도우 함수 구문에 대한 자세한 내용은 윈도우 함수 - 구문을 참조하십시오.
인수
metric_column— 도함수를 계산할 컬럼. (U)Int* 또는 Float*.timestamp_column— 윈도우 평가 순서에서 현재 행과 이전 행 사이의 경과 시간을 측정하는 데 사용되는 컬럼입니다. 행의 정렬은 윈도우의ORDER BY가 담당하며, 일반적으로 동일한 컬럼을 사용해 정렬해야 합니다. DateTime 또는 DateTime64.INTERVAL X UNITS— 선택 사항. 결과를 스케일링할 시간 단위입니다. 기본값은INTERVAL 1 SECOND입니다. 고정 길이 단위(NANOSECOND,MICROSECOND,MILLISECOND,SECOND,MINUTE,HOUR,DAY,WEEK)만 지원되며, 가변 길이 단위(MONTH,QUARTER,YEAR)는 예외를 발생시킵니다.
반환 값
각 행의 값은 다음과 같이 계산됩니다:
- 첫 번째 행의 경우:
0 - 이전 행 이후 경과 시간이 양수가 아닌 경우(즉,
\text{timestamp}_i - \text{timestamp}_{i-1} \le 0, 내림차순 정렬 또는 타임스탬프 중복 시):0 - 그 외의 경우:
{\text{metric}_i - \text{metric}_{i-1} \over \text{timestamp}_i - \text{timestamp}_{i-1}} * \text{interval}
계산된 값이 음수이면 0으로 고정됩니다. 반환 타입은 Float64입니다.
예시
다음 예시는 센서 측정값의 초당 변화율을 계산합니다.
세 번째 행의 값이 110에서 105로 감소하므로 해당 행의 도함수는 0으로 고정됩니다.
CREATE TABLE sensor_readings
(
`sensor_id` UInt32,
`ts` DateTime,
`reading` Float64
)
ENGINE = Memory;
INSERT INTO sensor_readings VALUES
(1, '2024-01-01 00:00:00', 100),
(1, '2024-01-01 00:00:10', 110),
(1, '2024-01-01 00:00:20', 105),
(1, '2024-01-01 00:00:30', 130);SELECT
ts,
reading,
nonNegativeDerivative(reading, ts) OVER (ORDER BY ts ASC) AS deriv_per_second
FROM sensor_readings
ORDER BY ts ASC; ┌──────────────────ts─┬─reading─┬─deriv_per_second─┐
1. │ 2024-01-01 00:00:00 │ 100 │ 0 │
2. │ 2024-01-01 00:00:10 │ 110 │ 1 │
3. │ 2024-01-01 00:00:20 │ 105 │ 0 │
4. │ 2024-01-01 00:00:30 │ 130 │ 2.5 │
└─────────────────────┴─────────┴──────────────────┘