# Class Aligner (2.22.2)

``Aligner(value)``

The `Aligner` specifies the operation that will be applied to the data points in each alignment period in a time series. Except for `ALIGN_NONE`, which specifies that no operation be applied, each alignment operation replaces the set of data values in each alignment period with a single value: the result of applying the operation to the data values. An aligned time series has a single data value at the end of each `alignment_period`.

An alignment operation can change the data type of the values, too. For example, if you apply a counting operation to boolean values, the data `value_type` in the original time series is `BOOLEAN`, but the `value_type` in the aligned result is `INT64`.

``````    This alignment is valid for
and `DELTA` metrics. If the selected alignment period
results in periods with no data, then the aligned value for
such a period is created by interpolation. The
`value_type` of the aligned result is the same as the
`value_type` of the input.
ALIGN_RATE (2):
Align and convert to a rate. The result is computed as
`rate = (y1 - y0)/(t1 - t0)`, or "delta over time". Think
of this aligner as providing the slope of the line that
passes through the value at the start and at the end of the
`alignment_period`.

This aligner is valid for `CUMULATIVE` and `DELTA`
metrics with numeric values. If the selected alignment
period results in periods with no data, then the aligned
value for such a period is created by interpolation. The
output is a `GAUGE` metric with `value_type` `DOUBLE`.

If, by "rate", you mean "percentage change", see the
ALIGN_INTERPOLATE (3):
Align by interpolating between adjacent points around the
alignment period boundary. This aligner is valid for
`GAUGE` metrics with numeric values. The `value_type` of
the aligned result is the same as the `value_type` of the
input.
ALIGN_NEXT_OLDER (4):
Align by moving the most recent data point before the end of
the alignment period to the boundary at the end of the
alignment period. This aligner is valid for `GAUGE`
metrics. The `value_type` of the aligned result is the
same as the `value_type` of the input.
ALIGN_MIN (10):
Align the time series by returning the minimum value in each
alignment period. This aligner is valid for `GAUGE` and
`DELTA` metrics with numeric values. The `value_type` of
the aligned result is the same as the `value_type` of the
input.
ALIGN_MAX (11):
Align the time series by returning the maximum value in each
alignment period. This aligner is valid for `GAUGE` and
`DELTA` metrics with numeric values. The `value_type` of
the aligned result is the same as the `value_type` of the
input.
ALIGN_MEAN (12):
Align the time series by returning the mean value in each
alignment period. This aligner is valid for `GAUGE` and
`DELTA` metrics with numeric values. The `value_type` of
the aligned result is `DOUBLE`.
ALIGN_COUNT (13):
Align the time series by returning the number of values in
each alignment period. This aligner is valid for `GAUGE`
and `DELTA` metrics with numeric or Boolean values. The
`value_type` of the aligned result is `INT64`.
ALIGN_SUM (14):
Align the time series by returning the sum of the values in
each alignment period. This aligner is valid for `GAUGE`
and `DELTA` metrics with numeric and distribution values.
The `value_type` of the aligned result is the same as the
`value_type` of the input.
ALIGN_STDDEV (15):
Align the time series by returning the standard deviation of
the values in each alignment period. This aligner is valid
for `GAUGE` and `DELTA` metrics with numeric values. The
`value_type` of the output is `DOUBLE`.
ALIGN_COUNT_TRUE (16):
Align the time series by returning the number of `True`
values in each alignment period. This aligner is valid for
`GAUGE` metrics with Boolean values. The `value_type` of
the output is `INT64`.
ALIGN_COUNT_FALSE (24):
Align the time series by returning the number of `False`
values in each alignment period. This aligner is valid for
`GAUGE` metrics with Boolean values. The `value_type` of
the output is `INT64`.
ALIGN_FRACTION_TRUE (17):
Align the time series by returning the ratio of the number
of `True` values to the total number of values in each
alignment period. This aligner is valid for `GAUGE`
metrics with Boolean values. The output value is in the
range [0.0, 1.0] and has `value_type` `DOUBLE`.
ALIGN_PERCENTILE_99 (18):
Align the time series by using `percentile
aggregation <https://en.wikipedia.org/wiki/Percentile>`__.
The resulting data point in each alignment period is the
99th percentile of all data points in the period. This
aligner is valid for `GAUGE` and `DELTA` metrics with
distribution values. The output is a `GAUGE` metric with
`value_type` `DOUBLE`.
ALIGN_PERCENTILE_95 (19):
Align the time series by using `percentile
aggregation <https://en.wikipedia.org/wiki/Percentile>`__.
The resulting data point in each alignment period is the
95th percentile of all data points in the period. This
aligner is valid for `GAUGE` and `DELTA` metrics with
distribution values. The output is a `GAUGE` metric with
`value_type` `DOUBLE`.
ALIGN_PERCENTILE_50 (20):
Align the time series by using `percentile
aggregation <https://en.wikipedia.org/wiki/Percentile>`__.
The resulting data point in each alignment period is the
50th percentile of all data points in the period. This
aligner is valid for `GAUGE` and `DELTA` metrics with
distribution values. The output is a `GAUGE` metric with
`value_type` `DOUBLE`.
ALIGN_PERCENTILE_05 (21):
Align the time series by using `percentile
aggregation <https://en.wikipedia.org/wiki/Percentile>`__.
The resulting data point in each alignment period is the 5th
percentile of all data points in the period. This aligner is
valid for `GAUGE` and `DELTA` metrics with distribution
values. The output is a `GAUGE` metric with `value_type`
`DOUBLE`.
ALIGN_PERCENT_CHANGE (23):
Align and convert to a percentage change. This aligner is
valid for `GAUGE` and `DELTA` metrics with numeric
values. This alignment returns
`((current - previous)/previous) * 100`, where the value
of `previous` is determined based on the
`alignment_period`.

If the values of `current` and `previous` are both 0,
then the returned value is 0. If only `previous` is 0, the
returned value is infinity.

A 10-minute moving mean is computed at each point of the
alignment period prior to the above calculation to smooth
the metric and prevent false positives from very short-lived
spikes. The moving mean is only applicable for data whose
values are `>= 0`. Any values `< 0` are treated as a
missing datapoint, and are ignored. While `DELTA` metrics
are accepted by this alignment, special care should be taken
that the values for the metric will always be positive. The
output is a `GAUGE` metric with `value_type` `DOUBLE`.
``````

## Enums

Name Description
`ALIGN_NONE` No alignment. Raw data is returned. Not valid if cross-series reduction is requested. The `value_type` of the result is the same as the `value_type` of the input.
`ALIGN_DELTA` Align and convert to `DELTA][google.api.MetricDescriptor.MetricKind.DELTA]`. The output is `delta = y1 - y0`.
[{ "type": "thumb-down", "id": "hardToUnderstand", "label":"Hard to understand" },{ "type": "thumb-down", "id": "incorrectInformationOrSampleCode", "label":"Incorrect information or sample code" },{ "type": "thumb-down", "id": "missingTheInformationSamplesINeed", "label":"Missing the information/samples I need" },{ "type": "thumb-down", "id": "otherDown", "label":"Other" }]
[{ "type": "thumb-up", "id": "easyToUnderstand", "label":"Easy to understand" },{ "type": "thumb-up", "id": "solvedMyProblem", "label":"Solved my problem" },{ "type": "thumb-up", "id": "otherUp", "label":"Other" }]