Skip to main content

Documentation index: llms.txt. This page is also available as markdown: append .md to this URL or send Accept: text/markdown.

Custom Node Types

Coalesce comes with built-in Node Types and Packages for data transformations, and you can also create your own custom Node Types using YAML, Jinja 2, and SQL.

A custom Node Type can be YAML or SQL. Both share the same anatomy; they differ in how Nodes of the type are configured:

  • YAML Node Types declare config items that render as mapping-grid and panel controls. Best for persistent, curated patterns. Follow the Node Definition path.
  • SQL Node Types declare annotations that Node authors write directly in their SQL. Best for SQL-first, transformation-heavy patterns. Follow the Defining a SQL Node Type path.

Not sure which to build on? See Choosing Between YAML and SQL Node Types.

To make your own Node Type, go to Build Settings > Node Types and select Create Node Type to start from scratch, choosing Node V1 (YAML) or Node V2 (SQL), or Duplicate on any Node Type to extend existing functionality.

Learn About the Components of a Node Type

Before building, review our guides on each part of a Node Type and how they work together.

Every Node Type of either kind consists of these components:

  1. Node Definition - Written in YAML. On a YAML Node Type it specifies UI elements and configurations like node color, materialization options, and business keys; on a SQL Node Type it declares the type's annotations instead.
  2. Create Template - Defines the table's structure (DDL).
  3. Run Template - Defines how the table will be populated with data (DML).
  4. Hydrated Metadata - An object that contains all the structured information needed to define a Node in Coalesce. Templates on both kinds read from it.
  5. Macros - A block of code you can define once to use multiple times. They can be used in the Create or Run template.
Shows the dimension's column definitions with properties like ID fields, data types, and nullable flags on the left, while displaying node-level configuration options including materialization settings on the right under the Node Definition tab.

What's Next