import numpy as np
class Median:
def __init__(self) -> None:
self.data = []
def step(self, value) -> None:
self.data.append(value)
def finalize(self):
return np.median(self.data)
class LowerQuartile:
def __init__(self) -> None:
self.data = []
def step(self, value) -> None:
self.data.append(value)
def finalize(self):
return np.quantile(self.data, 0.25)
class UpperQuartile:
def __init__(self) -> None:
self.data = []
def step(self, value) -> None:
self.data.append(value)
def finalize(self):
return np.quantile(self.data, 0.75)
class StandardDeviation:
def __init__(self) -> None:
self.data = []
def step(self, value) -> None:
self.data.append(value)
def finalize(self):
return np.std(self.data)
SqlExtentionAggregateFunc = [
('median', 1, Median),
('lower_quartile', 1, LowerQuartile),
('upper_quartile', 1, UpperQuartile),
('stdev', 1, StandardDeviation)
]