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.

🚧

Disabling Deploy

If a node exists on the target environment and deploy is disabled, the next deployment will cause that node's table to be dropped.

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 column(s) 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 Out-of-the-Box 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 and/or 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)

🚧

Note: When Adding/Modifying System Columns

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