SnowConvert AI - Vertica - CREATE TABLE¶
説明¶
論理スキーマにテーブルを作成します。( VerticaSQL 言語リファレンスCreate Table )。
警告
この構文はSnowflakeで部分的にサポートされています。これらの句の翻訳は保留中です。
DISK_QUOTA quota
SET USING expression
ENCODING encoding-type
ACCESSRANK integer
文法構文¶
CREATE TABLE [ IF NOT EXISTS ] [[database.]schema.]table
( column-definition[,...] [, table-constraint [,...]] )
[ ORDER BY column[,...] ]
[ segmentation-spec ]
[ KSAFE [safety] ]
[ partition-clause]
[ {INCLUDE | EXCLUDE} [SCHEMA] PRIVILEGES ]
[ DISK_QUOTA quota ]
<column-definition> ::=
column-name data-type
[ column-constraint ][...]
[ ENCODING encoding-type ]
[ ACCESSRANK integer ]
<column-constraint> ::=
[ { AUTO_INCREMENT | IDENTITY } [ (args) ] ]
[ CONSTRAINT constraint-name ] {
[ CHECK (expression) [ ENABLED | DISABLED ] ]
[ [ DEFAULT expression ] [ SET USING expression } | DEFAULT USING expression ]
[ NULL | NOT NULL ]
[ { PRIMARY KEY [ ENABLED | DISABLED ] REFERENCES table [( column )] } ]
[ UNIQUE [ ENABLED | DISABLED ] ]
}
<table-constraint>::=
[ CONSTRAINT constraint-name ]
{
... PRIMARY KEY (column[,... ]) [ ENABLED | DISABLED ]
... | FOREIGN KEY (column[,... ] ) REFERENCES table [ (column[,...]) ]
... | UNIQUE (column[,...]) [ ENABLED | DISABLED ]
... | CHECK (expression) [ ENABLED | DISABLED ]
}
テーブルオプション¶
Order by¶
Verticaでは、この ORDER BY 句は、テーブルの最適化されたストレージ構造である superprojection 内で、データが物理的にどのようにソートされるかを指定します。このテーブル作成時の明示的な物理的順序は、Snowflakeでは直接サポートされていません。詳細は SSC-EWI-VT0002. をご参照ください。
サンプルソース¶
Vertica¶
CREATE TABLE metrics
(
metric_id INT,
business_unit VARCHAR(100),
metric_category VARCHAR(50) NOT NULL,
measurement_date DATE NOT NULL
)
ORDER BY measurement_date, business_unit, metric_category;
Snowflake¶
CREATE TABLE metrics
(
metric_id INT,
business_unit VARCHAR(100),
metric_category VARCHAR(50) NOT NULL,
measurement_date DATE NOT NULL
)
!!!RESOLVE EWI!!! /*** SSC-EWI-VT0002 - ORDER BY TABLE OPTION IS NOT SUPPORTED IN SNOWFLAKE ***/!!!
ORDER BY measurement_date, business_unit, metric_category
COMMENT = '{ "origin": "sf_sc", "name": "snowconvert", "version": { "major": 0, "minor": 0, "patch": "0" }, "attributes": { "component": "vertica", "convertedOn": "06/17/2025", "domain": "no-domain-provided" }}';
Projections句¶
VerticaのProjectionsは、ディスク上のデータの物理的な順序を定義し維持するメカニズムで、特定のアクセスパターンに対してクエリのパフォーマンスを最適化します。しかし、Snowflakeは根本的に異なるストレージと最適化戦略を採用しています。Snowflakeのデータは自動的に不変の マイクロパーティション に分割され、クラウドサービスによって整理され管理されます。
挿入または クラスタリングキー の適用により、これらのマイクロパーティション内に固有の順序が存在する可能性がありますが、Snowflakeのクエリオプティマイザーとその基礎となるアーキテクチャは、事前に定義されたグローバルなソート順序に関係なく、クエリ実行中にこれらのマイクロパーティションを効率的にプルーニングするように設計されています。このアプローチと自動キャッシング、列指向ストレージ形式を組み合わせることで、Snowflakeは、VerticaのProjectionsような物理的なデータ構造をユーザーが手動で定義・管理することなく、高いパフォーマンスを実現させています。したがって、データ管理が簡素化され、明示的な物理的ソート定義なしに、より幅広いクエリパターンに最適化されます。
これらの理由により、以下の句はSnowflakeでは不要であり、元のコードから削除されています。
[ segmentation-spec ]
[ KSAFE [safety] ]
[ partition-clause]
Inherited Schema Privileges句¶
INCLUDE SCHEMA PRIVILEGES はVertica固有の関数で、権限がどのように継承されるか(この場合はスキーマレベルから)を規定します。Snowflakeには、 CREATE TABLE 構文内にこの句に直接相当するものがありません。Snowflakeにおける権限は、 GRANT ステートメントによって明示的に管理されます。
警告
この構文はSnowflakeではサポートされていません。
サンプルソース¶
Vertica¶
CREATE TABLE metrics
(
metric_id INT,
business_unit VARCHAR(100),
metric_category VARCHAR(50) NOT NULL,
measurement_date DATE NOT NULL
)
INCLUDE SCHEMA PRIVILEGES;
Snowflake¶
CREATE TABLE metrics
(
metric_id INT,
business_unit VARCHAR(100),
metric_category VARCHAR(50) NOT NULL,
measurement_date DATE NOT NULL
)
!!!RESOLVE EWI!!! /*** SSC-EWI-VT0001 - INHERITED PRIVILEGES CLAUSE IS NOT SUPPORTED IN SNOWFLAKE ***/!!!
INCLUDE SCHEMA PRIVILEGES
COMMENT = '{ "origin": "sf_sc", "name": "snowconvert", "version": { "major": 0, "minor": 0, "patch": "0" }, "attributes": { "component": "vertica", "convertedOn": "06/17/2025", "domain": "no-domain-provided" }}';
制約¶
IDENTITY - AUTO_INCREMENT¶
値がデータベースによって自動的に生成され、管理されるテーブル列を作成します。この列の値を変更したり、ロードしたりすることはできません。この制約は1つのテーブル列にのみ設定できます。
Success
この構文はSnowflakeで完全にサポートされています。
サンプルソース¶
Vertica¶
CREATE TABLE customers (
id AUTO_INCREMENT(1, 2),
name VARCHAR(50)
);
CREATE TABLE customers2 (
id IDENTITY(1, 2),
name VARCHAR(50)
);
Snowflake¶
CREATE TABLE customers (
id INT AUTOINCREMENT(1, 2) ORDER,
name VARCHAR(50)
)
COMMENT = '{ "origin": "sf_sc", "name": "snowconvert", "version": { "major": 0, "minor": 0, "patch": "0" }, "attributes": { "component": "vertica", "convertedOn": "06/17/2025", "domain": "no-domain-provided" }}';
CREATE TABLE customers2 (
id INT IDENTITY(1, 2) ORDER,
name VARCHAR(50)
)
COMMENT = '{ "origin": "sf_sc", "name": "snowconvert", "version": { "major": 0, "minor": 0, "patch": "0" }, "attributes": { "component": "vertica", "convertedOn": "06/17/2025", "domain": "no-domain-provided" }}';
CHECK 制約¶
Verticaの CHECK 句は、新規または更新された行がブール式を満たすことを要求します。Snowflakeにはこの句に相当するものがないため、 SnowConvert AI は EWI を追加します。変換後のコードでは、これは CHECK 属性またはテーブル制約として適用されます。
危険
この構文はSnowflakeではサポートされていません。
サンプルソース¶
Vertica¶
CREATE TABLE table1 (
product_id INT PRIMARY KEY,
quantity INT CHECK (quantity >= 0)
);
Snowflake¶
CREATE TABLE table1 (
product_id INT PRIMARY KEY,
quantity INT
!!!RESOLVE EWI!!! /*** SSC-EWI-0035 - CHECK STATEMENT NOT SUPPORTED ***/!!! CHECK (quantity >= 0)
)
COMMENT = '{ "origin": "sf_sc", "name": "snowconvert", "version": { "major": 0, "minor": 0, "patch": "0" }, "attributes": { "component": "vertica", "convertedOn": "06/17/2025", "domain": "no-domain-provided" }}';
DEFAULT 制約¶
警告
この構文はSnowflakeで部分的にサポートされています。
Verticaの基本的な DEFAULT 句は完全にサポートされており、Snowflakeに直接変換されます。しかし、Verticaの DEFAULT USING 句については、翻訳は部分的なものです。Snowflakeは、新しい行が挿入されると DEFAULT の値を正しく適用しますが、 USING 部分の更新の遅延機能には直接相当するものがなく、一部の式はSnowflakeでサポートされない可能性があります。そのため、この機能の違いを強調するために警告が追加されます。
サンプルソース¶
Vertica¶
CREATE TABLE table1 (
base_value INT,
status_code INT DEFAULT 0,
derived_value INT DEFAULT USING (base_value + 100)
);
Snowflake¶
CREATE TABLE table1 (
base_value INT,
status_code INT DEFAULT 0,
derived_value INT DEFAULT (base_value + 100) /*** SSC-FDM-VT0001 - EXPRESSION IN USING CONSTRAINT MIGHT NOT BE SUPPORTED IN SNOWFLAKE ***/
)
COMMENT = '{ "origin": "sf_sc", "name": "snowconvert", "version": { "major": 0, "minor": 0, "patch": "0" }, "attributes": { "component": "vertica", "convertedOn": "06/17/2025", "domain": "no-domain-provided" }}';
PRIMARY KEY - UNIQUE - FOREIGN KEY¶
SnowConvert AI は制約定義を保持しますが、Snowflakeでは、これらのプロパティは他のデータベースからの移行を容易にするために提供されています。Snowflakeによって強制保守されていません。これは、これらのプロパティのデフォルトを変更できることを意味しますが、デフォルトを変更すると、Snowflakeが制約を作成しなくなります。
警告
この構文はSnowflakeで部分的にサポートされています。
サンプルソース¶
Vertica¶
CREATE OR REPLACE TABLE employees (
emp_id INTEGER,
first_name VARCHAR(50),
last_name VARCHAR(50),
CONSTRAINT pk_employees_enabled PRIMARY KEY (emp_id) ENABLED
);
Snowflake¶
CREATE OR REPLACE TABLE employees (
emp_id INTEGER,
first_name VARCHAR(50),
last_name VARCHAR(50),
CONSTRAINT pk_employees_enabled PRIMARY KEY (emp_id) ENABLE
)
COMMENT = '{ "origin": "sf_sc", "name": "snowconvert", "version": { "major": 0, "minor": 0, "patch": "0" }, "attributes": { "component": "vertica", "convertedOn": "06/17/2025", "domain": "no-domain-provided" }}';
CREATE TABLE AS¶
説明¶
クエリの結果 からテーブルを作成し、ロードします。( Vertica SQL 言語リファレンスCreate Table )。
警告
この構文はSnowflakeで部分的にサポートされています。次の句の翻訳は保留中です。
[ /*+ LABEL */ ]
[ AT epoch ]
[ ENCODED BY column-ref-list ]
[ ENCODING encoding-type ]
[ ACCESSRANK integer ]
[ GROUPED ( column-reference[,...] ) ]
文法構文¶
CREATE TABLE [ IF NOT EXISTS ] [[database.]schema.]table
[ ( column-name-list ) ]
[ {INCLUDE | EXCLUDE} [SCHEMA] PRIVILEGES ]
AS [ /*+ LABEL */ ] [ AT epoch ] query [ ENCODED BY column-ref-list ] [ segmentation-spec ]
<column-name-list> ::=
column-name-list
[ ENCODING encoding-type ]
[ ACCESSRANK integer ]
[ GROUPED ( column-reference[,...] ) ]
テーブルオプション¶
Segmentation句¶
この構文はSnowflakeでは必要なく、元のコードからは削除されています。詳しくは、Projections句 を参照してください。
注釈
Snowflakeではこの構文は必要ありません。
Inherited Schema Privileges句¶
INCLUDE SCHEMA PRIVILEGES はVertica固有の関数で、権限がどのように継承されるか(この場合はスキーマレベルから)を規定します。Snowflakeには、 CREATE TABLE 構文内にこの句に直接相当するものがありません。詳しくは Inherited Schema Privileges句 を参照してください。
警告
この構文はSnowflakeではサポートされていません。
関連 EWIs¶
SSC-EWI-VT0001 :Snowflakeでは、Inherited privileges句はサポートされていません。
CREATE TABLE LIKE¶
説明¶
既存のテーブルを複製する ことでテーブルを作成します。( Vertica SQL 言語リファレンスCreate Table )。
警告
この構文はSnowflakeで部分的にサポートされています。次の句の翻訳は保留中です。
DISK_QUOTA quota
文法構文¶
CREATE TABLE [ IF NOT EXISTS ] [[database.]schema.]table
LIKE [[database.]schema.]existing-table
[ {INCLUDING | EXCLUDING} PROJECTIONS ]
[ {INCLUDE | EXCLUDE} [SCHEMA] PRIVILEGES ]
[ DISK_QUOTA quota ]
テーブルオプション¶
Projections¶
この構文はSnowflakeでは必要なく、元のコードからは削除されています。詳しくは、Projections句 を参照してください。
警告
Snowflakeではこの構文は必要ありません。
Inherited Schema Privileges句¶
INCLUDE SCHEMA PRIVILEGES はVertica固有の関数で、権限がどのように継承されるか(この場合はスキーマレベルから)を規定します。Snowflakeには、 CREATE TABLE 構文内にこの句に直接相当するものがありません。詳しくは Inherited Schema Privileges句 を参照してください。
警告
この構文はSnowflakeではサポートされていません。
関連 EWIs¶
SSC-EWI-VT0001 :Snowflakeでは、Inherited privileges句はサポートされていません。