CETAS a Synapse SQL-vel
A CREATE EXTERNAL TABLE AS SELECT (CETAS) használatával dedikált SQL-készletben vagy kiszolgáló nélküli SQL-készletben végezheti el a következő feladatokat:
Külső tábla létrehozása
Exportálja párhuzamosan a Transact-SQL SELECT utasítás eredményeit a következőre:
- Hadoop
- Azure Storage Blob
- Azure Data Lake Storage Gen2
CETAS dedikált SQL-készletben
Dedikált SQL-készlet, CETAS-használat és szintaxis esetén tekintse meg a CREATE EXTERNAL TABLE AS SELECT című cikket. Emellett a dedikált SQL-készletet használó CTAS-sel kapcsolatos útmutatásért tekintse meg a CREATE TABLE AS SELECT cikket.
CETAS kiszolgáló nélküli SQL-készletben
Kiszolgáló nélküli SQL-készlet használata esetén a CETAS egy külső tábla létrehozásához és a lekérdezési eredmények exportálásához használható az Azure Storage Blobba vagy az Azure Data Lake Storage Gen2-be.
A teljes szintaxist a CREATE EXTERNAL TABLE AS SELECT (Transact-SQL) című témakörben tekintheti meg.
Példák
Ezek a példák a CETAS-t használják a teljes népesség évenkénti összesítésére és állapotának mentésére egy aggregated_data mappába, amely az population_ds adatforrásban található.
Ez a minta a korábban létrehozott hitelesítő adatokra, adatforrásokra és külső fájlformátumra támaszkodik. Tekintse meg a külső táblák dokumentumát . Ha a lekérdezési eredményeket egy másik mappába szeretné menteni ugyanabban az adatforrásban, módosítsa a LOCATION argumentumot.
Ha az eredményeket egy másik tárfiókba szeretné menteni, hozzon létre és használjon másik adatforrást DATA_SOURCE argumentumhoz.
Feljegyzés
Az alábbi minták nyilvános Azure Open Data Storage-fiókot használnak. Ez írásvédett. A lekérdezések végrehajtásához meg kell adnia azt az adatforrást, amelyhez írási engedélyekkel rendelkezik.
-- use CETAS to export select statement with OPENROWSET result to storage
CREATE EXTERNAL TABLE population_by_year_state
WITH (
LOCATION = 'aggregated_data/',
DATA_SOURCE = population_ds,
FILE_FORMAT = census_file_format
)
AS
SELECT decennialTime, stateName, SUM(population) AS population
FROM
OPENROWSET(BULK 'https://azureopendatastorage.dfs.core.windows.net/censusdatacontainer/release/us_population_county/year=*/*.parquet',
FORMAT='PARQUET') AS [r]
GROUP BY decennialTime, stateName
GO
-- you can query the newly created external table
SELECT * FROM population_by_year_state
Az alábbi minta egy külső táblát használ a CETAS forrásaként. A korábban létrehozott hitelesítő adatokra, adatforrásra, külső fájlformátumra és külső táblára támaszkodik. Tekintse meg a külső táblák dokumentumát .
-- use CETAS with select from external table
CREATE EXTERNAL TABLE population_by_year_state
WITH (
LOCATION = 'aggregated_data/',
DATA_SOURCE = population_ds,
FILE_FORMAT = census_file_format
)
AS
SELECT decennialTime, stateName, SUM(population) AS population
FROM census_external_table
GROUP BY decennialTime, stateName
GO
-- you can query the newly created external table
SELECT * FROM population_by_year_state
Általános példa
Ebben a példában egy sablonkódot láthatunk a CETAS forrásnézettel való írásához és a felügyelt identitás hitelesítésként való használatához.
CREATE DATABASE [<mydatabase>];
GO
USE [<mydatabase>];
GO
CREATE MASTER KEY ENCRYPTION BY PASSWORD = '<strong password>';
CREATE DATABASE SCOPED CREDENTIAL [WorkspaceIdentity] WITH IDENTITY = 'Managed Identity';
GO
CREATE EXTERNAL FILE FORMAT [ParquetFF] WITH (
FORMAT_TYPE = PARQUET,
DATA_COMPRESSION = 'org.apache.hadoop.io.compress.SnappyCodec'
);
GO
CREATE EXTERNAL DATA SOURCE [SynapseSQLwriteable] WITH (
LOCATION = 'https://<mystoageaccount>.dfs.core.windows.net/<mycontainer>/<mybaseoutputfolderpath>',
CREDENTIAL = [WorkspaceIdentity]
);
GO
CREATE EXTERNAL TABLE [dbo].[<myexternaltable>] WITH (
LOCATION = '<myoutputsubfolder>/',
DATA_SOURCE = [SynapseSQLwriteable],
FILE_FORMAT = [ParquetFF]
) AS
SELECT * FROM [<myview>];
GO
Támogatott adattípusok
A CETAS az alábbi SQL-adattípusokkal rendelkező eredményhalmazok tárolására használható:
- bináris
- varbinary
- bejárónő
- varchar
- nchar
- nvarchar
- kisdátum
- dátum:
- dátum/idő
- datetime2
- datetimeoffset
- time
- tizedes
- Numerikus
- float
- valós szám
- bigint
- tinyint
- smallint
- egész
- bigint
- bit
- pénz
- smallmoney
Feljegyzés
Az 1 MB-nál nagyobb LOB-k nem használhatók a CETAS-sel.