binary operatorsΒΆ

support following binary operators:

  • + (addition)

  • - (subtraction)

  • * (multiplication)

  • / (division)

  • % (modulo)

  • ^ (power/exponentiation)

For example, divide one metric with another:

from pangolier.metrics import Metric
from pangolier.functions import range_function

rate = range_function('rate')
print((
    rate(
        Metric('foo').filter(
            group='canary'
        ),
        timespan='5m'
    ) / rate(
        Metric('bar').filter(
            group='canary'
        ),
        timespan='5m'
    )
).to_str(pretty=True))

output:

rate(
    foo{
        group="canary"
    }[5m]
) / rate(
    bar{
        group="canary"
    }[5m]
)

For operation with modifier:

from pangolier.metrics import Metric, BinOp, GroupLeft

print(BinOp(
    '*',
    Metric('foo'),
    Metric('bar'),
    on=['interface', 'job'],
    group=GroupLeft('node', 'resource'),
).to_str(pretty=True))

output:

foo * on(
    interface, job
) group_left(
    node, resource
) bar