Macaw.Data.Aggregate behaviour (macaw_data v0.5.3)

Copy Markdown View Source

The aggregate behavior (spec/04 §1.2): a statistic, one column's readings reduced to one value (visualize#909).

reduce/2 is given the readings with every nil dropped, since a gap is absence, never zero (spec/01 §1.1). An aggregate may also give the streaming form, init/1, step/3 and finish/2 together, over the same readings in the same order:

finish(Enum.reduce(values, init(options), &step(&2, &1, options)), options)
== reduce(values, options)

Its options are checked as a transform's are (Macaw.Data.Operations.Option), and may not be a key of a step that names it (Macaw.Data.Operations.step_keys/0): the registry refuses one that is.

Summary

Types

Checked options: each declared option by its string, its default filled in.

Callbacks

The streaming form's value of its state.

The streaming form's first state.

Whether the input's unit and quantity carry to the output.

The name a node's fn or a stored function names, unique in a registry.

The keys the aggregate reads.

The output's table type for an input column of type.

The value of the readings, nils already dropped.

The streaming form's state after one more reading.

Types

options()

@type options() :: %{required(String.t()) => term()}

Checked options: each declared option by its string, its default filled in.

Callbacks

finish(term, options)

(optional)
@callback finish(term(), options()) :: term()

The streaming form's value of its state.

init(options)

(optional)
@callback init(options()) :: term()

The streaming form's first state.

keeps_unit?()

@callback keeps_unit?() :: boolean()

Whether the input's unit and quantity carry to the output.

name()

@callback name() :: String.t()

The name a node's fn or a stored function names, unique in a registry.

options()

@callback options() :: [{String.t(), Macaw.Data.Operations.Option.t()}]

The keys the aggregate reads.

output(type, options)

The output's table type for an input column of type.

reduce(list, options)

@callback reduce([term()], options()) :: term()

The value of the readings, nils already dropped.

step(term, term, options)

(optional)
@callback step(term(), term(), options()) :: term()

The streaming form's state after one more reading.