Configure Table Metadata
After you build a schema, review the inferred metadata for every table. Access a table through schema["table_name"] and a column through schema["table_name"]["column_name"]; you do not need to construct table or column objects directly.
Inspect inferred metadata
Continue with the schema built in Build a Schema:
A table built with Schema.from_source() holds column metadata and keys, but no rows — it reports its column count the same way, with no row count to show. Its columns are still inspected and corrected the same way as a table built with Schema.from_data().
Configure keys and timestamps
The time column should represent when an event became available to the prediction workflow. Kumo Relational has no supported way to also declare when a row stopped being valid — see Time Columns.
Tables can use composite primary keys when one column is not sufficient to identify a row:
Every component must be present, non-null, and use a foldable physical type; a floating-point column cannot be part of a composite key. A composite key is refused if it has duplicates beyond a small tolerance, or if any component is null.
Correct semantic types
A semantic type assignment must be compatible with the column’s physical data type; an incompatible assignment raises immediately rather than being accepted and refused later. Refer to Data Types and Semantic Types for the supported combinations.
Assigning a table’s primary_key automatically types every component ID, and assigning time_column automatically types that column timestamp. You still need to correct any other column inference got wrong, such as an identifier-shaped number that should be categorical.
Metadata checklist
- Each table’s primary key values are non-null and unique.
- Foreign-key columns use values and physical data types that are compatible with those of the referenced keys.
- The time column represents when an event became available to the prediction workflow.
- Identifier columns use the
IDsemantic type. - Free-form language uses the
textsemantic type, and low-cardinality labels use thecategoricalsemantic type.
Inspect the result after making corrections: