Differences

This shows you the differences between two versions of the page.

Link to this comparison view

Next revision
Previous revision
calculate_lookup_table_keys_and_values [2025/12/02 03:24]
admin created
calculate_lookup_table_keys_and_values [2026/08/28 03:11] (current)
hermann Sync from local documentation review
Line 3: Line 3:
 ===== Description ===== ===== Description =====
  
-This functor generates ​a new lookup table from other tables, using one expression ​to define ​the new keys and another ​to define ​the new values.+Generates ​a new lookup table by evaluating two separate expressions once per row of a base lookup table: ​one expression ​computes ​the output key, the other computes the output value. This allows a complete transformation of a table'​s key-value structure, or the construction of an entirely ​new lookup table row by row. 
 + 
 +This is one of Dinamica EGO's five calculator functors. Use it when both the keys and the values of a lookup table need to be recomputed; use [[Calculate Lookup Table Values]] instead when only the values ​need to be recomputed and the keys should be inherited from the base table unchanged. Its abbreviated (shorthand) syntax is ''​%%''​. See [[ego_script#​calculator_functor_shorthand|Calculator functor shorthand]] in the EGO Script documentation for the verbose and abbreviated forms, and [[Calculate Functors|Calculate Functors — Complete Operator Documentation]] for the full expression language reference.
  
 ===== Inputs ===== ===== Inputs =====
  
 ^ Name  ^ Type  ^ Description ​ ^ ^ Name  ^ Type  ^ Description ​ ^
-| Key Column Expression | [[Image Expression Type]] ​ | Expression ​describing how the value of each new key should ​be calculated.  | +| Key Column Expression ​ | [[Image Expression Type]] ​ | Expression ​evaluated once per row to produce ​the output ​key. Must be enclosed in square brackets ''​[ ]''​ in EGO Script.  | 
-| Value Column Expression | [[Image Expression Type]] ​ | Expression ​describing how each new value should ​be calculated.  |+| Value Column Expression ​ | [[Image Expression Type]] ​ | Expression ​evaluated once per row to produce the output ​value. Must be enclosed in square brackets ''​[ ]''​ in EGO Script.  |
  
 ===== Optional Inputs ===== ===== Optional Inputs =====
  
 ^ Name  ^ Type  ^ Description ​ ^ Default Value  ^ ^ Name  ^ Type  ^ Description ​ ^ Default Value  ^
-| Key Column Name  | [[Name Type]] ​ | Name of the key column. If omitted, the corresponding name from the table used as format ​will be used.  | None  | +| Key Column Name  | [[Name Type]] ​ | Name of the key column ​in the resulting lookup table. If omitted, the corresponding name from the table used as format ​is used.  | .none  | 
-| Value Column Name  | [[Name Type]] ​ | Name of the value column. If omitted, the corresponding name from the table used as format ​will be used.  | None  | +| Value Column Name  | [[Name Type]] ​ | Name of the value column ​in the resulting lookup table. If omitted, the corresponding name from the table used as format ​is used.  | .none  | 
-| Base Lookup Table  | [[Lookup Table Type]] ​ | Lookup table that, if provided, ​determines for which entries ​the key and value generation expressions will be called. If this table is not provided, the first lookup table present ​in the list of input tables ​will be used.  | None  |+| Base Lookup Table  | [[Lookup Table Type]] ​ | Lookup table whose row set drives iteration. When not provided, the [[Number Table]] hook with the lowest list index that is connected to a lookup ​table (rather than a regular table) ​is used as the row source in the verbose formor the first lookup table referenced by name in the expression in the abbreviated form — not a union of all connected ​tables. Prefer this port over a Number Table hook when the table is needed only to define the row set and is not referenced in the expressions,​ to keep the abbreviated syntax available.  | .none  |
  
-===== Output ​=====+===== Outputs ​=====
  
 ^ Name  ^ Type  ^ Description ​ ^ ^ Name  ^ Type  ^ Description ​ ^
-| Result ​ | [[Lookup Table Type]] ​ | Lookup table calculated from the input tables ​and values. ​ |+| Result ​ | [[Lookup Table Type]] ​ | Lookup table whose keys and values ​were both computed by the respective expressions.  |
  
 ===== Group ===== ===== Group =====
  
-[[Functor List#Table | Table]]+[[Functor List#Lookup ​Table | Lookup ​Table]]
  
 ===== Notes ===== ===== Notes =====
  
-For each key present ​in the input table used as formata key-value pair will be created ​and inserted into the resulting ​table. If the generated ​key is equal to previously generated ​key, the new generated ​value will be used to replace ​the existing ​value+==== Connecting data inputs ==== 
-The values of the key and value columns from the table used as format will be accessible during calculation as "line" ​and "column"respectivelyin the expressions ​for calculating keys and values of the resulting lookup table.+ 
 +Tables, lookup tables, and scalar values referenced ​in either expression must be connected to the functor'​s ports before writing the expressions,​ using hook functors: 
 + 
 +  * Tables and lookup tables → [[Number Table]] → referenced in the expression ​as t1t2, …, t100 
 +  * Scalar values → [[Number Value]] → referenced as v1, v2, …, v100 
 + 
 +Maps cannot ​be connected — there is no cell context in this functor. In the abbreviated syntax, tables are referenced as ''​%variableName'' ​and values as ''​$variableName''​. Both expressions share the same set of connected operands. 
 + 
 +==== Row iteration context ==== 
 + 
 +Both expressions are evaluated once per row of the base lookup ​table. ​Two keywords reflect the current row inside each expression:​ 
 + 
 +  * line — the key of the current row 
 +  * column — the value already associated with that key in the base lookup table 
 + 
 +If the key expression produces ​a key that already exists in the output table, the newly computed ​value replaces ​the existing ​one
 + 
 +==== Available expression features ==== 
 + 
 +Identical to [[Calculate Lookup Table Values]]: arithmetic and logical operators, scalar references (''​vX''​),​ table and lookup table queries (''​tX[...]''​) in all single-key and multi-column forms, and the line and column ​row-context keywords are available. Image operators (''​iX''​)neighbourhood functionsneighbourhood indexing, and convolution are not available. See [[Calculate Functors#​The Expression Language|The Expression Language]] for the complete reference, or [[Image Expression Type]] ​for the navigable operator index. 
 + 
 +==== Null value handling ==== 
 + 
 +Null propagation rules and defensive patterns are covered in [[Calculate Functors#​Null Value Handling|Null Value Handling]] in the Calculate Functors documentation.
  
 ===== Internal Name ===== ===== Internal Name =====