# Arrow v0.1.0 - Table of Contents

> Pure-Elixir implementation of the Apache Arrow columnar format.

## Pages

- [arrow](readme.md)

## Modules

- [Arrow](Arrow.md): Pure-Elixir implementation of the [Apache Arrow](https://arrow.apache.org/)
columnar format.
- [Arrow.Array](Arrow.Array.md): Per-type column structs. Each module under `Arrow.Array.*` represents one
concrete Arrow array.
- [Arrow.Array.Binary](Arrow.Array.Binary.md): Variable-length opaque-bytes column. Same layout as `Arrow.Array.Utf8` but
the value bytes are not constrained to be valid UTF-8.

- [Arrow.Array.Bool](Arrow.Array.Bool.md): Boolean column. Values are a packed LSB-first bitmap.
- [Arrow.Array.Date32](Arrow.Array.Date32.md): Fixed-width primitive column. `values` is a little-endian packed buffer of
one element per slot, regardless of `validity`.

- [Arrow.Array.Date64](Arrow.Array.Date64.md): Fixed-width primitive column. `values` is a little-endian packed buffer of
one element per slot, regardless of `validity`.

- [Arrow.Array.Decimal128](Arrow.Array.Decimal128.md): Fixed-point decimal column. Values are little-endian two's-complement
integers of the type's bit width (4 / 8 / 16 / 32 bytes per slot).
`precision` and `scale` come from the column's type; we carry them on
the array so it's self-describing.

- [Arrow.Array.Decimal256](Arrow.Array.Decimal256.md): Fixed-point decimal column. Values are little-endian two's-complement
integers of the type's bit width (4 / 8 / 16 / 32 bytes per slot).
`precision` and `scale` come from the column's type; we carry them on
the array so it's self-describing.

- [Arrow.Array.Decimal32](Arrow.Array.Decimal32.md): Fixed-point decimal column. Values are little-endian two's-complement
integers of the type's bit width (4 / 8 / 16 / 32 bytes per slot).
`precision` and `scale` come from the column's type; we carry them on
the array so it's self-describing.

- [Arrow.Array.Decimal64](Arrow.Array.Decimal64.md): Fixed-point decimal column. Values are little-endian two's-complement
integers of the type's bit width (4 / 8 / 16 / 32 bytes per slot).
`precision` and `scale` come from the column's type; we carry them on
the array so it's self-describing.

- [Arrow.Array.Dictionary](Arrow.Array.Dictionary.md): Dictionary-encoded column. The buffer is just the *indices* (a
primitive integer array referencing entries in a dictionary stored
separately, identified by `dictionary_id`).
- [Arrow.Array.Duration](Arrow.Array.Duration.md): 64-bit elapsed-time column. Values are little-endian signed `int64`s in the
declared `unit`.

- [Arrow.Array.FixedSizeBinary](Arrow.Array.FixedSizeBinary.md): Fixed-width binary column. `values` is exactly `length * byte_width` bytes
(no offsets).

- [Arrow.Array.FixedSizeList](Arrow.Array.FixedSizeList.md): Fixed-size list column. The single child array `values` holds exactly
`length * list_size` items; there are no offsets.

- [Arrow.Array.Float32](Arrow.Array.Float32.md): Fixed-width primitive column. `values` is a little-endian packed buffer of
one element per slot, regardless of `validity`.

- [Arrow.Array.Float64](Arrow.Array.Float64.md): Fixed-width primitive column. `values` is a little-endian packed buffer of
one element per slot, regardless of `validity`.

- [Arrow.Array.Int16](Arrow.Array.Int16.md): Fixed-width primitive column. `values` is a little-endian packed buffer of
one element per slot, regardless of `validity`.

- [Arrow.Array.Int32](Arrow.Array.Int32.md): Fixed-width primitive column. `values` is a little-endian packed buffer of
one element per slot, regardless of `validity`.

- [Arrow.Array.Int64](Arrow.Array.Int64.md): Fixed-width primitive column. `values` is a little-endian packed buffer of
one element per slot, regardless of `validity`.

- [Arrow.Array.Int8](Arrow.Array.Int8.md): Fixed-width primitive column. `values` is a little-endian packed buffer of
one element per slot, regardless of `validity`.

- [Arrow.Array.IntervalDayTime](Arrow.Array.IntervalDayTime.md): Interval column. The physical layout depends on the variant
- [Arrow.Array.IntervalMonthDayNano](Arrow.Array.IntervalMonthDayNano.md): Interval column. The physical layout depends on the variant
- [Arrow.Array.IntervalYearMonth](Arrow.Array.IntervalYearMonth.md): Interval column. The physical layout depends on the variant
- [Arrow.Array.LargeBinary](Arrow.Array.LargeBinary.md): Variable-length opaque-bytes column with 64-bit offsets.
- [Arrow.Array.LargeList](Arrow.Array.LargeList.md): Variable-length list with 64-bit offsets. Same shape as
`Arrow.Array.List` but `offsets` is `length + 1` little-endian `int64`s.

- [Arrow.Array.LargeUtf8](Arrow.Array.LargeUtf8.md): Variable-length UTF-8 column with 64-bit offsets. Same shape as
`Arrow.Array.Utf8` but `offsets` is `length + 1` little-endian `int64`s.

- [Arrow.Array.List](Arrow.Array.List.md): Variable-length list column. `offsets` is `length + 1` little-endian `int32`s
giving the [start, end) index of each slot's items in `values` (the child
array).

- [Arrow.Array.Map](Arrow.Array.Map.md): Map column. Layout mirrors `Arrow.Array.List`: a validity bitmap and int32
offsets buffer with a child `values` array. The child is expected to be an
`Arrow.Array.Struct` whose two members are the key and the value.

- [Arrow.Array.Null](Arrow.Array.Null.md): All-null column. Carries only a length.
- [Arrow.Array.Struct](Arrow.Array.Struct.md): Struct column. `children` is one inner array per struct member, in the same
order as the parent field's `children`. Every child array's `length` matches
the struct's `length`.

- [Arrow.Array.Time32](Arrow.Array.Time32.md): 32-bit time-of-day column. Values are little-endian signed `int32`s in the
declared `unit` (`:second` or `:millisecond`).

- [Arrow.Array.Time64](Arrow.Array.Time64.md): 64-bit time-of-day column. Values are little-endian signed `int64`s in the
declared `unit` (`:microsecond` or `:nanosecond`).

- [Arrow.Array.Timestamp](Arrow.Array.Timestamp.md): 64-bit timestamp column. Values are little-endian signed `int64`s in the
declared `unit`. `timezone: nil` means a naive (unzoned) timestamp.

- [Arrow.Array.UInt16](Arrow.Array.UInt16.md): Fixed-width primitive column. `values` is a little-endian packed buffer of
one element per slot, regardless of `validity`.

- [Arrow.Array.UInt32](Arrow.Array.UInt32.md): Fixed-width primitive column. `values` is a little-endian packed buffer of
one element per slot, regardless of `validity`.

- [Arrow.Array.UInt64](Arrow.Array.UInt64.md): Fixed-width primitive column. `values` is a little-endian packed buffer of
one element per slot, regardless of `validity`.

- [Arrow.Array.UInt8](Arrow.Array.UInt8.md): Fixed-width primitive column. `values` is a little-endian packed buffer of
one element per slot, regardless of `validity`.

- [Arrow.Array.Utf8](Arrow.Array.Utf8.md): Variable-length UTF-8 column. `offsets` is `length + 1` little-endian
`int32`s; `values` is the concatenation of every slot's UTF-8 bytes.

- [Arrow.Buffer](Arrow.Buffer.md): Encoders and decoders between in-memory values and Arrow's raw buffer
layout.
- [Arrow.Field](Arrow.Field.md): A named column within a schema. Holds the logical type, nullability, an
optional per-field metadata map, the child fields used by nested types
(`List`, `Struct`), and an optional `Arrow.Type.DictionaryEncoding` when
the field is dictionary-encoded.
- [Arrow.Ipc.Body](Arrow.Ipc.Body.md): Encodes and decodes the body bytes of an Arrow IPC RecordBatch.
- [Arrow.Ipc.File](Arrow.Ipc.File.md): Encodes and decodes the Arrow IPC **file** format.
- [Arrow.Ipc.Stream](Arrow.Ipc.Stream.md): Encodes and decodes the Arrow IPC streaming format.
- [Arrow.Json](Arrow.Json.md): Arrow integration test JSON format.
- [Arrow.Json.Reader](Arrow.Json.Reader.md): Parses Arrow integration test JSON into the in-memory data model.
- [Arrow.Json.Writer](Arrow.Json.Writer.md): Emits Arrow integration test JSON form from in-memory `Arrow.Schema` and
`Arrow.RecordBatch` structs.
- [Arrow.Logical](Arrow.Logical.md): Logical (null-aware) view of `Arrow.Array.*` columns.
- [Arrow.RecordBatch](Arrow.RecordBatch.md): A batch of columnar data: a schema, a row count, and one column per field.
- [Arrow.Schema](Arrow.Schema.md): Ordered list of `Arrow.Field` plus an optional schema-level metadata map.
- [Arrow.Type](Arrow.Type.md): Arrow logical types. Each type is a distinct struct under `Arrow.Type.*`.
- [Arrow.Type.Binary](Arrow.Type.Binary.md): Variable-length opaque byte column.
- [Arrow.Type.Bool](Arrow.Type.Bool.md): Logical boolean type. Stored as a packed bitmap.
- [Arrow.Type.Date](Arrow.Type.Date.md): Date column.
- [Arrow.Type.Decimal](Arrow.Type.Decimal.md): Fixed-point decimal column. Stored as a little-endian two's-complement
integer of `bit_width` bits, scaled by `10^-scale`.
- [Arrow.Type.DictionaryEncoding](Arrow.Type.DictionaryEncoding.md): Dictionary-encoding annotation on a `Arrow.Field`.
- [Arrow.Type.Duration](Arrow.Type.Duration.md): 64-bit elapsed-time column in a fixed unit.
- [Arrow.Type.FixedSizeBinary](Arrow.Type.FixedSizeBinary.md): Fixed-width opaque-bytes column. Every slot is `byte_width` bytes.
- [Arrow.Type.FixedSizeList](Arrow.Type.FixedSizeList.md): Fixed-size list of an inner type. Every slot is exactly `list_size` items;
there is no offsets buffer. The inner type is the single child field of the
enclosing `Arrow.Field`.

- [Arrow.Type.FloatingPoint](Arrow.Type.FloatingPoint.md): IEEE-754 floating point. Tier 1: `:single`, `:double`.
- [Arrow.Type.Int](Arrow.Type.Int.md): Signed or unsigned integer of a given bit width.
- [Arrow.Type.Interval](Arrow.Type.Interval.md): Interval column. Three concrete physical layouts
- [Arrow.Type.LargeBinary](Arrow.Type.LargeBinary.md): Variable-length opaque byte column with 64-bit offsets.
- [Arrow.Type.LargeList](Arrow.Type.LargeList.md): Variable-length list with 64-bit offsets. Otherwise identical to
`Arrow.Type.List`.

- [Arrow.Type.LargeUtf8](Arrow.Type.LargeUtf8.md): Variable-length UTF-8 string column with 64-bit offsets.
- [Arrow.Type.List](Arrow.Type.List.md): Variable-length list of an inner type. The inner type is described by the
single child field of the enclosing `Arrow.Field`.

- [Arrow.Type.Map](Arrow.Type.Map.md): Map column. Structurally a `List<Struct<key, value>>` with a single child
field named "entries"; the entries struct's two children are the key and
value fields.

- [Arrow.Type.Null](Arrow.Type.Null.md): Logical Null type. Carries no data — only a length.
- [Arrow.Type.Struct](Arrow.Type.Struct.md): Tuple-of-columns. Child fields are the struct's members, in declaration order,
and live on the enclosing `Arrow.Field`.

- [Arrow.Type.Time](Arrow.Type.Time.md): Time-of-day column. The Arrow FlatBuffers table parameterises both the bit
width and the unit
- [Arrow.Type.Timestamp](Arrow.Type.Timestamp.md): 64-bit timestamp at a fixed time unit, optionally annotated with a timezone.
- [Arrow.Type.Utf8](Arrow.Type.Utf8.md): Variable-length UTF-8 string column.

- Exceptions
  - [Arrow.DecodeError](Arrow.DecodeError.md): Error returned by the decoders (`Arrow.Ipc.Stream.decode/1`,
`Arrow.Ipc.File.decode/1`, `Arrow.Json.decode/1`) and raised by their
`decode!/1` variants.

## Mix Tasks

- [mix arrow.convert](Mix.Tasks.Arrow.Convert.md): Converts an Arrow IPC file to the streaming format or vice versa,
preserving schema, record batches, and dictionaries.
- [mix arrow.inspect](Mix.Tasks.Arrow.Inspect.md): Prints a summary of an Arrow IPC file or stream: format, schema
(field names, types, nullability), per-batch row counts, and
dictionary sizes.

