07 · Tables A→ZB · Plan the table
Choose column types & nullability
Pick Arrow column types and nullable flags that fit master data - IDs as text, money as Decimal.
Eddytor columns use the Apache Arrow type system. Choosing well up front saves painful migrations later - especially for IDs and money.
Supported types
Type names are case-insensitive, and the aliases in parentheses are accepted:
| Category | Types (aliases) |
|---|---|
| Text | Utf8 (String, Text), LargeUtf8 (LargeString) |
| Integer | Int8, Int16, Int32 (Int, Integer), Int64 (Long, BigInt) |
| Float | Float16, Float32 (Float), Float64 (Double) |
| Decimal | Decimal(precision,scale) (Decimal128(…)) - precision 1–38, scale 0–precision; scale defaults to 0, and a bare Decimal means Decimal(38,10) |
| Boolean | Boolean (Bool) |
| Date/time | Date32 (Date), Date64, Timestamp (DateTime), Time32 (Time), Time64, Duration |
| Binary | Binary (Bytes), LargeBinary |
Master-data rules of thumb
Heads up
Use
Utf8 for IDs unless you're certain they're always
numeric - text preserves leading zeros (007 stays 007). Use Decimal for
money - e.g. Decimal(20,4) - so amounts stay exact. Floating-point
(Float32/Float64) can't represent values like 0.10 precisely.- IDs, codes, postal codes →
Utf8. - Prices, amounts →
Decimal(p,s), e.g.Decimal(20,4). - Counts →
Int64. - Flags →
Boolean. - Dates →
Date32; instants →Timestamp.
Column names are case-sensitive - match your source-system conventions and be consistent.
Nullability & keys
- Mark at least one column
is_primary_key: true-create_tablerequires it. - Set
nullable: falseon columns that must always have a value (IDs, names). - Enabling a PK or uniqueness validates existing data first and is rejected if it finds NULLs or duplicates - so decide these at creation when the table is empty.
You can evolve later - add columns (existing rows get NULL) and tune settings - but types and keys are cheapest to get right now.