Snowflake

v0.3.2 published on Tuesday, Nov 30, 2021 by Pulumi

Table

Import

format is database name | schema name | table name

 $ pulumi import snowflake:index/table:Table example 'databaseName|schemaName|tableName'

Example Usage

using Pulumi;
using Snowflake = Pulumi.Snowflake;

class MyStack : Stack
{
    public MyStack()
    {
        var schema = new Snowflake.Schema("schema", new Snowflake.SchemaArgs
        {
            Database = "database",
            DataRetentionDays = 1,
        });
        var sequence = new Snowflake.Sequence("sequence", new Snowflake.SequenceArgs
        {
            Database = schema.Database,
            Schema = schema.Name,
        });
        var table = new Snowflake.Table("table", new Snowflake.TableArgs
        {
            Database = schema.Database,
            Schema = schema.Name,
            Comment = "A table.",
            ClusterBies = 
            {
                "to_date(DATE)",
            },
            DataRetentionDays = schema.DataRetentionDays,
            ChangeTracking = false,
            Columns = 
            {
                new Snowflake.Inputs.TableColumnArgs
                {
                    Name = "id",
                    Type = "int",
                    Nullable = true,
                    Default = new Snowflake.Inputs.TableColumnDefaultArgs
                    {
                        Sequence = sequence.FullyQualifiedName,
                    },
                },
                new Snowflake.Inputs.TableColumnArgs
                {
                    Name = "identity",
                    Type = "NUMBER(38,0)",
                    Nullable = true,
                    Identity = new Snowflake.Inputs.TableColumnIdentityArgs
                    {
                        StartNum = 1,
                        StepNum = 3,
                    },
                },
                new Snowflake.Inputs.TableColumnArgs
                {
                    Name = "data",
                    Type = "text",
                    Nullable = false,
                },
                new Snowflake.Inputs.TableColumnArgs
                {
                    Name = "DATE",
                    Type = "TIMESTAMP_NTZ(9)",
                },
                new Snowflake.Inputs.TableColumnArgs
                {
                    Name = "extra",
                    Type = "VARIANT",
                    Comment = "extra data",
                },
            },
            PrimaryKey = new Snowflake.Inputs.TablePrimaryKeyArgs
            {
                Name = "my_key",
                Keys = 
                {
                    "data",
                },
            },
        });
    }

}
package main

import (
	"github.com/pulumi/pulumi-snowflake/sdk/go/snowflake"
	"github.com/pulumi/pulumi/sdk/v3/go/pulumi"
)

func main() {
	pulumi.Run(func(ctx *pulumi.Context) error {
		schema, err := snowflake.NewSchema(ctx, "schema", &snowflake.SchemaArgs{
			Database:          pulumi.String("database"),
			DataRetentionDays: pulumi.Int(1),
		})
		if err != nil {
			return err
		}
		sequence, err := snowflake.NewSequence(ctx, "sequence", &snowflake.SequenceArgs{
			Database: schema.Database,
			Schema:   schema.Name,
		})
		if err != nil {
			return err
		}
		_, err = snowflake.NewTable(ctx, "table", &snowflake.TableArgs{
			Database: schema.Database,
			Schema:   schema.Name,
			Comment:  pulumi.String("A table."),
			ClusterBies: pulumi.StringArray{
				pulumi.String("to_date(DATE)"),
			},
			DataRetentionDays: schema.DataRetentionDays,
			ChangeTracking:    pulumi.Bool(false),
			Columns: TableColumnArray{
				&TableColumnArgs{
					Name:     pulumi.String("id"),
					Type:     pulumi.String("int"),
					Nullable: pulumi.Bool(true),
					Default: &TableColumnDefaultArgs{
						Sequence: sequence.FullyQualifiedName,
					},
				},
				&TableColumnArgs{
					Name:     pulumi.String("identity"),
					Type:     pulumi.String("NUMBER(38,0)"),
					Nullable: pulumi.Bool(true),
					Identity: &TableColumnIdentityArgs{
						StartNum: pulumi.Int(1),
						StepNum:  pulumi.Int(3),
					},
				},
				&TableColumnArgs{
					Name:     pulumi.String("data"),
					Type:     pulumi.String("text"),
					Nullable: pulumi.Bool(false),
				},
				&TableColumnArgs{
					Name: pulumi.String("DATE"),
					Type: pulumi.String("TIMESTAMP_NTZ(9)"),
				},
				&TableColumnArgs{
					Name:    pulumi.String("extra"),
					Type:    pulumi.String("VARIANT"),
					Comment: pulumi.String("extra data"),
				},
			},
			PrimaryKey: &TablePrimaryKeyArgs{
				Name: pulumi.String("my_key"),
				Keys: pulumi.StringArray{
					pulumi.String("data"),
				},
			},
		})
		if err != nil {
			return err
		}
		return nil
	})
}
import pulumi
import pulumi_snowflake as snowflake

schema = snowflake.Schema("schema",
    database="database",
    data_retention_days=1)
sequence = snowflake.Sequence("sequence",
    database=schema.database,
    schema=schema.name)
table = snowflake.Table("table",
    database=schema.database,
    schema=schema.name,
    comment="A table.",
    cluster_bies=["to_date(DATE)"],
    data_retention_days=schema.data_retention_days,
    change_tracking=False,
    columns=[
        snowflake.TableColumnArgs(
            name="id",
            type="int",
            nullable=True,
            default=snowflake.TableColumnDefaultArgs(
                sequence=sequence.fully_qualified_name,
            ),
        ),
        snowflake.TableColumnArgs(
            name="identity",
            type="NUMBER(38,0)",
            nullable=True,
            identity=snowflake.TableColumnIdentityArgs(
                start_num=1,
                step_num=3,
            ),
        ),
        snowflake.TableColumnArgs(
            name="data",
            type="text",
            nullable=False,
        ),
        snowflake.TableColumnArgs(
            name="DATE",
            type="TIMESTAMP_NTZ(9)",
        ),
        snowflake.TableColumnArgs(
            name="extra",
            type="VARIANT",
            comment="extra data",
        ),
    ],
    primary_key=snowflake.TablePrimaryKeyArgs(
        name="my_key",
        keys=["data"],
    ))
import * as pulumi from "@pulumi/pulumi";
import * as snowflake from "@pulumi/snowflake";

const schema = new snowflake.Schema("schema", {
    database: "database",
    dataRetentionDays: 1,
});
const sequence = new snowflake.Sequence("sequence", {
    database: schema.database,
    schema: schema.name,
});
const table = new snowflake.Table("table", {
    database: schema.database,
    schema: schema.name,
    comment: "A table.",
    clusterBies: ["to_date(DATE)"],
    dataRetentionDays: schema.dataRetentionDays,
    changeTracking: false,
    columns: [
        {
            name: "id",
            type: "int",
            nullable: true,
            "default": {
                sequence: sequence.fullyQualifiedName,
            },
        },
        {
            name: "identity",
            type: "NUMBER(38,0)",
            nullable: true,
            identity: {
                startNum: 1,
                stepNum: 3,
            },
        },
        {
            name: "data",
            type: "text",
            nullable: false,
        },
        {
            name: "DATE",
            type: "TIMESTAMP_NTZ(9)",
        },
        {
            name: "extra",
            type: "VARIANT",
            comment: "extra data",
        },
    ],
    primaryKey: {
        name: "my_key",
        keys: ["data"],
    },
});

Create a Table Resource

new Table(name: string, args: TableArgs, opts?: CustomResourceOptions);
@overload
def Table(resource_name: str,
          opts: Optional[ResourceOptions] = None,
          change_tracking: Optional[bool] = None,
          cluster_bies: Optional[Sequence[str]] = None,
          columns: Optional[Sequence[TableColumnArgs]] = None,
          comment: Optional[str] = None,
          data_retention_days: Optional[int] = None,
          database: Optional[str] = None,
          name: Optional[str] = None,
          primary_key: Optional[TablePrimaryKeyArgs] = None,
          schema: Optional[str] = None,
          tags: Optional[Sequence[TableTagArgs]] = None)
@overload
def Table(resource_name: str,
          args: TableArgs,
          opts: Optional[ResourceOptions] = None)
func NewTable(ctx *Context, name string, args TableArgs, opts ...ResourceOption) (*Table, error)
public Table(string name, TableArgs args, CustomResourceOptions? opts = null)
name string
The unique name of the resource.
args TableArgs
The arguments to resource properties.
opts CustomResourceOptions
Bag of options to control resource's behavior.
resource_name str
The unique name of the resource.
args TableArgs
The arguments to resource properties.
opts ResourceOptions
Bag of options to control resource's behavior.
ctx Context
Context object for the current deployment.
name string
The unique name of the resource.
args TableArgs
The arguments to resource properties.
opts ResourceOption
Bag of options to control resource's behavior.
name string
The unique name of the resource.
args TableArgs
The arguments to resource properties.
opts CustomResourceOptions
Bag of options to control resource's behavior.

Table Resource Properties

To learn more about resource properties and how to use them, see Inputs and Outputs in the Architecture and Concepts docs.

Inputs

The Table resource accepts the following input properties:

Columns List<TableColumnArgs>
Definitions of a column to create in the table. Minimum one required.
Database string
The database in which to create the table.
Schema string
The schema in which to create the table.
ChangeTracking bool
Specifies whether to enable change tracking on the table. Default false.
ClusterBies List<string>
A list of one or more table columns/expressions to be used as clustering key(s) for the table
Comment string
Specifies a comment for the table.
DataRetentionDays int
Specifies the retention period for the table so that Time Travel actions (SELECT, CLONE, UNDROP) can be performed on historical data in the table. Default value is 1, if you wish to inherit the parent schema setting then pass in the schema attribute to this argument.
Name string
Specifies the identifier for the table; must be unique for the database and schema in which the table is created.
PrimaryKey TablePrimaryKeyArgs
Definitions of primary key constraint to create on table
Tags List<TableTagArgs>
Definitions of a tag to associate with the resource.
Columns []TableColumnArgs
Definitions of a column to create in the table. Minimum one required.
Database string
The database in which to create the table.
Schema string
The schema in which to create the table.
ChangeTracking bool
Specifies whether to enable change tracking on the table. Default false.
ClusterBies []string
A list of one or more table columns/expressions to be used as clustering key(s) for the table
Comment string
Specifies a comment for the table.
DataRetentionDays int
Specifies the retention period for the table so that Time Travel actions (SELECT, CLONE, UNDROP) can be performed on historical data in the table. Default value is 1, if you wish to inherit the parent schema setting then pass in the schema attribute to this argument.
Name string
Specifies the identifier for the table; must be unique for the database and schema in which the table is created.
PrimaryKey TablePrimaryKeyArgs
Definitions of primary key constraint to create on table
Tags []TableTagArgs
Definitions of a tag to associate with the resource.
columns TableColumnArgs[]
Definitions of a column to create in the table. Minimum one required.
database string
The database in which to create the table.
schema string
The schema in which to create the table.
changeTracking boolean
Specifies whether to enable change tracking on the table. Default false.
clusterBies string[]
A list of one or more table columns/expressions to be used as clustering key(s) for the table
comment string
Specifies a comment for the table.
dataRetentionDays number
Specifies the retention period for the table so that Time Travel actions (SELECT, CLONE, UNDROP) can be performed on historical data in the table. Default value is 1, if you wish to inherit the parent schema setting then pass in the schema attribute to this argument.
name string
Specifies the identifier for the table; must be unique for the database and schema in which the table is created.
primaryKey TablePrimaryKeyArgs
Definitions of primary key constraint to create on table
tags TableTagArgs[]
Definitions of a tag to associate with the resource.
columns Sequence[TableColumnArgs]
Definitions of a column to create in the table. Minimum one required.
database str
The database in which to create the table.
schema str
The schema in which to create the table.
change_tracking bool
Specifies whether to enable change tracking on the table. Default false.
cluster_bies Sequence[str]
A list of one or more table columns/expressions to be used as clustering key(s) for the table
comment str
Specifies a comment for the table.
data_retention_days int
Specifies the retention period for the table so that Time Travel actions (SELECT, CLONE, UNDROP) can be performed on historical data in the table. Default value is 1, if you wish to inherit the parent schema setting then pass in the schema attribute to this argument.
name str
Specifies the identifier for the table; must be unique for the database and schema in which the table is created.
primary_key TablePrimaryKeyArgs
Definitions of primary key constraint to create on table
tags Sequence[TableTagArgs]
Definitions of a tag to associate with the resource.

Outputs

All input properties are implicitly available as output properties. Additionally, the Table resource produces the following output properties:

Id string
The provider-assigned unique ID for this managed resource.
Owner string
Name of the role that owns the table.
Id string
The provider-assigned unique ID for this managed resource.
Owner string
Name of the role that owns the table.
id string
The provider-assigned unique ID for this managed resource.
owner string
Name of the role that owns the table.
id str
The provider-assigned unique ID for this managed resource.
owner str
Name of the role that owns the table.

Look up an Existing Table Resource

Get an existing Table resource’s state with the given name, ID, and optional extra properties used to qualify the lookup.

public static get(name: string, id: Input<ID>, state?: TableState, opts?: CustomResourceOptions): Table
@staticmethod
def get(resource_name: str,
        id: str,
        opts: Optional[ResourceOptions] = None,
        change_tracking: Optional[bool] = None,
        cluster_bies: Optional[Sequence[str]] = None,
        columns: Optional[Sequence[TableColumnArgs]] = None,
        comment: Optional[str] = None,
        data_retention_days: Optional[int] = None,
        database: Optional[str] = None,
        name: Optional[str] = None,
        owner: Optional[str] = None,
        primary_key: Optional[TablePrimaryKeyArgs] = None,
        schema: Optional[str] = None,
        tags: Optional[Sequence[TableTagArgs]] = None) -> Table
func GetTable(ctx *Context, name string, id IDInput, state *TableState, opts ...ResourceOption) (*Table, error)
public static Table Get(string name, Input<string> id, TableState? state, CustomResourceOptions? opts = null)
name
The unique name of the resulting resource.
id
The unique provider ID of the resource to lookup.
state
Any extra arguments used during the lookup.
opts
A bag of options that control this resource's behavior.
resource_name
The unique name of the resulting resource.
id
The unique provider ID of the resource to lookup.
name
The unique name of the resulting resource.
id
The unique provider ID of the resource to lookup.
state
Any extra arguments used during the lookup.
opts
A bag of options that control this resource's behavior.
name
The unique name of the resulting resource.
id
The unique provider ID of the resource to lookup.
state
Any extra arguments used during the lookup.
opts
A bag of options that control this resource's behavior.

The following state arguments are supported:

ChangeTracking bool
Specifies whether to enable change tracking on the table. Default false.
ClusterBies List<string>
A list of one or more table columns/expressions to be used as clustering key(s) for the table
Columns List<TableColumnArgs>
Definitions of a column to create in the table. Minimum one required.
Comment string
Specifies a comment for the table.
DataRetentionDays int
Specifies the retention period for the table so that Time Travel actions (SELECT, CLONE, UNDROP) can be performed on historical data in the table. Default value is 1, if you wish to inherit the parent schema setting then pass in the schema attribute to this argument.
Database string
The database in which to create the table.
Name string
Specifies the identifier for the table; must be unique for the database and schema in which the table is created.
Owner string
Name of the role that owns the table.
PrimaryKey TablePrimaryKeyArgs
Definitions of primary key constraint to create on table
Schema string
The schema in which to create the table.
Tags List<TableTagArgs>
Definitions of a tag to associate with the resource.
ChangeTracking bool
Specifies whether to enable change tracking on the table. Default false.
ClusterBies []string
A list of one or more table columns/expressions to be used as clustering key(s) for the table
Columns []TableColumnArgs
Definitions of a column to create in the table. Minimum one required.
Comment string
Specifies a comment for the table.
DataRetentionDays int
Specifies the retention period for the table so that Time Travel actions (SELECT, CLONE, UNDROP) can be performed on historical data in the table. Default value is 1, if you wish to inherit the parent schema setting then pass in the schema attribute to this argument.
Database string
The database in which to create the table.
Name string
Specifies the identifier for the table; must be unique for the database and schema in which the table is created.
Owner string
Name of the role that owns the table.
PrimaryKey TablePrimaryKeyArgs
Definitions of primary key constraint to create on table
Schema string
The schema in which to create the table.
Tags []TableTagArgs
Definitions of a tag to associate with the resource.
changeTracking boolean
Specifies whether to enable change tracking on the table. Default false.
clusterBies string[]
A list of one or more table columns/expressions to be used as clustering key(s) for the table
columns TableColumnArgs[]
Definitions of a column to create in the table. Minimum one required.
comment string
Specifies a comment for the table.
dataRetentionDays number
Specifies the retention period for the table so that Time Travel actions (SELECT, CLONE, UNDROP) can be performed on historical data in the table. Default value is 1, if you wish to inherit the parent schema setting then pass in the schema attribute to this argument.
database string
The database in which to create the table.
name string
Specifies the identifier for the table; must be unique for the database and schema in which the table is created.
owner string
Name of the role that owns the table.
primaryKey TablePrimaryKeyArgs
Definitions of primary key constraint to create on table
schema string
The schema in which to create the table.
tags TableTagArgs[]
Definitions of a tag to associate with the resource.
change_tracking bool
Specifies whether to enable change tracking on the table. Default false.
cluster_bies Sequence[str]
A list of one or more table columns/expressions to be used as clustering key(s) for the table
columns Sequence[TableColumnArgs]
Definitions of a column to create in the table. Minimum one required.
comment str
Specifies a comment for the table.
data_retention_days int
Specifies the retention period for the table so that Time Travel actions (SELECT, CLONE, UNDROP) can be performed on historical data in the table. Default value is 1, if you wish to inherit the parent schema setting then pass in the schema attribute to this argument.
database str
The database in which to create the table.
name str
Specifies the identifier for the table; must be unique for the database and schema in which the table is created.
owner str
Name of the role that owns the table.
primary_key TablePrimaryKeyArgs
Definitions of primary key constraint to create on table
schema str
The schema in which to create the table.
tags Sequence[TableTagArgs]
Definitions of a tag to associate with the resource.

Supporting Types

TableColumn

Name string
Column name
Type string
Column type, e.g. VARIANT
Comment string
Column comment
Default TableColumnDefault
Defines the column default value; note due to limitations of Snowflake’s ALTER TABLE ADD/MODIFY COLUMN updates to default will not be applied
Identity TableColumnIdentity
Defines the identity start/step values for a column. Note Identity/default are mutually exclusive.
Nullable bool
Whether this column can contain null values. Note: Depending on your Snowflake version, the default value will not suffice if this column is used in a primary key constraint.
Name string
Column name
Type string
Column type, e.g. VARIANT
Comment string
Column comment
Default TableColumnDefault
Defines the column default value; note due to limitations of Snowflake’s ALTER TABLE ADD/MODIFY COLUMN updates to default will not be applied
Identity TableColumnIdentity
Defines the identity start/step values for a column. Note Identity/default are mutually exclusive.
Nullable bool
Whether this column can contain null values. Note: Depending on your Snowflake version, the default value will not suffice if this column is used in a primary key constraint.
name string
Column name
type string
Column type, e.g. VARIANT
comment string
Column comment
default TableColumnDefault
Defines the column default value; note due to limitations of Snowflake’s ALTER TABLE ADD/MODIFY COLUMN updates to default will not be applied
identity TableColumnIdentity
Defines the identity start/step values for a column. Note Identity/default are mutually exclusive.
nullable boolean
Whether this column can contain null values. Note: Depending on your Snowflake version, the default value will not suffice if this column is used in a primary key constraint.
name str
Column name
type str
Column type, e.g. VARIANT
comment str
Column comment
default TableColumnDefault
Defines the column default value; note due to limitations of Snowflake’s ALTER TABLE ADD/MODIFY COLUMN updates to default will not be applied
identity TableColumnIdentity
Defines the identity start/step values for a column. Note Identity/default are mutually exclusive.
nullable bool
Whether this column can contain null values. Note: Depending on your Snowflake version, the default value will not suffice if this column is used in a primary key constraint.

TableColumnDefault

Constant string
Expression string
Sequence string
Constant string
Expression string
Sequence string
constant string
expression string
sequence string

TableColumnIdentity

startNum number
stepNum number

TablePrimaryKey

Keys List<string>
Columns to use in primary key
Name string
Name of constraint
Keys []string
Columns to use in primary key
Name string
Name of constraint
keys string[]
Columns to use in primary key
name string
Name of constraint
keys Sequence[str]
Columns to use in primary key
name str
Name of constraint

TableTag

Name string
Tag name, e.g. department.
Value string
Tag value, e.g. marketing_info.
Database string
Name of the database that the tag was created in.
Schema string
Name of the schema that the tag was created in.
Name string
Tag name, e.g. department.
Value string
Tag value, e.g. marketing_info.
Database string
Name of the database that the tag was created in.
Schema string
Name of the schema that the tag was created in.
name string
Tag name, e.g. department.
value string
Tag value, e.g. marketing_info.
database string
Name of the database that the tag was created in.
schema string
Name of the schema that the tag was created in.
name str
Tag name, e.g. department.
value str
Tag value, e.g. marketing_info.
database str
Name of the database that the tag was created in.
schema str
Name of the schema that the tag was created in.

Package Details

Repository
https://github.com/pulumi/pulumi-snowflake
License
Apache-2.0
Notes
This Pulumi package is based on the snowflake Terraform Provider.