Node Config Options
Node configuration options determine the behavior of an individual node. These configuration options are determined by the Node Type Definition, which can be found in our User-defined Nodes (UDNs) article.
Node Properties
Location
Logical storage location representing the database and schema which are mapped in the Workspace/Environment's Storage Mappings.
Node Type
The name of the type of node. This could be user-defined or a core option.
Description
Description text about this specific node.
Deploy Enabled
This toggle determines if a node will be included in a deployment. By default, all nodes in a workspace are included in a deployment, this allows changing that behavior.
If a node exists on the target environment and deploy is disabled, the next deployment will cause that node's table to be dropped.
Re-Sync Non Source Columns
isColumnResyncEnabled: true
When set to true for a node, it enables a "Re-Sync Columns" button in the top-right corner of the Node’s mapping grid. It allows users to refresh column definitions.
- If a user deletes the columns in the mapping grid, then clicks "Re-Sync Columns," they will be prompted to add the deleted columns.
- If a user deletes a column in their data platform, then tries to re-sync the columns, they will be asked to delete the columns that were removed in the data platform.
Multi source nodes will not display the "Re-Sync Columns" button, even if the flag is enabled.
Core UI Elements
Materialization Selector ("Create As")
Determines if the node will be materialized as a table or as a view. This influences how Coalesce will deploy and refresh this node.
config:
- groupName: 'My Config Group'
items:
- type: materializationSelector # dropdown selector for materialization types
# Custom names are not supported as these are core options
# displayName: Create As # This is not user-configurable
# attributeName: node.materializationType # This is not user-configurable
default: table # Default selection, should be a valid option
options:
- table
- view
isRequired: false # If this config item is required (boolean)
enableIf: 'true' # If true, display this config group, else hide this config group.
# Jinja expression resulting in a quoted boolean may be used for dynamic behavior
# (boolean string, 'true' | 'false', defaults 'true')
Multi-Source Toggle
Toggle that allows a node to accept data from multiple sources by virtue of a SQL union, union all, or individual inserts. When this toggle is true, the mapping grid will allow for multiple source columns to be mapped to a single column in this node.
config:
- groupName: 'My Config Group'
items:
- type: multisourceToggle
# Custom names are not supported as these are core options
# displayName: Multi Source # This is not user-configurable
# attributeName: node.isMultisource # This is not user-configurable
enableIf: 'true' # If true, display this config group, else hide this config group.
# Jinja expression resulting in a quoted boolean may be used for dynamic behavior
# (boolean string, 'true' | 'false', defaults 'true')
View DDL Override ("OverrideSQL") Toggle
This option allows a user to override the DDL of a view, enabling greater flexibility in view creation. This option enables a text box in the GUI for the user to write a custom view DDL. Jinja templating is supported in this text box using all of the node's metadata.
config:
- groupName: 'My Config Group'
items:
- type: overrideSQLToggle
# Custom names are not supported as these are core options
# displayName: Override Create SQL # This is not user-configurable
# attributeName: node.override.create.enabled # This is not user-configurable
enableIf: "{% if node.materializationType == 'view' %} true {% else %} false {% endif %}"
Business Key Selector
Selector that allows the user to specify the business/primary key columns in this node
config:
- groupName: 'My Config Group'
items:
- type: businessKeyColumns # Allows for choosing business key columns
# Custom names are not supported as these are core options
# displayName: My Business Key Columns # This is not user-configurable
# attributeName: myBusinessColumns # This is not user-configurable, myBusinessColumns will appear on the column-level metadata
isRequired: true # If this config item is required (boolean)
enableIf: 'true' # If true, display this config group, else hide this config group.
# Jinja expression resulting in a quoted boolean may be used for dynamic behavior
# (boolean string, 'true' | 'false', defaults 'true')
Change Tracking Selector
Selector that allows the user to specify the columns for which change tracking should be enabled. Typically this is used for (but not limited to) slowly changing dimensions.
config:
- groupName: 'My Config Group'
items:
- type: changeTrackingColumns #Allows for choosing tracking columns
# Custom names are not supported as this is a core option
# displayName: My Change Tracking Columns # This is not user-configurable
# attributeName: myChangeTrackingColumns # This is not user-configurable
isRequired: true # If this config item is required (boolean)
enableIf: 'true' # If true, display this config group, else hide this config group.
# Jinja expression resulting in a quoted boolean may be used for dynamic behavior
# (boolean string, 'true' | 'false', defaults 'true')
Customizable Core UI Elements
Customizable core UI elements are generic elements that Coalesce uses in our Node Types.
Multi-Source Strategy Dropdown Selector
This is a dropdown selector that provides a choice of 3 strategies for combining multiple data sources. This is used when multisourceToggle
is enabled.
config:
- groupName: 'My Config Group'
items:
- type: dropdownSelector
displayName: Multisource Strategy # Name of the dropdown selector (string)
attributeName: insertStrategy # Reference name for this item (string)
default: INSERT #Default selection (string)
options: #Options for the dropdown (strings)
- INSERT
- UNION
- UNION ALL
isRequired: true # If this config item is required (boolean)
enableIf: 'true' # If true, display this config group, else hide this config group.
# Jinja expression resulting in a quoted boolean may be used for dynamic behavior
# (boolean string, 'true' | 'false', defaults 'true')
Truncate Before Toggle
This is a toggle button that determines if the data will be truncated before running this node's INSERT script.
config:
- groupName: 'My Config Group'
items:
- displayName: Truncate Before
attributeName: truncateBefore
type: toggleButton
default: true
enableIf: 'true' # If true, display this config group, else hide this config group.
# Jinja expression resulting in a quoted boolean may be used for dynamic behavior
# (boolean string, 'true' | 'false', defaults 'true')
Enable Tests Toggle
This toggle determines if user-made tests will be run as part of the node's script.
config:
- groupName: 'My Config Group'
items:
- type: toggleButton
displayName: Enable Tests # Name of the dropdown selector (string)
attributeName: testsEnabled #Reference name for this item (string)
default: true # If this config item is required (boolean)
enableIf: 'true' # If true, display this config group, else hide this config group.
# Jinja expression resulting in a quoted boolean may be used for dynamic behavior
# (boolean string, 'true' | 'false', defaults 'true')
Pre/Post SQL Text boxes
SQL text boxes that run before or after of the main DML operation.
config:
- groupName: 'My Config Group'
items:
- displayName: Pre-SQL
attributeName: preSQL
type: textBox
syntax: sql
isRequired: false
enableIf: 'true' # If true, display this config group, else hide this config group.
# Jinja expression resulting in a quoted boolean may be used for dynamic behavior
# (boolean string, 'true' | 'false', defaults 'true')
- displayName: Post-SQL
attributeName: postSQL
type: textBox
syntax: sql
isRequired: false
enableIf: 'true' # If true, display this config group, else hide this config group.
# Jinja expression resulting in a quoted boolean may be used for dynamic behavior
# (boolean string, 'true' | 'false', defaults 'true')
Generic UI Elements
Below is a comprehensive list of all user-defined items and their possible attributes. These are highly customizable, using both YAML either Jinja2.
Toggle Button
Defines a toggle button and its options for the node type. The metadata can be referenced in the config
object using the attributeName
.
config:
- groupName: 'My Config Group'
items:
- type: toggleButton
displayName: My Button # Name of the button (string)
attributeName: myButton # Reference name for this attribute (string)
isRequired: true # If this config item is required (boolean)
enableIf: 'true' # If true, display this config group, else hide this config group.
# Jinja expression resulting in a quoted boolean may be used for dynamic behavior
# (boolean string, 'true' | 'false', defaults 'true')
Dropdown Selector
Defines a dropdown selector and its options for the node type. The metadata can be referenced in the config
object using the attributeName
.
config:
- groupName: 'My Config Group'
items:
- type: dropdownSelector
displayName: My Dropdown Selector # Name of the dropdown selector (string)
attributeName: myDropdown # Reference name for this item (string)
default: option1 #Default selection (string)
options: #Options for the dropdown (strings)
- option1
- option2
isRequired: true # If this config item is required (boolean)
enableIf: 'true' # If true, display this config group, else hide this config group.
# Jinja expression resulting in a quoted boolean may be used for dynamic behavior
# (boolean string, 'true' | 'false', defaults 'true')
Column Dropdown Selector
Defines a dropdown selector using that node's columns and its options for the node type. The metadata can be referenced in the config
object using the attributeName
.
config:
- groupName: 'My Config Group'
items:
- type: columnDropdownSelector
displayName: Column Name # Name of the dropdown selector (string)
attributeName: myColumnDropdown # Reference name for this item (string)
isRequired: true # If this config item is required (boolean)
enableIf: 'true' # If true, display this config group, else hide this config group.
# Jinja expression resulting in a quoted boolean may be used for dynamic behavior
# (boolean string, 'true' | 'false', defaults 'true')
Tabular Configuration Component
A tabular structure for collecting metadata. Each column in the component can be one of several types including dropdownSelector
, toggleButton
, columnDropdownSelector
, andtextBox
. The metadata can be referenced in the config
object using the attributeName
.
config:
- groupName: 'My Config Group'
items:
- type: tabular
displayName: My Tabular Config # Name of the tabular config (string)
attributeName: myTabularConfig # Reference name for this item (string)
isRequired: false
enableIf: 'true' # If true, display this config group, else hide this config group.
# Jinja expression resulting in a quoted boolean may be used for dynamic behavior
# (boolean string, 'true' | 'false', defaults 'true')
columns:
- type: dropdownSelector
displayName: My Dropdown Selector # Name of the dropdown selector (string)
attributeName: myDropdown # Reference name for this item (string)
options: # Options for the dropdown (strings)
- option1
- option2
isRequired: false
enableIf: 'true' # If true, display this config group, else hide this config group.
# Jinja expression resulting in a quoted boolean may be used for dynamic behavior
# (boolean string, 'true' | 'false', defaults 'true')
- type: toggleButton
displayName: My Toggle Button 2
attributeName: myToggleButton2 # Reference name for this item (string)
isRequired: false
enableIf: 'true' # If true, display this config group, else hide this config group.
# Jinja expression resulting in a quoted boolean may be used for dynamic behavior
# (boolean string, 'true' | 'false', defaults 'true')
- type: columnDropdownSelector
displayName: Column Name # Name of the dropdown selector (string)
attributeName: myColumnDropdown # Reference name for this item (string)
isRequired: true # If this config item is required (boolean)
enableIf: 'true' # If true, display this config group, else hide this config group.
# Jinja expression resulting in a quoted boolean may be used for dynamic behavior
# (boolean string, 'true' | 'false', defaults 'true')
Column Selector
Defines a column selector transfer component. The metadata can be referenced at the column-level using the attributeName
.
config:
- groupName: 'My Config Group'
items:
- type: columnSelector
displayName: My Column Selector # Name of the column selector (string)
attributeName: myColumnSelector # Reference name for this item (string)
isRequired: true # If this config item is required (boolean)
enableIf: 'true' # If true, display this config group, else hide this config group.
# Jinja expression resulting in a quoted boolean may be used for dynamic behavior
# (boolean string, 'true' | 'false', defaults 'true')
Text Box
Defines a text box and its options, with optional support for SQL syntax highlighting. The metadata can be referenced in the config
object using the attributeName
.
config:
- groupName: 'My Config Group'
items:
- type: textBox
displayName: My Textbox # Name of the textbox (string)
attributeName: myTextbox # Reference name for this attribute (string)
syntax: sql # Syntax highlighting in text box (string, defaults 'none', 'none' | 'sql')
isRequired: true # If this config item is required (boolean)
enableIf: 'true' # If true, display this config group, else hide this config group.
# Jinja expression resulting in a quoted boolean may be used for dynamic behavior
# (boolean string, 'true' | 'false', defaults 'true')
System Columns
Append additional columns to a node on initialization.
systemColumns: # array of the following objects
- displayName: system_column_name1 # display name of the system column (string)
#{{NODE_NAME}} can be used to reference the name of the node the column is generated for
attributeName: isSurrogateKey # name of attribute that can be referenced in template code (string)
transform: "my sql transform" # initial transform value (string)
dataType: NUMBER # SQL data type (string)
placement: beginning # Determines placement of system column in relation to normal columns. beginning or end (string)
System columns are only added to a node when the node is first created on the graph. When adding new system columns to a UDN, these system columns will not immediately be available in the metadata of the current node you are editing.
In order for these changes to take effect, you must create a new node of this type on your graph. You must select this new node in the Node Type Editor to continue authoring it.
Mapping Columns
Append additional metadata columns to the mapping grid.
mappingColumns:
- headerName: My Mapping Column Name
attributeName: myMappingColumn
type: textBox
- headerName: Tech Description
attributeName: techDesc
type: textBox
- headerName: Ghost Record
attributeName: ghostRecord
type: textBox