Sdílet prostřednictvím


CREATE TABLE

platí pro: Azure Synapse AnalyticsAnalytics Platform System (PDW)

CREATE TABLE (Azure Synapse Analytics)

Vytvoří novou tabulku ve službě Azure Synapse Analytics nebo PdW (Analytics Platform System).

Informace o tabulkách a jejich použití najdete v tématu Tabulky ve službě Azure Synapse Analytics.

Diskuze o službě Azure Synapse Analytics v tomto článku se týkají azure Synapse Analytics i systému PDW (Azure Synapse Analytics), pokud není uvedeno jinak.

Note

Pro platformy SQL Server a Azure SQL přejděte na create TABLE a vyberte požadovanou verzi produktu. Pro SQL databázi v Microsoft Fabric viz CREATE TABLE. Odkaz na sklad v Microsoft Fabric najdete v tématu CREATE TABLE (Fabric).a0>

Note

Bezserverový fond SQL ve službě Azure Synapse Analytics podporuje pouze externí a dočasných tabulek.

Transact-SQL konvence syntaxe

Syntax

-- Create a new table.
CREATE TABLE { database_name.schema_name.table_name | schema_name.table_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
    [ IDENTITY [ ( seed, increment ) ]
    [ <column_constraint> ]

<column_constraint>::=
    {
        DEFAULT constant_expression
        | PRIMARY KEY NONCLUSTERED NOT ENFORCED -- Applies to Azure Synapse Analytics only
        | UNIQUE NOT ENFORCED -- Applies to Azure Synapse Analytics only
    }

<table_option> ::=
    {
       CLUSTERED COLUMNSTORE INDEX -- default for Azure Synapse Analytics 
      | CLUSTERED COLUMNSTORE INDEX ORDER (column [,...n])  
      | HEAP --default for Parallel Data Warehouse
      | CLUSTERED INDEX ( { index_column_name [ ASC | DESC ] } [ ,...n ] ) -- default is ASC
    }  
    {
        DISTRIBUTION = HASH ( distribution_column_name )
      | DISTRIBUTION = HASH ( [distribution_column_name [, ...n]] ) 
      | DISTRIBUTION = ROUND_ROBIN -- default for Azure Synapse Analytics
      | 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 Azure Synapse Analytics 
    | nchar [ ( n ) ]  
    | varchar [ ( n | max )  ] -- max applies only to Azure Synapse Analytics 
    | char [ ( n ) ]  
    | varbinary [ ( n | max ) ] -- max applies only to Azure Synapse Analytics 
    | binary [ ( n ) ]  
    | uniqueidentifier  

Arguments

database_name

Název databáze, která bude obsahovat novou tabulku. Výchozí hodnotou je aktuální databáze.

schema_name

Schéma tabulky. Zadání schématu je volitelné. Pokud je prázdné, použije se výchozí schéma.

table_name

Název nové tabulky. Chcete-li vytvořit místní dočasnou tabulku, před název tabulky zadejte #. Vysvětlení a pokyny k dočasným tabulkám najdete v tématu Dočasné tabulky ve vyhrazeném fondu SQL ve službě Azure Synapse Analytics.

column_name

Název sloupce tabulky.

Možnosti sloupce

COLLATE Windows_collation_name

Určuje kolaci výrazu. Kolace musí být jednou z kolací windows podporovaných SQL Serverem. Seznam kolací systému Windows podporovaných SQL Serverem najdete v tématu Název kolace systému Windows (Transact-SQL)).

NULL | NOT NULL

Určuje, jestli NULL jsou ve sloupci povoleny hodnoty. Výchozí hodnota je NULL.

[ CONSTRAINTconstraint_name ] DEFAULTconstant_expression

Určuje výchozí hodnotu sloupce.

Argument Explanation
constraint_name Volitelný název omezení. Název omezení je v databázi jedinečný. Název lze znovu použít v jiných databázích.
constant_expression Výchozí hodnota sloupce. Výraz musí být hodnota literálu nebo konstanta. Například tyto konstantní výrazy jsou povoleny: 'CA', 4. Tyto konstantní výrazy nejsou povoleny: 2+3, CURRENT_TIMESTAMP.

Možnosti struktury tabulky

Pokyny k výběru typu tabulky najdete v tématu Indexování tabulek ve službě Azure Synapse Analytics.

CLUSTERED COLUMNSTORE INDEX

Uloží tabulku jako clusterovaný index columnstore. Clusterovaný index columnstore se vztahuje na všechna data tabulky. Toto chování je výchozí pro Azure Synapse Analytics.

HEAP Uloží tabulku jako haldu. Toto chování je výchozí nastavení pro systém Analytics Platform System (PDW).

CLUSTERED INDEX ( index_column_name [ ,... n ] )
Uloží tabulku jako clusterovaný index s jedním nebo více klíčovými sloupci. Toto chování ukládá data po řádku. Pomocí index_column_name zadejte název jednoho nebo více klíčových sloupců v indexu. Další informace naleznete v tématu Tabulky rowstore.

LOCATION = USER_DB Tato možnost je zastaralá. Je platná syntaxe, ale už není nutná a už nemá vliv na chování.

Možnosti distribuce tabulek

Informace o tom, jak zvolit nejlepší metodu distribuce a používat distribuované tabulky, najdete v tématu Návrh distribuovaných tabulek pomocí vyhrazeného fondu SQL ve službě Azure Synapse Analytics.

Doporučení týkající se nejlepší distribuční strategie, která se má použít na základě vašich úloh, najdete v poradci pro distribuci Synapse SQL (Preview).

DISTRIBUTION = HASH ( distribution_column_name ) Přiřadí každý řádek k jedné distribuci tím, že hodnotu uloženou v distribution_column_name zatřiďuje. Algoritmus je deterministický, což znamená, že vždy hashuje stejnou hodnotu do stejného rozdělení. Distribuční sloupec by měl být definován jako NOT NULL, protože všechny řádky, které mají hodnotu NULL, jsou přiřazeny ke stejné distribuci.

DISTRIBUTION = HASH ( [distribution_column_name [, ...n]] ) Distribuuje řádky na základě hodnot hash až osmi sloupců, což umožňuje rovnoměrnější distribuci dat základní tabulky, což snižuje nerovnoměrnou distribuci dat v průběhu času a zlepšuje výkon dotazů.

Note

  • Pokud chcete povolit funkci distribuce s více sloupci (MCD), změňte úroveň kompatibility databáze na 50 pomocí tohoto příkazu. Další informace o nastavení úrovně kompatibility databáze naleznete v tématu ALTER DATABASE SCOPED CONFIGURATION. Příklad: ALTER DATABASE SCOPED CONFIGURATION SET DW_COMPATIBILITY_LEVEL = 50;
  • Pokud chcete zakázat funkci distribuce s více sloupci (MCD), spusťte tento příkaz a změňte úroveň kompatibility databáze na AUTO. Příklad: ALTER DATABASE SCOPED CONFIGURATION SET DW_COMPATIBILITY_LEVEL = AUTO; Existující tabulky MCD zůstanou, ale nebudou čitelné. Dotazy na tabulky MCD vrátí tuto chybu: Related table/view is not readable because it distributes data on multiple columns and multi-column distribution is not supported by this product version or this feature is disabled.
    • Pokud chcete znovu získat přístup k tabulkám MCD, povolte tuto funkci znovu.
    • Pokud chcete načíst data do tabulky MCD, použijte CREATE TABLE AS SELECT příkaz (CTAS) a zdroj dat musí být tabulky Synapse SQL.
  • Generování skriptů pro vytváření tabulek MCD je aktuálně podporováno v sadě SQL Server Management Studio (SSMS) verze 19 a novějších verzích.

DISTRIBUTION = ROUND_ROBIN Rovnoměrně rozdělí řádky napříč všemi rozděleními pomocí kruhového dotazování. Toto chování je výchozí pro Azure Synapse Analytics.

DISTRIBUTION = REPLICATE Ukládá jednu kopii tabulky na každém výpočetním uzlu. Pro Azure Synapse Analytics je tabulka uložená v distribuční databázi na každém výpočetním uzlu. V případě systému PDW (Analytics Platform System) je tabulka uložená ve skupině souborů SQL Serveru, která zahrnuje výpočetní uzel. Toto chování je výchozí nastavení pro systém Analytics Platform System (PDW).

Možnosti oddílů tabulky

Pokyny k používání oddílů tabulky najdete v tématu Dělení tabulek ve vyhrazeném fondu SQL.

PARTITION ( partition_column_nameRANGE [ LEFT | RIGHT ] FOR VALUES ( [ boundary_value [,... n] ] ))
Vytvoří jeden nebo více oddílů tabulky. Tyto oddíly jsou průřezy vodorovné tabulky, které umožňují aplikovat operace na podmnožinu řádků bez ohledu na to, jestli je tabulka uložená jako halda, clusterovaný index nebo clusterovaný index columnstore. Na rozdíl od distribučního sloupce oddíly tabulky nerozlišují rozdělení, ve kterém je každý řádek uložený. Místo toho oddíly tabulky určují, jak se řádky seskupují a ukládají v rámci každé distribuce.

Argument Explanation
partition_column_name Určuje sloupec, který Azure Synapse Analytics používá k rozdělení řádků. Tento sloupec může být libovolný datový typ. Azure Synapse Analytics seřadí hodnoty sloupců oddílů ve vzestupném pořadí. Řazení s nízkými až nejvyššími je ve LEFTRIGHT specifikaci RANGE .
RANGE LEFT Určuje hodnotu hranice, která patří do oddílu vlevo (nižší hodnoty). Výchozí hodnota je LEFT.
RANGE RIGHT Určuje hodnotu hranice, která patří do oddílu vpravo (vyšší hodnoty).
FOR VALUES ( boundary_value [,... n] ) Určuje hodnoty hranic pro oddíl. boundary_value je konstantní výraz. Nemůže mít hodnotu NULL. Musí se shodovat nebo implicitně převést na datový typ partition_column_name. Během implicitního převodu se nedá zkrátit, aby velikost a měřítko hodnoty odpovídaly datovému typu partition_column_name



Pokud zadáte jednu hodnotu hranice, výsledná tabulka má dva oddíly; jedna pro hodnoty nižší než mezní hodnota a jedna pro hodnoty vyšší než hodnota hranice. Pokud přesunete oddíl do tabulky, která není rozdělená, tabulka, která není rozdělená, přijme data, ale v metadatech nebude mít hranice oddílů.

Příklad najdete v tématu Vytvoření dělené tabulky.

Možnost uspořádaného clusterovaného indexu columnstore

Clusterovaný index columnstore (CCI) je výchozím nastavením pro vytváření tabulek ve službě Azure Synapse Analytics. Data v CCI se před komprimací do segmentů columnstore neřadí. Při vytváření CCI s FUNKCÍ ORDER se data seřadí před tím, než se přidají do segmentů indexu a výkon dotazů. Další informace o uspořádaných clusterovaných indexech columnstore ve službě Azure Synapse Analytics najdete v tématu Ladění výkonu s uspořádaným clusterovaným indexem columnstore.

Seřazené CCI je možné vytvořit ve sloupcích libovolného datového typu podporovaného ve službě Azure Synapse Analytics s výjimkou řetězcových sloupců.

Uživatelé se můžou dotazovat column_store_order_ordinal na sloupec sys.index_columns nebo sloupce, na kterých je tabulka seřazená, a pořadí v pořadí.

Podrobnosti najdete v ladění výkonu s seřazeným clusterovaným indexem columnstore .

Datový typ

Azure Synapse Analytics podporuje nejčastěji používané datové typy. Pokud chcete lépe porozumět datovým typům a jejich použití, přečtěte si téma Datové typy pro tabulky ve službě Azure Synapse Analytics.

Note

Podobně jako u SQL Serveru existuje limit 8 060 bajtů na řádek. Může se stát blokující problém u tabulek s mnoha sloupci nebo sloupci s velkými datovými typy, například nvarchar(max) nebo varbinary(max). Vložení nebo aktualizace, které porušují limit 8 060 bajtů, způsobí kódy chyb 511 nebo 611. Další informace najdete v tématu Stránky a rozsahy – Průvodce architekturou.

Tabulku převodů datových typů naleznete v části Implicitní převody cast a CONVERT (Transact-SQL). Další informace najdete v tématu Datové typy a funkce data a času (Transact-SQL).

Následující seznam podporovaných datových typů obsahuje jejich podrobnosti a bajty úložiště:

datetimeoffset [ ( n ) ]
Výchozí hodnota pro n je 7.

datetime2 [ ( n ) ]
Stejné jako datetimes tím rozdílem, že můžete zadat počet desetinných sekund. Výchozí hodnota pro n je 7.

n hodnota Precision Scale
0 19 0
1 21 1
2 22 2
3 23 3
4 24 4
5 25 5
6 26 6
7 27 7

datetime
Ukládá datum a čas dne s 19 až 23 znaky podle gregoriánského kalendáře. Datum může obsahovat rok, měsíc a den. Čas obsahuje hodiny, minuty a sekundy. Jako možnost můžete zobrazit tři číslice pro desetinné sekundy. Velikost úložiště je 8 bajtů.

smalldatetime
Ukládá datum a čas. Velikost úložiště je 4 bajty.

date
Uloží datum s maximálně 10 znaky pro rok, měsíc a den podle gregoriánského kalendáře. Velikost úložiště je 3 bajty. Datum je uloženo jako celé číslo.

time [ ( n ) ]
Výchozí hodnota pro n je 7.

float [ ( n ) ]
Přibližný číselný datový typ pro použití s číselnými daty s plovoucí desetinou čárkou Data s plovoucí desetinou čárkou jsou přibližná, což znamená, že ne všechny hodnoty v oblasti datových typů lze přesně reprezentovat. n určuje počet bitů použitých k uložení mantisy float ve vědeckém zápisu. n určuje přesnost a velikost úložiště. Pokud je zadán n , musí to být hodnota mezi 1 a 53. Výchozí hodnota n je 53.

n hodnota Precision Velikost úložiště
1-24 7 číslic 4 bajty
25-53 15 číslic 8 bajtů

Azure Synapse Analytics považuje n za jednu ze dvou možných hodnot. Pokud 1<= n = <24 = , n je považován za 24. Pokud 25<= n = <53 = , n je považován za 53.

Datový typ float služby Azure Synapse Analytics odpovídá standardu ISO pro všechny hodnoty n z 153. Synonymum pro dvojitou přesnost je float(53).

real [ ( n ) ]
Definice skutečné hodnoty je stejná jako plovoucí. Synonymum ISO pro reálné je float(24).

decimal [ ( přesnost [ , měřítko ] ) ] | numeric [ ( přesnost [ , měřítko ] ) ] ]
Ukládá pevnou přesnost a čísla měřítka.

precision
Maximální celkový počet desetinných míst, které lze uložit, na obou stranách desetinné čárky. Přesnost musí být hodnota od 1 maximální přesnosti 38. Výchozí přesnost je 18.

scale
Maximální počet desítkových číslic, které lze uložit napravo od desetinné čárky. Měřítko musí být hodnota od 0přesnosti. Měřítko můžete zadat pouze v případě, že je zadána přesnost. Výchozí měřítko je 0 a tak 0<= měřítko< = přesnost. Maximální velikosti úložiště se liší v závislosti na přesnosti.

Precision Paměťové bajty
1-9 5
10-19 9
20-28 13
29-38 17

money | smallmoney
Datové typy, které představují hodnoty měny.

Datový typ Paměťové bajty
money 8
smallmoney 4

bigint | int | smallint | tinyint
Datové typy s přesným číslem, které používají celočíselná data. Úložiště je znázorněno v následující tabulce.

Datový typ Paměťové bajty
bigint 8
int 4
smallint 2
tinyint 1

bit
Celočíselná datová hodnota, která může převzít hodnotu 1, 0nebo NULL. Azure Synapse Analytics optimalizuje úložiště bitových sloupců. Pokud tabulka obsahuje 8 nebo méně bitových sloupců, jsou sloupce uloženy jako 1 bajt. Pokud existují 9 až 16bitové sloupce, jsou sloupce uložené jako 2 bajty atd.

nvarchar [ ( n | max ) ] Data znaků Unicode s proměnlivou délkou. n může být hodnota od 1 do 4000. max označuje, že maximální velikost úložiště je 2^31-1 bajtů (2 GB). Velikost úložiště v bajtech je dvakrát počet znaků zadaných + 2 bajty. Zadaná data mohou mít délku nula znaků. Délka max se vztahuje pouze na Azure Synapse Analytics.

nchar [ ( n ) ]
Data znaků Unicode s pevnou délkou s délkou n znaků n musí být hodnota od 1 do 4000. Velikost úložiště je dvakrát n bajtů.

varchar [ ( n | max ) ] Proměnná délka, jiná než unicode znaková data s délkou n bajtů. n musí být hodnota od 1 do 8000. max označuje, že maximální velikost úložiště je 2^31-1 bajtů (2 GB). Velikost úložiště je skutečná délka zadaných dat + 2 bajty. Délka max se vztahuje pouze na Azure Synapse Analytics.

char [ ( n ) ]
Pevná délka, ne unicode znaková data s délkou n bajtů. n musí být hodnota od 1 do 8000. Velikost úložiště je n bajtů. Výchozí hodnota pro n je 1.

varbinary [ ( n | max ) ] Binární data s proměnnou délkou. n může být hodnota od 1 do 8000. max označuje, že maximální velikost úložiště je 2^31-1 bajtů (2 GB). Velikost úložiště je skutečná délka zadaných dat + 2 bajty. Výchozí hodnota pro n je 7. Délka max se vztahuje pouze na Azure Synapse Analytics.

binary [ ( n ) ]
Binární data s pevnou délkou s délkou n bajtů n může být hodnota od 1 do 8000. Velikost úložiště je n bajtů. Výchozí hodnota pro n je 7.

uniqueidentifier
Je identifikátor GUID 16 bajtů.

Permissions

Vytvoření tabulky vyžaduje oprávnění v db_ddladmin pevné databázové roli, nebo:

  • CREATE TABLE oprávnění k databázi
  • ALTER SCHEMA oprávnění ke schématu tabulky

Vytvoření dělené tabulky vyžaduje oprávnění v db_ddladmin pevné databázové roli nebo

  • ALTER ANY DATASPACE povolení

Přihlášení, které vytvoří místní dočasnou tabulku, obdrží CONTROL, INSERTSELECT, a UPDATE oprávnění k tabulce.

Remarks

Minimální a maximální limity ve službě Azure Synapse Analytics najdete v omezení kapacity služby Azure Synapse Analytics.

Určení počtu oddílů tabulky

Každá uživatelsky definovaná tabulka je rozdělena do několika menších tabulek, které jsou uloženy v samostatných umístěních označovaných jako distribuce. Azure Synapse Analytics používá 60 distribucí. V systému PDW (Analytics Platform System) závisí počet distribucí na počtu výpočetních uzlů.

Každá distribuce obsahuje všechny oddíly tabulky. Pokud například existuje 60 distribucí a čtyři oddíly tabulky plus jeden prázdný oddíl, bude existovat 300 oddílů (5 x 60 = 300). Pokud je tabulka clusterovaným indexem columnstore, v každém oddílu bude jeden index columnstore, což znamená, že budete mít 300 indexů columnstore.

Doporučujeme použít méně oddílů tabulky, abyste zajistili, že každý index columnstore má dostatek řádků, aby využil výhod indexů columnstore. Další informace v Azure Synapse Analytics najdete v tématu Dělení tabulek ve vyhrazeném fondu SQL a indexech vyhrazených tabulek fondu SQL ve službě Azure Synapse Analytics.

Tabulka rowstore (halda nebo clusterovaný index)

Tabulka rowstore je tabulka uložená v pořadí po řádech. Jedná se o haldu nebo clusterovaný index. Azure Synapse Analytics vytvoří všechny tabulky úložiště řádků s kompresí stránek; toto chování není konfigurovatelné uživatelem.

Tabulka Columnstore (index columnstore)

Tabulka columnstore je tabulka uložená v pořadí sloupců po sloupcích. Index columnstore je technologie, která spravuje data uložená v tabulce columnstore. Clusterovaný index columnstore nemá vliv na distribuci dat. Ovlivňuje spíše způsob ukládání dat v rámci každé distribuce.

Pokud chcete změnit tabulku rowstore na tabulku columnstore, odstraňte všechny existující indexy v tabulce a vytvořte clusterovaný index columnstore. Příklad najdete v tématu CREATE COLUMNSTORE INDEX (Transact-SQL).

Další informace najdete v těchto článcích:

Limitations

  • Omezení distribučního sloupce nelze definovat DEFAULT .
  • Název tabulky nesmí být delší než 128 znaků.
  • Název sloupce nesmí být delší než 128 znaků.

Partitions

Sloupec oddílu nemůže mít kolaci jenom s kódováním Unicode. Například následující příkaz selže:

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

Pokud boundary_value je hodnota literálu, která musí být implicitně převedena na datový typ v partition_column_name, dojde k nesrovnalostem. Hodnota literálu se zobrazí prostřednictvím systémových zobrazení Azure Synapse Analytics, ale převedená hodnota se používá pro operace Transact-SQL.

Dočasné tabulky

Globální dočasné tabulky, které začínají ## , nejsou podporované.

Místní dočasné tabulky mají následující omezení a omezení:

  • Jsou viditelné pouze pro aktuální relaci. Azure Synapse Analytics je automaticky zahodí na konci relace. Pokud je chcete explicitně odstranit, použijte příkaz DROP TABLE .
  • Nejde je přejmenovat.
  • Nemůžou mít oddíly ani zobrazení.
  • Jejich oprávnění nelze změnit. GRANT, DENYa REVOKE příkazy nelze použít s místními dočasnými tabulkami.
  • Příkazy konzoly databáze jsou blokované pro dočasné tabulky.
  • Pokud se v dávce používá více než jedna místní dočasná tabulka, musí mít každý jedinečný název. Pokud používáte stejnou dávku a vytváříte stejnou místní dočasnou tabulku, Azure Synapse Analytics interně připojí číselnou příponu k místnímu dočasnému názvu tabulky, aby zachovala jedinečný název pro každou místní dočasnou tabulku.

Chování při uzamčení

Vezme výhradní zámek v tabulce. Přebírá sdílený zámek u objektů DATABASE, SCHEMA a SCHEMARESOLUTION.

Příklady sloupců

A. Zadání kolace sloupců

V následujícím příkladu se tabulka MyTable vytvoří se dvěma různými kolacemi sloupců. Ve výchozím nastavení má sloupec mycolumn1 výchozí kolaci Latin1_General_100_CI_AS_KS_WS. mycolumn2 Sloupec obsahuje kolaci Frisian_100_CS_AS.

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

B. Zadání výchozího omezení pro sloupec

Následující příklad ukazuje syntaxi, která určuje výchozí hodnotu sloupce. Sloupec colA má výchozí omezení s názvem constraint_colA a výchozí hodnotou 0.

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

Příklady dočasných tabulek

C. Vytvoření místní dočasné tabulky

Následující příklad vytvoří místní dočasnou tabulku s názvem #myTable. Tabulka je určena názvem tří částí, který začíná řetězcem #.

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

Příklady pro strukturu tabulky

D. Vytvoření tabulky s clusterovaným indexem columnstore

Následující příklad vytvoří distribuovanou tabulku s clusterovaným indexem columnstore. Každá distribuce je uložená jako columnstore.

Clusterovaný index columnstore nemá vliv na způsob distribuce dat. data se vždy distribuují podle řádku. Clusterovaný index columnstore ovlivňuje způsob ukládání dat v rámci každé distribuce.

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

E. Vytvoření uspořádaného clusterovaného indexu columnstore

Následující příklad ukazuje, jak vytvořit uspořádaný clusterovaný index columnstore. Index je seřazený podle SHIPDATE.

CREATE TABLE Lineitem  
WITH (DISTRIBUTION = ROUND_ROBIN, CLUSTERED COLUMNSTORE INDEX ORDER(SHIPDATE))  
AS  
SELECT * FROM ext_Lineitem

Příklady distribuce tabulek

F. Vytvoření tabulky ROUND_ROBIN

Následující příklad vytvoří tabulku ROUND_ROBIN se třemi sloupci a bez oddílů. Data se šíří napříč všemi distribucemi. Tabulka se vytvoří pomocí CLUSTERED COLUMNSTORE INDEX, který poskytuje lepší výkon a kompresi dat než haldu nebo clusterovaný index rowstore.

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

G. Vytvoření tabulky, která je distribuovaná hodnotou hash ve více sloupcích (Preview)

Následující příklad vytvoří stejnou tabulku jako předchozí příklad. V této tabulce se ale řádky distribuují (na id sloupcích a zipCode v řádcích). Tabulka se vytvoří s clusterovaným indexem columnstore, který poskytuje lepší výkon a kompresi dat než haldu nebo clusterovaný index rowstore.

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

H. Vytvoření replikované tabulky

Následující příklad vytvoří replikovanou tabulku podobnou předchozím příkladům. Replikované tabulky se zkopírují úplně do každého výpočetního uzlu. Při této kopii na každém výpočetním uzlu se přesun dat pro dotazy sníží. Tento příklad se vytvoří pomocí CLUSTERED INDEXu, který poskytuje lepší kompresi dat než haldu. Haldu nemusí obsahovat dostatek řádků, aby bylo možné dosáhnout dobré komprese CLUSTERED COLUMNSTORE INDEX.

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

Příklady pro oddíly tabulky

I. Vytvoření dělené tabulky

Následující příklad vytvoří stejnou tabulku jako v příkladu A s přidáním RANGE LEFT dělení na id sloupec. Určuje čtyři hodnoty hranic oddílů, což vede k pěti oddílům.

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
  );  

V tomto příkladu jsou data seřazená do následujících oddílů:

  • Oddíl 1: sloupec <= 10
  • Oddíl 2: 10 < col <= 20
  • Oddíl 3: 20 < col <= 30
  • Oddíl 4: 30 < col <= 40
  • Oddíl 5: 40 < col

Pokud byla stejná tabulka dělená vpravo namísto OBLASTI VLEVO (výchozí), data se seřadí do následujících oddílů:

  • Oddíl 1: sloupec < 10
  • Oddíl 2: 10 <= sloupec < 20
  • Oddíl 3: 20 <= sloupec < 30
  • Oddíl 4: 30 <= sloupec < 40
  • Oddíl 5: 40 <= sloupec

J. Vytvoření dělené tabulky s jedním oddílem

Následující příklad vytvoří dělenou tabulku s jedním oddílem. Nezadá žádnou hodnotu hranice, což vede k jednomu oddílu.

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

K. Vytvoření tabulky s dělením kalendářních dat

Následující příklad vytvoří novou tabulku s názvem myTable, s dělením date na sloupec. RANGE RIGHT Použitím a kalendářními daty pro hodnoty hranic umístí do každého oddílu měsíc dat.

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'  
      ))
  );  

platí pro:Warehouse v Microsoft Fabric

CREATE TABLE (Datový sklad prostředků infrastruktury)

Vytvoří novou tabulku ve skladu v Microsoft Fabric.

Další informace najdete v tématu Vytváření tabulek ve skladu v Microsoft Fabric.

Note

Pro SQL databázi v Microsoft Fabric viz CREATE TABLE. V případě platforem SQL Server a Azure SQL přejděte na create TABLE a v rozevíracím seznamu verzí vyberte požadovanou verzi produktu. Pokud chcete odkazovat na Azure Synapse Analytics a Platform Platform System (PDW), navštivte create TABLE (Azure Synapse Analytics).

Transact-SQL konvence syntaxe

Syntax

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

<column_options> ::=
    [ NULL | NOT NULL ] -- default is NULL
    [ COLLATE Windows_collation_name ]

<data type> ::=
      datetime2 ( n )   
    | date  
    | time ( n )   
    | float [ ( n ) ]  
    | real [ ( n ) ]  
    | decimal [ ( precision [ , scale ] ) ]   
    | numeric [ ( precision [ , scale ] ) ]   
    | bigint  
    | int   
    | smallint  
    | bit  
    | varchar [ ( n | MAX ) ] 
    | char [ ( n ) ]  
    | varbinary [ ( n | MAX ) ] 
    | uniqueidentifier  

Arguments

database_name

Název databáze, která bude obsahovat novou tabulku. Výchozí hodnotou je aktuální databáze.

schema_name

Schéma tabulky. Zadání schématu je volitelné. Pokud je prázdné, použije se výchozí schéma.

table_name

Název nové tabulky.

column_name

Název sloupce tabulky.

S (SHLUK [ ,... n])

Klauzule CLUSTER BY pro shlukování dat ve Fabric Data Warehouse vyžaduje, aby byl pro datové shlukování specifikován alespoň jeden sloupec a maximálně čtyři sloupce.

Pro více informací viz Data clustering in Fabric Data Warehouse.

Možnosti sloupce

NULL | NOT NULL

Určuje, jestli NULL jsou ve sloupci povoleny hodnoty. Výchozí hodnota je NULL.

COLLATE Windows_collation_name

Určuje kolaci výrazu.

Další informace o podporovaných kolacích naleznete v tématu COLLATE.

Datový typ

Microsoft Fabric podporuje nejčastěji používané datové typy. Další informace najdete v tématu Datové typy v Microsoft Fabric.

Note

Podobně jako u SQL Serveru existuje limit 8 060 bajtů na řádek. Může se stát blokující problém u tabulek s mnoha sloupci nebo sloupci s velkými datovými typy, například varchar(8000)varbinary(8000). Vložení nebo aktualizace, které porušují limit 8 060 bajtů, mají za následek kódy chyb 511 nebo 611. Další informace najdete v tématu Stránky a rozsahy – Průvodce architekturou.

Tabulku převodů datových typů naleznete v části Implicitní převody cast a CONVERT (Transact-SQL). Další informace najdete v tématu Datové typy a funkce data a času (Transact-SQL).

Následující seznam podporovaných datových typů obsahuje jejich podrobnosti a bajty úložiště.

datetime2 ( n )
Ukládá datum a čas dne s 19 až 26 znaky podle gregoriánského kalendáře. Datum může obsahovat rok, měsíc a den. Čas obsahuje hodiny, minuty a sekundy. Jako možnost můžete v závislosti na n parametru uložit a zobrazit nulu až šest číslic pro desetinné sekundy. Velikost úložiště je 8 bajtů. n musí být hodnota od 0 do 6.

Note

Neexistuje žádná výchozí přesnost, jako jsou jiné platformy SQL. Je nutné zadat hodnotu přesnosti od 0 do 6.

n hodnota Precision Scale
0 19 0
1 21 1
2 22 2
3 23 3
4 24 4
5 25 5
6 26 6

date
Uloží datum s maximálně 10 znaky pro rok, měsíc a den podle gregoriánského kalendáře. Velikost úložiště je 3 bajty. Datum je uloženo jako celé číslo.

time ( n )
n musí být hodnota od 0 do 6.

float [ ( n ) ]
Přibližný číselný datový typ pro použití s číselnými daty s plovoucí desetinou čárkou Data s plovoucí desetinou čárkou jsou přibližná, což znamená, že ne všechny hodnoty v oblasti datových typů lze přesně reprezentovat. n určuje počet bitů použitých k uložení mantisy plováku ve vědeckém zápisu. n určuje přesnost a velikost úložiště. Pokud je zadán n , musí to být hodnota mezi 1 a 53. Výchozí hodnota n je 53.

Note

Neexistuje žádná výchozí přesnost, jako jsou jiné platformy SQL. Je nutné zadat hodnotu přesnosti od 0 do 6.

n hodnota Precision Velikost úložiště
1-24 7 číslic 4 bajty
25-53 15 číslic 8 bajtů

Azure Synapse Analytics považuje n za jednu ze dvou možných hodnot. Pokud 1<= n = <24 = , n je považován za 24. Pokud 25<= n = <53 = , n je považován za 53.

Datový typ float služby Azure Synapse Analytics odpovídá standardu ISO pro všechny hodnoty n z 153. Synonymum pro dvojitou přesnost je float(53).

real [ ( n ) ]
Definice skutečné hodnoty je stejná jako plovoucí. Synonymum ISO pro reálné je float(24).

decimal [ ( přesnost [ , měřítko ] ) ] | numeric [ ( přesnost [ , měřítko ] ) ] ]
Ukládá pevnou přesnost a čísla měřítka.

precision
Maximální celkový počet desetinných míst, které lze uložit, na obou stranách desetinné čárky. Přesnost musí být hodnota od 1 maximální přesnosti 38. Výchozí přesnost je 18.

scale
Maximální počet desítkových číslic, které lze uložit napravo od desetinné čárky. Měřítko musí být hodnota od 0přesnosti. Měřítko můžete zadat pouze v případě, že je zadána přesnost. Výchozí měřítko je 0 a tak 0<= měřítko< = přesnost. Maximální velikosti úložiště se liší v závislosti na přesnosti.

Precision Paměťové bajty
1-9 5
10-19 9
20-28 13
29-38 17

bigint | int | smallint
Datové typy s přesným číslem, které používají celočíselná data. Úložiště je znázorněno v následující tabulce.

Datový typ Paměťové bajty
bigint 8
int 4
smallint 2

bit
Celočíselná datová hodnota, která může převzít hodnotu 1, 0nebo NULL. Azure Synapse Analytics optimalizuje úložiště bitových sloupců. Pokud tabulka obsahuje 8 nebo méně bitových sloupců, jsou sloupce uloženy jako 1 bajt. Pokud existují 9 až 16bitové sloupce, jsou sloupce uložené jako 2 bajty atd.

varchar [ ( n | MAX ) ] Proměnná délka, znaková data Unicode s délkou n bajtů. n musí být hodnota od 1 do 8000. Velikost úložiště je skutečná délka zadaných dat + 2 bajty. Výchozí hodnota pro n je 1. Ve varchar(MAX) sloupci je možné uložit až 1 MB textu ve skladu.

Note

varchar(MAX) je ve verzi Preview ve službě Warehouse. Další informace najdete v tématu Datové typy v Microsoft Fabric.

char [ ( n ) ]
Pevná délka dat znaků Unicode s délkou n bajtů. n musí být hodnota od 1 do 8000. Velikost úložiště je n bajtů. Výchozí hodnota pro n je 1.

varbinary [ ( n | MAX ) ] Binární data s proměnnou délkou. n může být hodnota od 1 do 8000. Velikost úložiště je skutečná délka zadaných dat + 2 bajty. Výchozí hodnota pro n je 7. Sloupec varbinary(MAX) může ukládat až 1 MB dat ve skladu.

Note

varbinary(MAX) je ve verzi Preview ve službě Warehouse. Další informace najdete v tématu Datové typy v Microsoft Fabric.

uniqueidentifier
Je identifikátor GUID 16 bajtů.

Permissions

Oprávnění v Microsoft Fabric se liší od oprávnění Azure Synapse Analytics.

Uživatel musí být členem role Správce, Člen nebo Přispěvatel v pracovním prostoru Prostředky infrastruktury.

Limitations

Remarks

Sklad obsahuje omezené Transact-SQL funkce. Další informace naleznete v tématu T-SQL Surface Area v Microsoft Fabric.

Chování při uzamčení

Vezme Schema-Modification zámek tabulky, sdílený zámek databáze a Schema-Stability zámek schématu.

Examples

A. Vytvořte shlukovou tabulku pro prodejní data

Tento příklad vytváří jednoduchou Sales tabulku a používá CustomerID sloupce a SaleDate pro shlukování dat.

CREATE TABLE Sales (
    SaleID INT,
    CustomerID INT,
    SaleDate DATE,
    Amount DECIMAL(10,2)
) WITH (CLUSTER BY (CustomerID, SaleDate))