テーブル (Azure SQL データ ウェアハウス) を作成します。CREATE TABLE (Azure SQL Data Warehouse)

適用対象: XSQL Server XAzure SQL Database○Azure SQL Data Warehouse ○Parallel Data Warehouse THIS TOPIC APPLIES TO: noSQL Server noAzure SQL DatabaseyesAzure SQL Data Warehouse yesParallel Data Warehouse

新しいテーブルを作成 SQL データ ウェアハウスSQL Data Warehouseまたは Parallel Data WarehouseParallel Data Warehouseです。Creates a new table in SQL データ ウェアハウスSQL Data Warehouse or Parallel Data WarehouseParallel Data Warehouse.

テーブルとその使用方法を理解するのを参照してください。 SQL データ ウェアハウス内のテーブルです。To understand tables and how to use them, see Tables in SQL Data Warehouse.

注: この記事で SQL データ ウェアハウスに関するディスカッション適用 SQL Data Warehouse と並列データ ウェアハウスの両方に明記されない限り、します。NOTE: Discussions about SQL Data Warehouse in this article apply to both SQL Data Warehouse and Parallel Data Warehouse unless otherwise noted.

トピック リンク アイコン Transact-SQL 構文表記規則Topic link icon Transact-SQL Syntax Conventions

構文Syntax

-- Create a new table. 
CREATE TABLE [ database_name . [ schema_name ] . | schema_name. ] table_name   
    ( 
      { column_name <data_type>  [ <column_options> ] } [ ,...n ]   
    )  
    [ WITH [ <table_option> [ ,...n ] ) ]  
[;]  

<column_options> ::=
    [ COLLATE Windows_collation_name ]  
    [ NULL | NOT NULL ] -- default is NULL  
    [ [ CONSTRAINT constraint_name ] DEFAULT constant_expression  ]

<table_option> ::= 
    {   
        CLUSTERED COLUMNSTORE INDEX --default for SQL Data Warehouse 
      | HEAP --default for Parallel Data Warehouse   
      | CLUSTERED INDEX ( { index_column_name [ ASC | DESC ] } [ ,...n ] ) -- default is ASC 
    }  
    { 
        DISTRIBUTION = HASH ( distribution_column_name ) 
      | DISTRIBUTION = ROUND_ROBIN -- default for SQL Data Warehouse
      | DISTRIBUTION = REPLICATE -- default for Parallel Data Warehouse
    }   
    | PARTITION ( partition_column_name RANGE [ LEFT | RIGHT ] -- default is LEFT  
        FOR VALUES ( [ boundary_value [,...n] ] ) )  

<data type> ::=   
      datetimeoffset [ ( n ) ]  
    | datetime2 [ ( n ) ]  
    | datetime  
    | smalldatetime  
    | date  
    | time [ ( n ) ]  
    | float [ ( n ) ]  
    | real [ ( n ) ]  
    | decimal [ ( precision [ , scale ] ) ]   
    | numeric [ ( precision [ , scale ] ) ]   
    | money  
    | smallmoney  
    | bigint  
    | int   
    | smallint  
    | tinyint  
    | bit  
    | nvarchar [ ( n | max ) ]  -- max applies only to SQL Data Warehouse 
    | nchar [ ( n ) ]  
    | varchar [ ( n | max )  ] -- max applies only to SQL Data Warehouse  
    | char [ ( n ) ]  
    | varbinary [ ( n | max ) ] -- max applies only to SQL Data Warehouse  
    | binary [ ( n ) ]  
    | uniqueidentifier  

引数Arguments

database_namedatabase_name
新しいテーブルを格納するデータベースの名前です。The name of the database that will contain the new table. 既定値は現在のデータベースです。The default is the current database.

schema_nameschema_name
テーブルのスキーマです。The schema for the table. 指定するスキーマは省略可能です。Specifying schema is optional. 空白の場合は、既定のスキーマが使用されます。If blank, the default schema will be used.

table_nametable_name
新しいテーブルの名前です。The name of the new table. ローカル一時テーブルを作成するには、# でテーブル名を前に付けます。To create a local temporary table, precede the table name with #. 説明と一時テーブルの詳細については、次を参照してください。 Azure SQL データ ウェアハウス内の一時テーブルです。For explanations and guidance on temporary tables, see Temporary tables in Azure SQL Data Warehouse.

column_namecolumn_name
テーブルの列の名前です。The name of a table column.

列のオプション Column options

COLLATEWindows_collation_nameCOLLATE Windows_collation_name
式の照合順序を指定します。Specifies the collation for the expression. 照合順序でサポートされている Windows 照合順序のいずれかを指定する必要があります SQL ServerSQL Serverです。The collation must be one of the Windows collations supported by SQL ServerSQL Server. サポートされている Windows 照合順序の一覧については SQL ServerSQL Serverを参照してくださいWindows 照合順序名 (TRANSACT-SQL)です。For a list of Windows collations supported by SQL ServerSQL Server, see Windows Collation Name (Transact-SQL).

NULL | NOT NULL
指定するかどうかNULL列で値を許容します。Specifies whether NULL values are allowed in the column. 既定値は NULL です。The default is NULL.

[ CONSTRAINT constraint_name ] DEFAULT constant_expression[ CONSTRAINT constraint_name ] DEFAULT constant_expression
列の既定値を指定します。Specifies the default column value.

引数Argument 説明Explanation
constraint_nameconstraint_name (省略可能) 制約の名前です。The optional name for the constraint. 制約名は、データベース内で一意です。The constraint name is unique within the database. 名前は、他のデータベース内で再利用できます。The name can be re-used in other databases.
constant_expressionconstant_expression 列の既定値。The default value for the column. 式は、リテラル値である必要があります、または定数。The expression must be a literal value or a a constant. たとえば、これらの定数式が許可されている: 'CA'4です。For example, these constant expressions are allowed: 'CA', 4. これらは許可されていません: 2+3CURRENT_TIMESTAMPです。These are not allowed: 2+3, CURRENT_TIMESTAMP.

テーブル構造のオプション Table structure options

テーブルの種類を選択する方法の詳細については、次を参照してください。 Azure SQL データ ウェアハウス内のテーブルのインデックス作成です。For guidance on choosing the type of table, see Indexing tables in Azure SQL Data Warehouse.

CLUSTERED COLUMNSTORE INDEX
クラスター化列ストア インデックスとしてテーブルを格納します。Stores the table as a clustered columnstore index. クラスター化列ストア インデックスは、すべてのテーブルのデータに適用されます。The clustered columnstore index applies to all of the table data. これは、既定の SQL データ ウェアハウスSQL Data Warehouseします。This is the default for SQL データ ウェアハウスSQL Data Warehouse.

HEAP
テーブルをヒープとして格納します。Stores the table as a heap. これは、既定の Parallel Data WarehouseParallel Data Warehouseします。This is the default for Parallel Data WarehouseParallel Data Warehouse.

CLUSTERED INDEX( index_column_name [,...n ] )CLUSTERED INDEX ( index_column_name [ ,...n ] )
1 つまたは複数のキー列を含むクラスター化インデックスとしてテーブルを格納します。Stores the table as a clustered index with one or more key columns. これは、行によって、データを格納します。This stores the data by row. 使用してindex_column_nameをインデックスに 1 つまたは複数のキー列の名前を指定します。Use index_column_name to specify the name of one or more key columns in the index. 詳細については、全般的な解説内の行ストア テーブルを参照してください。For more information, see Rowstore Tables in the General Remarks.

LOCATION = USER_DB
このオプションは推奨されません。This option is deprecated. 不要になったが構文的に受け入れてし、不要になった動作に影響します。It is syntactically accepted, but no longer required and no longer affects behavior.

テーブルの配布オプション Table distribution options

最適な配布方法を選択して、分散テーブルを使用する方法を理解するを参照してくださいAzure SQL データ ウェアハウス内のテーブルを配布するです。To understand how to choose the best distribution method and use distributed tables, see Distributing tables in Azure SQL Data Warehouse.

DISTRIBUTION = HASH( distribution_column_name )DISTRIBUTION = HASH ( distribution_column_name )
1 つの配布に各行を割り当てに格納された値をハッシュしてdistribution_column_nameです。Assigns each row to one distribution by hashing the value stored in distribution_column_name. つまり、同じディストリビューションに同じ値を常にハッシュ アルゴリズムは決定的です。The algorithm is deterministic which means it always hashes the same value to the same distribution. ディストリビューション列は、NULL が同じ配布に割り当てられるあるすべての行から NOT NULL として定義する必要があります。The distribution column should be defined as NOT NULL since all rows that have NULL will be assigned to the same distribution.

DISTRIBUTION = ROUND_ROBIN
行に、ラウンド ロビン方式でのすべてのディストリビューションに均等に分散します。Distributes the rows evenly across all the distributions in a round-robin fashion. これは、既定の SQL データ ウェアハウスSQL Data Warehouseします。This is the default for SQL データ ウェアハウスSQL Data Warehouse.

DISTRIBUTION = REPLICATE
各コンピューティング ノードで、テーブルの 1 つのコピーを格納します。Stores one copy of the table on each Compute node. SQL データ ウェアハウスSQL Data Warehouse各コンピューティング ノードでディストリビューション データベースのテーブルが格納されます。For SQL データ ウェアハウスSQL Data Warehouse the table is stored on a distribution database on each Compute node. Parallel Data WarehouseParallel Data Warehouseでテーブルが格納されている、 SQL ServerSQL Serverコンピューティング ノードにまたがるファイル グループ。For Parallel Data WarehouseParallel Data Warehouse, the table is stored in a SQL ServerSQL Server filegroup that spans the Compute node. これは、既定の Parallel Data WarehouseParallel Data Warehouseします。This is the default for Parallel Data WarehouseParallel Data Warehouse.

テーブル パーティションのオプション Table partition options

テーブルのパーティションを使用する方法の詳細については、次を参照してください。 SQL データ ウェアハウス内のテーブルをパーティション分割です。For guidance on using table partitions, see Partitioning tables in SQL Data Warehouse.

PARTITION( partition_column_name RANGE [ LEFT | RIGHT ] FOR VALUES ([ boundary_value [,...n] ] ))PARTITION ( partition_column_name RANGE [ LEFT | RIGHT ] FOR VALUES ( [ boundary_value [,...n] ] ))
1 つまたは複数のテーブルのパーティションを作成します。Creates one or more table partitions. これらは、テーブルがヒープ、クラスター化インデックスまたはクラスター化列ストア インデックスとして格納されているかどうかに関係なく行のサブセットに対して操作を実行することは横方向のテーブルのスライスです。These are horizontal table slices that allow you to perform operations on subsets of rows regardless of whether the table is stored as a heap, clustered index, or clustered columnstore index. 配布 列とは異なりテーブルのパーティションは、各行が格納されている配布を特定できません。Unlike the distribution column, table partitions do not determine the distribution where each row is stored. 代わりに、テーブルのパーティションは、行をグループ化し、各配布内に格納する方法を決定します。Instead, table partitions determine how the rows are grouped and stored within each distribution.

引数Argument 説明Explanation
partition_column_namepartition_column_name 列を指定する SQL データ ウェアハウスSQL Data Warehouse行をパーティション分割に使用されます。Specifies the column that SQL データ ウェアハウスSQL Data Warehouse will use to partition the rows. このコラムでは、任意のデータ型を指定できます。This column can be any data type. SQL データ ウェアハウスSQL Data Warehouseパーティション列の値で昇順に並べ替えられます。 sorts the partition column values in ascending order. 低-高に順序付けがからLEFTRIGHTの目的、RANGE仕様です。The low-to-high ordering goes from LEFT to RIGHT for the purpose of the RANGE specification.
RANGE LEFT (低い値) の左側にある、パーティションに属する境界値を指定します。Specifies the boundary value belongs to the partition on the left (lower values). 既定値は LEFT です。The default is LEFT.
RANGE RIGHT 右 (値を大きく) 上のパーティションに属する境界値を指定します。Specifies the boundary value belongs to the partition on the right (higher values).
FOR VALUES( boundary_value [,...n] )FOR VALUES ( boundary_value [,...n] ) パーティションの境界値を指定します。Specifies the boundary values for the partition. boundary_value定数式です。boundary_value is a constant expression. NULL は指定できません。It cannot be NULL. 必要がありますかと一致かのデータ型に暗黙的に変換できるpartition_column_nameです。It must either match or be implicitly convertible to the data type of partition_column_name. サイズと値の小数点以下桁数でのデータ型が一致しないようにには、暗黙の変換中に切り捨てられることはできませんpartition_column_nameIt cannot be truncated during implicit conversion so that the size and scale of the value do not match the data type of partition_column_name

指定した場合、PARTITION句、境界値を指定しないで SQL データ ウェアハウスSQL Data Warehouse1 つのパーティション分割されたテーブルが作成されます。If you specify the PARTITION clause, but do not specify a boundary value, SQL データ ウェアハウスSQL Data Warehouse will create a partitioned table with one partition. 該当する場合、後で 2 つのパーティションにテーブルを分割します。If applicable, you an split the table into two partitions at a later time.

結果のテーブルに 2 つのパーティションに 1 つの境界値を指定する場合境界値よりも大きい値のいずれかの境界値と下限の値のいずれかです。If you specify one boundary value, the resulting table has two partitions; one for the values lower than the boundary value and one for the values higher than the boundary value. 非パーティション テーブルにパーティションを移動する場合、非パーティション テーブル、データを受け取るがそのメタデータでパーティション境界はありませんに注意してください。Note that if you move a partition into a non-partitioned table, the non-partitioned table will receive the data, but will not have the partition boundaries in its metadata.

参照してくださいパーティション テーブルを作成例」のセクションでします。See Create a partitioned table in the Examples section.

データ型 Data types

SQL データ ウェアハウスSQL Data Warehouse最も一般的に使用されるデータ型をサポートしています。 supports the most commonly used data types. 以下は、詳細情報とストレージのバイトと共にサポートされるデータ型の一覧を示します。Below is a list of the supported data types along with their details and storage bytes. データ型とその使用方法を理解するには、次を参照してください。 SQL データ ウェアハウス内のテーブルのデータ型です。To better understand data types and how to use them, see Data types for tables in SQL Data Warehouse.

データ型変換のテーブルの場合の暗黙的な変換セクションを参照してください。 CAST および CONVERT (TRANSACT-SQL)です。For a table of data type conversions, see the Implicit Conversions section, of CAST and CONVERT (Transact-SQL).

datetimeoffset [ ( n ) ]datetimeoffset [ ( n ) ]
既定値 n は 7 です。The default value for n is 7.

datetime2 [ ( n ) ]datetime2 [ ( n ) ]
同じdatetime, 秒の小数部の数を指定する点が異なります。Same as datetime, except that you can specify the number of fractional seconds. 既定値 n7します。The default value for n is 7.

nn value 有効桁数Precision ScaleScale
0 1919 00
1 2121 11
2 2222 22
3 2323 33
4 2424 44
5 2525 55
6 2626 66
7 2727 77

datetime
構成のグレゴリオ暦カレンダーに従って 19 ~ 23 の文字の 1 日の日付と時刻を格納します。Stores date and time of day with 19 to 23 characters according to the Gregorian calendar. 日付には、年、月、および日を含めることができます。The date can contain year, month, and day. 時間には、時間、分、秒数が含まれています。オプションでは、秒の小数部の 3 桁の数字を表示できます。The time contains hour, minutes, seconds.As an option, you can display three digits for fractional seconds. 記憶領域のサイズは 8 バイトです。The storage size is 8 bytes.

smalldatetime
日付と時刻を格納します。Stores a date and a time. 記憶域のサイズは、4 バイトです。Storage size is 4 bytes.

date
最大 10 文字を使用して年、月、および構成のグレゴリオ暦カレンダーにおける日付を格納します。Stores a date using a maximum of 10 characters for year, month, and day according to the Gregorian calendar. 記憶域のサイズは、3 バイトです。The storage size is 3 bytes. 日付は、整数として保存されます。Date is stored as an integer.

time [ ( n ) ]time [ ( n ) ]
既定値 n7します。The default value for n is 7.

float [ ( n ) ]float [ ( n ) ]
浮動小数点数値データで使用するおおよその数のデータを入力します。Approximate number data type for use with floating point numeric data. 浮動小数点データは概数、つまりデータ型の範囲内のすべての値を正確に表すことができます。Floating point data is approximate, which means that not all values in the data type range can be represented exactly. n仮数を格納するために使用するビット数を指定します、float科学的表記法でします。n specifies the number of bits used to store the mantissa of the float in scientific notation. したがって、 n 有効桁数およびストレージのサイズに影響します。Therefore, n dictates the precision and storage size. 場合 n の間の値をする必要があります指定153です。If n is specified, it must be a value between 1 and 53. 既定値の n53します。The default value of n is 53.

nn value 有効桁数Precision ストレージのサイズStorage size
1-241-24 7 桁の数字7 digits 4 バイト4 bytes
25-5325-53 15 桁15 digits 8 バイト8 bytes

SQL データ ウェアハウスSQL Data Warehouse扱います n として 2 つの値のいずれか。 treats n as one of two possible values. 場合1 <= n <= 24n として扱われる24です。If 1<= n <= 24, n is treated as 24. 場合25 <= n <= 53n として扱われる53です。If 25 <= n <= 53, n is treated as 53.

SQL データ ウェアハウスSQL Data Warehouse floatデータ型は、のすべての値、ISO 標準に準拠している n から1を通じて53です。The SQL データ ウェアハウスSQL Data Warehouse float data type complies with the ISO standard for all values of n from 1 through 53. 倍精度のシノニムはfloat(53)します。The synonym for double precision is float(53).

real [ ( n ) ]real [ ( n ) ]
実際の定義は、浮動小数点数と同じです。The definition of real is the same as float. ISO シノニムは、realfloat(24)します。The ISO synonym for real is float(24).

decimal[(精度[ 、小数点以下桁数])] |numeric [(精度[ 、小数点以下桁数])]decimal [ ( precision [ , scale ] ) ] | numeric [ ( precision [ , scale ] ) ]
固定有効桁数と小数点以下桁数の数値を保存します。Stores fixed precision and scale numbers.

有効桁数 (precision)precision
小数点の右側および左側にある保存できる最大文字 (数字) 数の合計です。The maximum total number of decimal digits that can be stored, both to the left and to the right of the decimal point. 有効桁数が値を指定する必要があります1の最大有効桁数を38です。The precision must be a value from 1 through the maximum precision of 38. 既定の有効桁数は18します。The default precision is 18.

scalescale
小数点の右側にある保存できる最大文字 (数字) 数です。The maximum number of decimal digits that can be stored to the right of the decimal point. スケール値を指定する必要があります0を通じて精度です。Scale must be a value from 0 through precision. のみを指定できますスケール場合精度を指定します。You can only specify scale if precision is specified. 既定のスケールは0。 したがって、 0 <= スケール <= 精度です。The default scale is 0; therefore, 0 <= scale <= precision. ストレージの最大サイズは有効桁数によって異なります。Maximum storage sizes vary, based on the precision.

有効桁数Precision ストレージのバイト サイズStorage bytes
1-91-9 55
10-1910-19 99
20-2820-28 1313
29-3829-38 1717

money | smallmoney
通貨値を表すデータ型。Data types that represent currency values.

データ型Data Type ストレージのバイト サイズStorage bytes
money 88
smallmoney 44

bigint | int | smallint | tinyint
整数データを使用する実数データ型です。Exact-number data types that use integer data. 次の表に、記憶域が表示されます。The storage is shown in the following table.

データ型Data Type ストレージのバイト サイズStorage bytes
bigint 88
int 44
smallint 22
tinyint 11

bit
整数データ型の値が実行できる10、または ' NULL です。An integer data type that can take the value of 1, 0, or `NULL. SQL データ ウェアハウスSQL Data Warehouseビット列の記憶域を最適化します。 optimizes storage of bit columns. テーブル内で 8 個以下のビット列がある場合は、列が 1 バイトとして格納されます。If there are 8 or fewer bit columns in a table, the columns are stored as 1 byte. 9 ~ 16 ビット列の場合、列は 2 バイトとしては保存されなど。If there are from 9-16 bit columns, the columns are stored as 2 bytes, and so on.

nvarchar[( n | max )]-maxにのみ適用されます SQL データ ウェアハウスSQL Data Warehouseです。nvarchar [ ( n | max ) ] -- max applies only to SQL データ ウェアハウスSQL Data Warehouse.
可変長の UNICODD 文字データです。Variable-length Unicode character data. n1 ~ 4000 の値を指定できます。n can be a value from 1 through 4000. max は最大格納サイズが 2^31-1 バイト (2 GB) であることを示します。max indicates that the maximum storage size is 2^31-1 bytes (2 GB). 記憶域のサイズ (バイト単位) は、入力した + 2 バイトの 2 倍の数です。Storage size in bytes is two times the number of characters entered + 2 bytes. 入力データの長さは 0 文字でもかまいません。The data entered can be 0 characters in length.

nchar [ ( n ) ]nchar [ ( n ) ]
固定長の Unicode 文字データの長さと n 文字です。Fixed-length Unicode character data with a length of n characters. n値を指定する必要があります1を通じて4000です。n must be a value from 1 through 4000. ストレージのサイズは 2 回 n バイトです。The storage size is two times n bytes.

varchar[( n | max )]-maxにのみ適用されます SQL データ ウェアハウスSQL Data Warehouseです。varchar [ ( n | max ) ] -- max applies only to SQL データ ウェアハウスSQL Data Warehouse.
可変長の Unicode 以外の文字データの長さと n バイトです。Variable-length, non-Unicode character data with a length of n bytes. n値を指定する必要があります18000です。n must be a value from 1 to 8000. maxストレージの最大サイズが 2 であることを示します。 ^ 31-1 バイト (2 GB)。ストレージ サイズは、入力したデータの実際の長さ + 2 バイトです。max indicates that the maximum storage size is 2^31-1 bytes (2 GB).The storage size is the actual length of data entered + 2 bytes.

char [ ( n ) ]char [ ( n ) ]
固定長 Unicode 以外の文字データの長さと n バイトです。Fixed-length, non-Unicode character data with a length of n bytes. n値を指定する必要があります18000です。n must be a value from 1 to 8000. ストレージのサイズは n バイトです。The storage size is n bytes. 既定の n1します。The default for n is 1.

varbinary[( n | max )]-maxにのみ適用されます SQL データ ウェアハウスSQL Data Warehouseです。varbinary [ ( n | max ) ] -- max applies only to SQL データ ウェアハウスSQL Data Warehouse.
可変長 binary データ。Variable-length binary data. n値を指定できます18000です。n can be a value from 1 to 8000. max は最大格納サイズが 2^31-1 バイト (2 GB) であることを示します。max indicates that the maximum storage size is 2^31-1 bytes (2 GB). 記憶領域のサイズは、入力されたデータの実際の長さに 2 バイトを加えたものとなります。The storage size is the actual length of data entered + 2 bytes. 既定値 n は 7 です。The default value for n is 7.

binary [ ( n ) ]binary [ ( n ) ]
固定長バイナリ データの長さと n バイトです。Fixed-length binary data with a length of n bytes. n値を指定できます18000です。n can be a value from 1 to 8000. ストレージのサイズは n バイトです。The storage size is n bytes. 既定値 n7します。The default value for n is 7.

uniqueidentifier
16 バイトの GUID です。Is a 16-byte GUID.

PermissionsPermissions

テーブルを作成するには、権限が必要です、db_ddladmin固定データベース ロール、または。Creating a table requires permission in the db_ddladmin fixed database role, or:

  • CREATE TABLEデータベースに対する権限CREATE TABLE permission on the database
  • ALTER SCHEMAテーブルを含むスキーマの権限。ALTER SCHEMA permission on the schema that will contain the table.

パーティション分割されたテーブルを作成するには、権限が必要です、db_ddladmin固定データベース ロール、またはCreating a partitioned table requires permission in the db_ddladmin fixed database role, or

  • ALTER ANY DATASPACEアクセス許可ALTER ANY DATASPACE permission

    ローカル一時テーブルを作成するログインを受け取るCONTROLINSERTSELECT、およびUPDATEテーブルに対する権限。The login that creates a local temporary table receives CONTROL, INSERT, SELECT, and UPDATE permissions on the table.

全般的な解説General Remarks

最小と最大値では、次を参照してください。 SQL データ ウェアハウスの処理能力の限界です。For minimum and maximum limits, see SQL Data Warehouse capacity limits.

テーブルのパーティションの数を決定します。Determining the number of table partitions

各ユーザー定義テーブルは、配布と呼ばれる別の場所に格納されている複数の小さなテーブルに分割されます。Each user-defined table is divided into multiple smaller tables which are stored in separate locations called distributions. SQL データ ウェアハウスSQL Data Warehouse60 の配布を使用します。 uses 60 distributions. Parallel Data WarehouseParallel Data Warehouseディストリビューションの数は、コンピューティング ノードの数によって異なります。In Parallel Data WarehouseParallel Data Warehouse, the number of distributions depends on the number of Compute nodes.

各配布には、すべてのテーブルのパーティションが含まれています。Each distribution contains all table partitions. たとえば、60 の配布と 4 つのテーブルのパーティションがある場合は、320 のパーティションがあります。For example, if there are 60 distributions and four table partitions, there will be 320 partitions. テーブルがクラスター化列ストア インデックスの場合、列ストア インデックスは 320 columnstore インデックスを作成する必要があるパーティション 1 つがあります。If the table is a clustered columnstore index, there will be one columnstore index per partition which means you will have 320 columnstore indexes.

列ストア インデックスの利点を活用するために十分な行が少ないテーブル パーティションようを使用して各列ストア インデックスをお勧めします。We recommend using fewer table partitions to ensure each columnstore index has enough rows to take advantage of the benefits of columnstore indexes. さらにガイダンスについては、次を参照してくださいSQL データ ウェアハウス内のテーブルをパーティション分割SQL データ ウェアハウス内のテーブルのインデックス。For further guidance, see Partitioning tables in SQL Data Warehouse and Indexing tables in SQL Data Warehouse

行ストア テーブル (ヒープまたはクラスター化インデックス)Rowstore table (heap or clustered index)

行ストア テーブルは、行単位での順序で格納されているテーブルです。A rowstore table is a table stored in row-by-row order. ヒープまたはクラスター化インデックスをお勧めします。It is a heap or clustered index. SQL データ ウェアハウスSQL Data Warehouseページの圧縮とすべての行ストア テーブルを作成します。ユーザー構成可能ではありません。 creates all rowstore tables with page compression; this is not user-configurable.

列ストア テーブル (列ストア インデックス)Columnstore table (columnstore index)

列ストア テーブルは、列、列の順序で格納されているテーブルです。A columnstore table is a table stored in column-by-column order. 列ストア インデックスは、列ストア テーブルに格納されているデータを管理するテクノロジです。The columnstore index is the technology that manages data stored in a columnstore table. クラスター化列ストア インデックスには影響しません。 データの配布方法これは、各配布内でのデータの格納方法に影響します。The clustered columnstore index does not affect how data are distributed; it affects how the data are stored within each distribution.

列ストア テーブルに行ストア テーブルを変更するに既存のすべてのインデックス、テーブルを削除し、クラスター化列ストア インデックスを作成します。To change a rowstore table to a columnstore table, drop all existing indexes on the table and create a clustered columnstore index. 例については、次を参照してください。 CREATE COLUMNSTORE INDEX & #40 です。TRANSACT-SQL と #41 です。.For an example, see CREATE COLUMNSTORE INDEX (Transact-SQL).

詳細については、次の記事を参照してください。For more information, see these articles:

制限事項と制約事項Limitations and Restrictions

ディストリビューション列の既定の制約を定義することはできません。You cannot define a DEFAULT constraint on a distribution column.

パーティションPartitions

パーティションを使用する場合、パーティション列は、Unicode 専用の照合順序はできません。When using partitions, the partition column cannot have a Unicode-only collation. たとえば、次のステートメントは失敗します。For example, the following statement fails.

CREATE TABLE t1 ( c1 varchar(20) COLLATE Divehi_90_CI_AS_KS_WS) WITH (PARTITION (c1 RANGE FOR VALUES (N'')))

場合boundary_valueでのデータ型に暗黙的に変換する必要がありますをリテラル値は、 partition_column_name、矛盾が発生します。If boundary_value is a literal value that must be implicitly converted to the data type in partition_column_name, a discrepancy will occur. 通じてリテラルの値を表示、 SQL データ ウェアハウスSQL Data Warehouseシステム ビュー、変換後の値が使用の Transact-SQLTransact-SQL操作します。The literal value is displayed through the SQL データ ウェアハウスSQL Data Warehouse system views, but the converted value is used for Transact-SQLTransact-SQL operations.

一時テーブルTemporary tables

グローバルの一時テーブルで始まる ## はサポートされていません。Global temporary tables that begin with ## are not supported.

ローカル一時テーブルは、次の制限事項と制約があります。Local temporary tables have the following limitations and restrictions:

  • 現在のセッションにのみ表示されます。They are visible only to the current session. SQL データ ウェアハウスSQL Data Warehouse削除に自動的にセッションの最後にします。 drops them automatically at the end of the session. それら explicitlt を削除するには、DROP TABLE ステートメントを使用します。To drop them explicitlt, use the DROP TABLE statement.
  • 名前変更できません。They cannot be renamed.
  • これらは、パーティションまたはビューにはできません。They cannot have partitions or views.
  • そのアクセス許可を変更することはできません。Their permissions cannot be changed. GRANTDENY、およびREVOKEステートメントは、ローカル一時テーブルでは使用できません。GRANT, DENY, and REVOKE statements cannot be used with local temporary tables.
  • データベース コンソール コマンドは、一時テーブルがブロックされます。Database console commands are blocked for temporary tables.
  • バッチ内で 1 つ以上のローカル一時テーブルを使用した場合、一意の名前でそれぞれ必要があります。If more than one local temporary table is used within a batch, each must have a unique name. 複数のセッションが同じバッチを実行していて、同じローカル一時テーブルを作成する場合 SQL データ ウェアハウスSQL Data Warehouse内部で各ローカル一時テーブルの一意の名前を維持するためにローカル一時テーブル名に数値サフィックスを追加します。If multiple sessions are running the same batch and creating the same local temporary table, SQL データ ウェアハウスSQL Data Warehouse internally appends a numeric suffix to the local temporary table name to maintain a unique name for each local temporary table.

ロック動作Locking behavior

テーブルに排他ロックを取得します。Takes an exclusive lock on the table. データベース、スキーマ、および SCHEMARESOLUTION オブジェクト上には、共有ロックを取得します。Takes a shared lock on the DATABASE, SCHEMA, and SCHEMARESOLUTION objects.

列の例Examples for columns

A. A. 列の照合順序を指定します。Specify a column collation

次の例では、テーブルでMyTableは 2 つの異なる列の照合順序で作成します。In the following example, the table MyTable is created with two different column collations. 既定では、列、 mycolumn1、Latin1_General_100_CI_AS_KS_WS 既定の照合順序がします。By default, the column, mycolumn1, has the default collation Latin1_General_100_CI_AS_KS_WS. 列、 mycolumn2 Frisian_100_CS_AS 照合順序。The column, mycolumn2 has the collation Frisian_100_CS_AS.

CREATE TABLE MyTable   
  (  
    mycolumnnn1 nvarchar,  
    mycolumn2 nvarchar COLLATE Frisian_100_CS_AS )  
WITH ( CLUSTERED COLUMNSTORE INDEX )  
;  

B. B. 列に既定の制約を指定します。Specify a DEFAULT constraint for a column

次の例では、列の既定値を指定する構文を示します。The following example shows the syntax to specify a default value for a column. コーラの列が constraint_colA と、既定値は 0 という名前の既定の制約です。The colA column has a default constraint named constraint_colA and a default value of 0.


CREATE TABLE MyTable   
  (  
    colA int CONSTRAINT constraint_colA DEFAULT 0,  
    colB nvarchar COLLATE Frisian_100_CS_AS   
  )  
WITH ( CLUSTERED COLUMNSTORE INDEX )  
;  

一時テーブルの例Examples for temporary tables

C. C. ローカル一時テーブルを作成します。Create a local temporary table

次に、#myTable をという名前のローカル一時テーブルを作成します。The following creates a local temporary table named #myTable. テーブルは、3 部構成の名前を指定します。The table is specified with a 3-part name. 一時テーブル名を # で開始します。The temporary table name starts with a #.

CREATE TABLE AdventureWorks.dbo.#myTable   
  (  
   id int NOT NULL,  
   lastName varchar(20),  
   zipCode varchar(6)  
  )  
WITH  
  (   
    DISTRIBUTION = HASH (id),  
    CLUSTERED COLUMNSTORE INDEX   
  )  
;  

テーブルの構造の例Examples for table structure

D. D. クラスター化列ストア インデックスを持つテーブルを作成します。Create a table with a clustered columnstore index

次の例では、クラスター化列ストア インデックスを持つ分散型のテーブルを作成します。The following example creates a distributed table with a clustered columnstore index. 各配布は、列ストアとして格納されます。Each distribution will be stored as a columnstore.

クラスター化列ストア インデックスには影響しませんデータを配布する方法です。データは、行を常に分散されます。The clustered columnstore index does not affect how the data is distributed; data is always distributed by row. クラスター化列ストア インデックスでは、各配布内でのデータの格納方法に影響します。The clustered columnstore index affects how the data is stored within each distribution.


CREATE TABLE MyTable   
  (  
    colA int CONSTRAINT constraint_colA DEFAULT 0,  
    colB nvarchar COLLATE Frisian_100_CS_AS   
  )  
WITH   
  (   
    DISTRIBUTION = HASH ( colB ),  
    CLUSTERED COLUMNSTORE INDEX   
  )  
;  

テーブルの配布の例Examples for table distribution

E. E. ROUND_ROBIN テーブルを作成します。Create a ROUND_ROBIN table

次の例は、3 つの列と、パーティションを使わない ROUND_ROBIN テーブルを作成します。The following example creates a ROUND_ROBIN table with three columns and without partitions. データはすべての配布に分散します。The data is spread across all distributions. クラスター化列ストア インデックス、ヒープまたは行ストア クラスター化インデックスよりも優れたパフォーマンスとデータ圧縮機能を提供する、テーブルが作成されます。The table is created with a CLUSTERED COLUMNSTORE INDEX, which gives better performance and data compression than a heap or rowstore clustered index.

CREATE TABLE myTable   
  (  
    id int NOT NULL,  
    lastName varchar(20),  
    zipCode varchar(6)  
  )  
WITH ( CLUSTERED COLUMNSTORE INDEX );  

F. F. ハッシュ分散のテーブルを作成します。Create a hash-distributed table

次の例では、前の例と同じテーブルを作成します。The following example creates the same table as the previous example. ただし、このテーブルの行が分散されます (上、id列) の代わりにランダムには、分散 ROUND_ROBIN テーブルのようにします。However, for this table, rows are distributed (on the id column) instead of randomly spread like a ROUND_ROBIN table. クラスター化列ストア インデックス、ヒープまたは行ストア クラスター化インデックスよりも優れたパフォーマンスとデータ圧縮機能を提供する、テーブルが作成されます。The table is created with a CLUSTERED COLUMNSTORE INDEX, which gives better performance and data compression than a heap or rowstore clustered index.

CREATE TABLE myTable   
  (  
    id int NOT NULL,  
    lastName varchar(20),  
    zipCode varchar(6)  
  )  
WITH  
  (   
    DISTRIBUTION = HASH (id),   
    CLUSTERED COLUMNSTORE INDEX  
  );  

G. G. レプリケートされたテーブルを作成します。Create a replicated table

次の例では、前の例のようなレプリケートされたテーブルを作成します。The following example creates a replicated table similar to the previous examples. レプリケートされたテーブルは、各計算ノードに完全にコピーされます。Replicated tables are copied in full to each Compute node. 各コンピューティング ノードでこのコピーでは、クエリのデータ移動が小さくなります。With this copy on each Compute node, data movement is reduced for queries. この例には、クラスター化インデックス、ヒープより優れたデータ圧縮を提供し、適切なクラスター化列ストア インデックスの圧縮を実現するために十分な行を含めることはできませんが作成されます。This example is created with a CLUSTERED INDEX, which gives better data compression than a heap and may not contain enough rows to achieve good CLUSTERED COLUMNSTORE INDEX compression.

CREATE TABLE myTable   
  (  
    id int NOT NULL,  
    lastName varchar(20),  
    zipCode varchar(6)  
  )  
WITH  
  (   
    DISTRIBUTION = REPLICATE,   
    CLUSTERED INDEX (lastName)  
  );  

テーブル パーティションの例Examples for table partitions

H. H. パーティション テーブルを作成します。Create a partitioned table

例 A を追加すると、RANGE LEFT パーティションで示すように、次の例は、同じテーブルを作成、id列です。The following example creates the same table as shown in example A, with the addition of RANGE LEFT partitioning on the id column. その結果は 5 つのパーティションに 4 つのパーティションの境界値を指定します。It specifies four partition boundary values, which results in five partitions.

CREATE TABLE myTable   
  (  
    id int NOT NULL,  
    lastName varchar(20),  
    zipCode int)  
WITH   
  (   

    PARTITION ( id RANGE LEFT FOR VALUES (10, 20, 30, 40 )),  
    CLUSTERED COLUMNSTORE INDEX      
  )  
;  

この例では、データが次のパーティションに並べ替えられます。In this example, data will be sorted into the following partitions:

  • パーティション 1: col < = 10Partition 1: col <= 10
  • パーティション 2時 10分 < col < = 20Partition 2: 10 < col <= 20
  • パーティション 3時 20分 < col < = 30Partition 3: 20 < col <= 30
  • パーティション 4時 30分 < col < = 40Partition 4: 30 < col <= 40
  • パーティション 5時 40分 < colPartition 5: 40 < col

    この同じテーブルがパーティション分割されている場合は、次のパーティションに RANGE LEFT (既定値) の場合、データの代わりに、RANGE RIGHT が並べ替えられます。If this same table was partitioned RANGE RIGHT instead of RANGE LEFT (default), the data will be sorted into the following partitions:

  • パーティション 1: col < 10Partition 1: col < 10

  • パーティション 2時 10分 < = col < 20Partition 2: 10 <= col < 20
  • パーティション 3時 20分 < = col < 30Partition 3: 20 <= col < 30
  • パーティション 4時 30分 < = col < 40Partition 4: 30 <= col < 40
  • パーティション 5時 40分 < = colPartition 5: 40 <= col

私。 I. 1 つのパーティションを持つパーティション テーブルを作成します。Create a partitioned table with one partition

次の例では、1 つのパーティションをパーティション テーブルを作成します。The following example creates a partitioned table with one partition. 指定しません任意の境界値では、1 つのパーティションになります。It does not specify any boundary values, which results in one partition.

CREATE TABLE myTable (  
    id int NOT NULL,  
    lastName varchar(20),  
    zipCode int)  
WITH   
    (   
      PARTITION ( id RANGE LEFT FOR VALUES ( )),  
      CLUSTERED COLUMNSTORE INDEX  
    )  
;  

J. J. 日付でパーティション分割テーブルを作成します。Create a table with date partitioning

次の例は、という名前の新しいテーブルを作成myTableにパーティション分割、date列です。The following example creates a new table named myTable, with partitioning on a date column. 境界値の範囲の右側と日付を使用するは、各パーティション内の月のデータを格納します。By using RANGE RIGHT and dates for the boundary values, it puts a month of data in each partition.

CREATE TABLE myTable (  
    l_orderkey      bigint,       
    l_partkey       bigint,                                             
    l_suppkey       bigint,                                           
    l_linenumber    bigint,        
    l_quantity      decimal(15,2),  
    l_extendedprice decimal(15,2),  
    l_discount      decimal(15,2),  
    l_tax           decimal(15,2),  
    l_returnflag    char(1),  
    l_linestatus    char(1),  
    l_shipdate      date,  
    l_commitdate    date,  
    l_receiptdate   date,  
    l_shipinstruct  char(25),  
    l_shipmode      char(10),  
    l_comment       varchar(44))  
WITH   
  (   
    DISTRIBUTION = HASH (l_orderkey),  
    CLUSTERED COLUMNSTORE INDEX,  
    PARTITION ( l_shipdate  RANGE RIGHT FOR VALUES   
      (  
        '1992-01-01','1992-02-01','1992-03-01','1992-04-01','1992-05-01',
        '1992-06-01','1992-07-01','1992-08-01','1992-09-01','1992-10-01',
        '1992-11-01','1992-12-01','1993-01-01','1993-02-01','1993-03-01',
        '1993-04-01','1993-05-01','1993-06-01','1993-07-01','1993-08-01',
        '1993-09-01','1993-10-01','1993-11-01','1993-12-01','1994-01-01',
        '1994-02-01','1994-03-01','1994-04-01','1994-05-01','1994-06-01',
        '1994-07-01','1994-08-01','1994-09-01','1994-10-01','1994-11-01',
        '1994-12-01'  
      ))
  );  

参照See also

テーブルとして選択 ( を作成します。Azure SQL Data Warehouse ) CREATE TABLE AS SELECT (Azure SQL Data Warehouse)
DROP TABLE & #40 です。TRANSACT-SQL と #41 です。 DROP TABLE (Transact-SQL)
ALTER TABLE (Transact-SQL)ALTER TABLE (Transact-SQL)