Differences

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

Link to this comparison view

Both sides previous revision Previous revision
Next revision
Previous revision
calculate_lookup_table_keys_and_values [2026/07/07 16:09]
hermann
calculate_lookup_table_keys_and_values [2026/08/28 03:11] (current)
hermann Sync from local documentation review
Line 1: Line 1:
-====== Calculate ​Value ======+====== Calculate ​Lookup Table Keys And Values ​======
  
 ===== Description ===== ===== Description =====
  
-Evaluates an expression **once** and returns ​single **scalar ​value**Unlike the map and lookup ​table calculators,​ there is no current cell, row, or spatial grid — the expression is evaluated in a purely scalar context.+Generates a new lookup table by evaluating two separate expressions ​once per row of 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 functor ​is one of five in the [[calculate_functors|calculator ​family]]. Use it to compute a single parameter — such as a global threshold, a weighted sum of scalar inputs, or a value derived from a table — that can then be passed as input to other functors. +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 unchangedIts 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.
- +
-The **abbreviated ​syntax** ​(also called **shorthand**for this functor ​is ''​$''​. See [[ego_script#​calculator_functor_shorthand|Calculator functor shorthand]] in the EGO Script documentation for the full syntax of both the verbose and abbreviated forms, and [[calculate_functors|Calculate Functors — Complete Operator Documentation]] for the complete ​expression language reference.+
  
 ===== Inputs ===== ===== Inputs =====
  
-^ Name ^ Type ^ Description ^ +^ Name  ^ Type  ^ Description ​ 
-| Expression | [[Image Expression Type]] | The algebraic or logical formula that evaluates ​to a single numeric result. Must be enclosed in square brackets ''​[ ]''​ in EGO Script. |+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 evaluated once per row to produce the output value. Must be enclosed in square brackets ''​[ ]''​ in EGO Script. ​ |
  
 ===== Optional Inputs ===== ===== Optional Inputs =====
  
-^ Name ^ Type ^ Default ​^ Description ^ +^ Name  ^ Type  ^ Description ​ ^ Default Value  ^ 
-Default Value | [[Real Value Type]] | None | Value returned if the expression produces an algebraic error. When provided, ​acts as a catch-all fallback equivalent ​to wrapping ​the entire expression ​in the ''?''​ operator. |+| 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 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 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 form, or the first lookup table referenced by name in the expression in the abbreviated form — not 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 | [[Real Value Type]] | The computed ​scalar value. |+| 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 =====
Line 32: Line 33:
 ==== Connecting data inputs ==== ==== Connecting data inputs ====
  
-Tables, lookup tables, and scalar values referenced in the expression must be connected to the functor'​s ports before writing the expression, using **hook** functors:+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 ''​t1''​''​t2''​, …, ''​t100''​ +  * Tables and lookup tables → [[Number Table]] → referenced in the expression as t1, t2, …, t100 
-  * Scalar values → [[Number Value]] → referenced as ''​v1''​''​v2''​, …, ''​v100''​+  * 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''​.+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 ==== ==== Available expression features ====
  
-Image operators (''​iX''​), ​the ''​line''​ and ''​column''​ spatial keywords, neighbourhood functions, neighbourhood indexing, and convolution are not available — there is no cell or row context. Available features are arithmetic and logical operators and table and lookup table queries (''​tX[...]''​) in all single-key and multi-column forms. See [[calculate_functors#the_expression_language|The Expression Language]] for the complete reference, or [[Image Expression Type]] for the navigable operator index.+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 functions, neighbourhood 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 value handling ====
  
-Null propagation rules and defensive patterns are covered in [[calculate_functors#null_value_handling|Null Value Handling]] in the Calculate Functors documentation.+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 =====
  
-''​CalculateValue''​ +CalculateLookupTableKeysAndValues
- +
-===== Usage examples ===== +
- +
-  * [[calculate_functors#​calculatevalue_examples|CalculateValue practical examples]] in the Calculate Functors documentation +
-  * [[lesson_8|Lesson 8: Inserting and getting a specific value into a table]]+