# 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>` 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.