Skip to content

Naming patterns

DeltaVault names every object it generates from a small set of patterns, one row per layer: Landing, Staging, Persistent Staging, the Data Vault types, and the Dim and Fact marts. Each row sets the schema and the table pattern, and now sets two casings: one for the schema and table identifiers, and one for the columns. This page explains the patterns, the two casings, the new None (verbatim) option, and where each casing is applied.

Open Settings from the left sidebar and choose the layer you want on the left: Staging, Persistent Staging, Data Vault, or Data Mart. Each of these has a Naming patterns card. The patterns are organization-wide: they apply to every project in your organization, and editing them requires the administrator role.

Each row has two pattern inputs and two casing selects, with a live Preview on the right.

Schema is the schema name DeltaVault generates for that layer. Table is the table name pattern. Both accept tokens that DeltaVault fills in for each source table:

  • {{this}} is the source table name.
  • {{schema}} is the source table’s schema.
  • {{rs}} is the record source.
  • {{rsn}} is the record source name.

Literal text around the tokens is kept exactly as you type it. For example, a Staging table pattern of stg_{{this}} against a source table customer produces stg_customer.

There are two casing selects per row, because the schema and table identifiers and the column identifiers can follow different conventions.

Table casing sets how DeltaVault cases the schema and table identifiers for that row. Its first option is Inherit (shared), which uses the single Casing value from the Shared settings section, so you set your house casing once and every layer follows it. Choose a specific casing on a row to override the Shared value for that row only.

Column casing sets how DeltaVault cases the column identifiers for that row. Its first option is Inherit (Table), the default, which means the columns follow whatever the row’s Table casing resolves to. Choose a specific casing to give the columns their own convention, independent of the table.

Both selects offer the same casings:

  • snake_case: lower case words joined by underscores.
  • UPPER_SNAKE_CASE: upper case words joined by underscores.
  • lower: the whole identifier lower cased.
  • UPPER: the whole identifier upper cased.
  • PascalCase: each word capitalized, joined with no separators.
  • camelCase: like PascalCase but the first letter lower cased.
  • None (verbatim): no transformation. The identifier is kept exactly as it came from the source.

DeltaVault resolves the casing for each generated identifier by walking from the most specific setting to the least specific. An explicit choice (including None (verbatim)) stops the walk:

  • For the schema and table identifiers: the row’s Table casing, then if that is Inherit (shared), the Shared casing, then verbatim if neither is set.
  • For the column identifiers: the row’s Column casing, then if that is Inherit (Table), the resolved Table casing above, on down the same chain.

So a row with Table casing set to lower and Column casing left on Inherit (Table) produces lower case tables and lower case columns. Set Column casing to None (verbatim) on that same row to keep the table lower case but leave the columns exactly as the source named them.

Before None (verbatim) existed, leaving a row on Inherit meant the columns followed the table, and there was no way to say “do not change these identifiers at all”. None (verbatim) is that explicit choice. Pick it for Column casing to import columns exactly as the source provides them, or pick it for Table casing to keep the schema and table names verbatim too (the columns then inherit verbatim as well, unless you set the Column casing to something specific).

Casing applies only to identifiers DeltaVault generates from this point forward. It does not rename anything you have already committed. The places casing is applied are:

  • Importing source metadata: the schema, table, and column names DeltaVault creates for the new layer objects.
  • Generating Data Vault structures: the column names emitted into hubs, links, and satellites.
  • Creating a view from the canvas: the generated and aliased column identifiers on the new view.

Because Column casing now defaults to Inherit (Table), a new import cases its columns to match the resolved table casing. If you preferred the older behaviour where columns came in exactly as the source named them, set Column casing to None (verbatim) on the rows you import into (or set Table casing to None (verbatim), which the columns inherit).