How Data Table Extensions reads your tables: supported platforms and field types, property paths, how values are compared, caching, and performance. For each node and pin, see Blueprint nodes.
At a glance#
| Item | Details |
|---|---|
| Plugin type | Runtime. It ships in packaged games. |
| Platforms | Windows, macOS, and Linux, in the editor and in packaged games |
| Engine versions | UE 5.5–5.8 |
| Works with | Standard Data Table assets, with C++ or Blueprint row structures. No separate table format. |
| Where you use it | Gameplay Blueprints, Editor Utility Widgets, and other editor tools |
| Blueprint nodes | About 150, under Data Table Extensions in the node menu. See Blueprint nodes. |
| Settings and console commands | None |
| Output Log | Warnings for missing rows and invalid paths appear under LogDataTableExtensions. |
The nodes run on the game thread. They cannot be called from thread-safe animation functions.
Property paths#
- A path names a field in the row, with a dot between a struct and its fields:
Stats.Power. - C++ row structs: use the member name as written in code, such as
RequiredLevel. Capitalization is ignored. - Blueprint row structs: type the field name exactly as the struct editor shows it. Capitalization matters, and spaces inside a name are fine.
- Paths can step into engine value types:
Location.ZandRotation.Yaware Float fields,Tint.Ris a Float on a Linear Color and an Integer from 0 to 255 on a Color, andSpawn.Translationis a Vector. - A Gameplay Tag field is read as
MyTag.TagName, a Name. A Data Table Row Handle is read asHandle.RowName. - Paths cannot enter arrays, maps, sets, or object references.
Items[0]andItems.0are not supported. - Empty segments are ignored, so
Stats..Powerworks likeStats.Power.
Get Leaf Property Paths lists every usable field, with nested structs expanded, in declaration order. Engine value types such as Vector are listed as one entry each; their components work as paths but are not listed. Get Child Property Paths For Struct Path on Location returns Location.X, Location.Y, and Location.Z.
Field types#
| Node type | Accepts |
|---|---|
| Int | Integer, Integer64, and Byte fields that are not enums, plus C++ integers of any size |
| Float | Float and double fields. Integer fields need the Int nodes. |
| Enum | C++ enums of any size and Blueprint enums, compared by numeric value |
| String, Name, Text | Only that exact type. A String node does not read Name or Text fields. |
| Bool | Boolean fields |
| Vector, Vector2D, Rotator, Color, Linear Color, Transform, Int Point, Vector4, Date Time, Guid | Only that exact engine type |
Enum and Boolean fields are not numeric: statistics and weights need Int or Float fields. For a Blueprint enum, an entry's numeric value is its position in the enum, starting at 0.
Fields of other types, such as your own structs, have the value category Struct and are reached through a dotted path. Arrays, maps, sets, and references have the category Unsupported.
How values are compared#
| Values | Rule |
|---|---|
| String, Name, Text | All five comparisons ignore letter case, but only for A to Z; accented and non-Latin letters must match exactly. Values are not trimmed, so leading and trailing spaces count. |
| Empty comparison value | Equal matches only empty fields, Contains matches every row, and Starts With and Ends With match nothing. |
| Name fields | An unset Name is compared as the text None. |
| Text fields | Compared as currently displayed, in the active language. |
| Integers | Exact. |
| Floats | Exact, with no tolerance. Single-precision float fields declared in C++ hold approximate values, so 0.1 is stored as slightly more than 0.1; widen a bound slightly when comparing them. Blueprint Float fields match typed values exactly. |
| Vector, Vector2D, Vector4, Color, Linear Color, Int Point, Guid | Exact on every component. |
| Rotator | Exact per Pitch, Yaw, and Roll, without normalizing, so 0 and 360 differ. |
| Transform | Nearly equal: within 0.0001 per axis for location and scale, and the same orientation counts as equal even when written differently, such as Yaw 180 and Yaw -180. |
| Date Time | Exact to the tick. |
Sorting and distinct-value nodes also ignore letter case for String, Name, and Text, and sort Text without language-specific rules, so accented letters come after Z. Names that end in a number sort by that number, so Item_2 comes before Item_10.
Use Cache#
With Use Cache on, a successful query remembers its matching rows. Asking the same question of the same table again returns them without scanning the table. Failed queries are never remembered. Use Cache is on by default on the filter, range, query, and matching-random nodes.
The remembered results refresh automatically whenever the table changes through the editor or the engine:
- edits in the Data Table editor;
- reimports;
- filling a table from CSV or JSON;
- adding, removing, or emptying rows;
- changing the row structure.
They do not refresh when:
- C++ code writes directly into a row's data. Call Invalidate Cache For Data Table afterwards;
- the game language changes while you filter Text fields. Call Clear Query Cache.
Results are kept in memory while the table is loaded. They survive level changes and, in the editor, Play In Editor sessions, and are discarded when the table unloads or the game closes. Nothing is written to disk.
Every different question adds an entry, so turn Use Cache off for comparison values that change constantly. Queries whose vector, rotator, color, transform, or date values differ only very slightly can return the same remembered rows; turn Use Cache off for such fine distinctions.
Performance#
| Nodes | Work per call |
|---|---|
| Filter, query, range, statistics, validation, sort, For All Rows, weighted random | Read every row. |
| Find First Matching Row Name | Stops at the first match. |
| Single-row reads, Does Data Table Have Row | Look the row up directly. |
| Utility nodes | Work on the array you pass, without reading the table. |
Use Cache helps only repeated identical questions. For fields with many different values, the Value Counts nodes are faster than the Distinct nodes. On large tables, run broad queries once and keep the result rather than repeating them every frame.
Limits#
- Paths cannot enter arrays, maps, sets, or object references.
- There is no sort by Enum or Boolean fields.
- Enum and Boolean fields do not count as numeric for statistics or weights.
- Seeded random nodes never advance your Random Stream; change the seed for a different result.
- Available on Windows, macOS, and Linux.