File: aggfuncs.py

package info (click to toggle)
graphite-web 1.1.8-2
  • links: PTS, VCS
  • area: main
  • in suites: bookworm
  • size: 7,592 kB
  • sloc: javascript: 86,823; python: 11,977; sh: 61; makefile: 50
file content (34 lines) | stat: -rw-r--r-- 882 bytes parent folder | download | duplicates (3)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
from graphite.errors import InputParameterError
from graphite.functions import safe


aggFuncs = {
  'average': safe.safeAvg,
  'avg_zero': safe.safeAvgZero,
  'median': safe.safeMedian,
  'sum': safe.safeSum,
  'min': safe.safeMin,
  'max': safe.safeMax,
  'diff': safe.safeDiff,
  'stddev': safe.safeStdDev,
  'count': safe.safeLen,
  'range': lambda row: safe.safeSubtract(safe.safeMax(row), safe.safeMin(row)),
  'multiply': lambda row: safe.safeMul(*row),
  'last': safe.safeLast,
}


aggFuncAliases = {
  'rangeOf': aggFuncs['range'],
  'avg': aggFuncs['average'],
  'total': aggFuncs['sum'],
  'current': aggFuncs['last'],
}


def getAggFunc(func, rawFunc=None):
    if func in aggFuncs:
        return aggFuncs[func]
    if func in aggFuncAliases:
        return aggFuncAliases[func]
    raise InputParameterError('Unsupported aggregation function: %s' % (rawFunc or func))