3. Declare a relationship stored as Name or String
Declare a relationship that a Name field alone does not express.
Goal: Declare a relationship that a Name field alone does not express.
Before you start: The practice tables; download the additional table and profile.
The idea you will use
A Name or String may be a label or key. A profile declares when to resolve it against another table.
Predict before running
Will editing Label fix D2.TargetKey = Missing?
Build and check
Names and ordinary text can be labels. Declare explicitly which ones store keys from another table.
- Download ConsumersByKey.csv and name-string-profile.json into
Fixtures. - Create a User Defined Structure
ST_ConsumerKeyRowwithTargetKeyof typeNameandLabelof typeString. CreateConsumersByKeyfrom it in/Game/RowTetherExampleand importConsumersByKey.csv. - Select
TargetsandConsumersByKey, click Use selected DataTables, then loadFixtures/name-string-profile.jsonfrom References and game rules. - Wait for the review. The expected result is one
ROWTETHER-ROW-MISSINGon D2:Missingdoes not exist inTargets. D1 → T1 and D3 → T2 should resolve. - In
ConsumersByKey, changeD2.TargetKeyfromMissingtoT3. Wait for the current review to finish before editing, then click Review tables again after the change. - Confirm
Completed, sufficient coverage and that the finding disappeared because its source key changed.
The profile maps TargetKey to Targets; RowTether does not guess that a Name column is a relationship. You can use a String field with the same explicit mapping.
If D2 does not appear, check that TargetKey is a top-level Name property, the profile points to /Game/RowTetherExample/ConsumersByKey.ConsumersByKey and D2 contains Missing.
Check your reasoning
See the explanation
No. The relationship uses TargetKey. Change that key to an existing row.
Your turn: Locate T3 first, fix D2, run a fresh review and explain which evidence changed.
Ready to continue when: you can distinguish a label from a declared relationship.
Progress is saved only in this browser and carries over when you switch language.