Skip to main content

Nodes

A node is a CML file that maps to one database table and defines attributes, metrics, and joins.

File naming convention: {name}.node.celiq

Minimal example

node: payment
table: public.payment
label: Payments
description: One row per payment transaction.

Top-level fields

FieldTypeRequiredDescription
nodestringInternal identifier — matches the filename
tablestringFully qualified table name (schema.table)
labelstringHuman-readable display name
descriptionstringDescription shown in Browse mode
connectionstringOverride the project connection for this node

Attributes

attributes:
- name: payment_id
type: integer
role: primary_key
label: Payment ID
description: Unique payment identifier

- name: payment_date
type: date
is_date: true
label: Payment date

- name: customer_country
type: string
geo_type: country_name
label: Customer country

Attribute fields

FieldTypeDescription
namestringColumn name in the database
typestringData type: string, integer, float, date, datetime, boolean
rolestringprimary_key, foreign_key, attribute, dimension
labelstringDisplay name
descriptionstringDescription
is_datebooleanMark as a date field for grain selection
is_hiddenbooleanHide from Discover field picker
geo_typestringGeographic type — see Geo types →

Metrics

metrics:
- name: total_revenue
label: Total payment revenue
sql: SUM(amount)
type: currency
description: Sum of all payment amounts

- name: avg_payment
label: Average payment amount
sql: AVG(amount)
type: float

- name: payment_count
label: Number of payments
sql: COUNT(*)
type: integer

Metric fields

FieldTypeDescription
namestringInternal identifier
sqlstringAggregation SQL expression
typestringinteger, float, currency, percentage
labelstringDisplay name
descriptionstringDescription

Joins

joins:
- node: customer
type: left
on: payment.customer_id = customer.customer_id

Join fields

FieldValuesDescription
nodestringTarget node name
typeleft, inner, right, fullJoin type (default: left)
onstringSQL join condition