Skip to content

Table

Tables are the fundamental building block for storing data when using sqlanvil. sqlanvil compiles your sqlanvil core code into SQL, executes the SQL code, and creates your defined tables in your configured data warehouse (BigQuery, Postgres, or Supabase).

You can create tables in the following ways. Available config options are defined in TableConfig, and are shared across all the following ways of creating tables.

Using a SQLX file:

-- definitions/name.sqlx
config {
type: "table"
}
SELECT 1

Using action configs files:

definitions/actions.yaml
actions:
- table:
filename: name.sql
-- definitions/name.sql
SELECT 1

Using the Javascript API:

definitions/file.js
table("name", { type: "table" }).query("SELECT 1 AS TEST")

Note: When using the Javascript API, methods in this class can be accessed by the returned value. This is where query comes from.

  • ActionBuilder‹Table›

    Table

assertions(assertions: TableAssertionsConfig): this

deprecated Deprecated in favor of TableConfig.assertions.

Sets in-line assertions for this table.

Parameters:

NameType
assertionsTableAssertionsConfig

Returns: this


bigquery(bigquery: WarehouseOptions): this

deprecated Deprecated in favor of options available directly on TableConfig. For example: publish("name", { type: "table", partitionBy: "column" }).

Sets bigquery options for the action.

Parameters:

NameType
bigqueryWarehouseOptions

Returns: this


columns(columns: ColumnDescriptor[]): this

deprecated Deprecated in favor of TableConfig.columns.

Sets the column descriptors of columns in this table.

Parameters:

NameType
columnsColumnDescriptor[]

Returns: this


database(database: string): this

deprecated Deprecated in favor of TableConfig.project.

Sets the database in which to create the output of this action. For BigQuery targets this is the Google Cloud project ID; for Postgres/Supabase targets this is the database name in workflow_settings.yaml.

Parameters:

NameType
databasestring

Returns: this


dependencies(value: Resolvable | Resolvable[]): this

deprecated Deprecated in favor of TableConfig.dependencies.

Sets dependencies of the table.

Parameters:

NameType
valueResolvable | Resolvable[]

Returns: this


description(description: string): this

deprecated Deprecated in favor of TableConfig.description.

Sets the description of this assertion.

Parameters:

NameType
descriptionstring

Returns: this


disabled(disabled: boolean): this

deprecated Deprecated in favor of TableConfig.disabled.

If called with true, this action is not executed. The action can still be depended upon. Useful for temporarily turning off broken actions.

Parameters:

NameTypeDefault
disabledbooleantrue

Returns: this


hermetic(hermetic: boolean): void

deprecated Deprecated in favor of TableConfig.hermetic.

If true, this indicates that the action only depends on data from explicitly-declared dependencies. Otherwise if false, it indicates that the action depends on data from a source which has not been declared as a dependency.

Parameters:

NameType
hermeticboolean

Returns: void


postOps(posts: ContextableITableContext, string | string[]›): this

Sets a post-operation to run after the query is run. This is often used for revoking temporary permissions granted to access source tables.

Example:

definitions/file.js
publish("example")
.preOps(ctx => `GRANT SELECT ON TABLE ${ctx.ref("other_table")} TO sqlanvil_reader`)
.query(ctx => `SELECT * FROM ${ctx.ref("other_table")}`)
.postOps(ctx => `REVOKE SELECT ON TABLE ${ctx.ref("other_table")} FROM sqlanvil_reader`)

Parameters:

NameType
postsContextableITableContext, string | string[]›

Returns: this


preOps(pres: ContextableITableContext, string | string[]›): this

Sets a pre-operation to run before the query is run. This is often used for temporarily granting permission to access source tables.

Example:

definitions/file.js
publish("example")
.preOps(ctx => `GRANT SELECT ON TABLE ${ctx.ref("other_table")} TO sqlanvil_reader`)
.query(ctx => `SELECT * FROM ${ctx.ref("other_table")}`)
.postOps(ctx => `REVOKE SELECT ON TABLE ${ctx.ref("other_table")} FROM sqlanvil_reader`)

Parameters:

NameType
presContextableITableContext, string | string[]›

Returns: this


query(query: ContextableITableContext, string›): this

Sets the query to generate the table from.

Parameters:

NameType
queryContextableITableContext, string›

Returns: this


schema(schema: string): this

deprecated Deprecated in favor of TableConfig.dataset.

Sets the schema (BigQuery dataset / Postgres schema) in which to create the output of this action.

Parameters:

NameType
schemastring

Returns: this


setDependOnDependencyAssertions(dependOnDependencyAssertions: boolean): this

deprecated Deprecated in favor of TableConfig.dependOnDependencyAssertions.

When called with true, assertions dependent upon any dependency will be add as dedpendency to this action.

Parameters:

NameType
dependOnDependencyAssertionsboolean

Returns: this


tags(value: string | string[]): this

deprecated Deprecated in favor of TableConfig.tags.

Sets a list of user-defined tags applied to this action.

Parameters:

NameType
valuestring | string[]

Returns: this


type(type: TableType): this

deprecated Deprecated in favor of action type can being set in the configs passed to action constructor functions, for example publish("name", { type: "table" }).

Parameters:

NameType
typeTableType

Returns: this