Synapse SQL ile CETAS
Aşağıdaki görevleri tamamlamak için ayrılmış SQL havuzunda veya sunucusuz SQL havuzunda CREATE EXTERNAL TABLE AS SELECT (CETAS) komutunu kullanabilirsiniz:
Dış tablo oluşturma
Transact-SQL SELECT deyiminin sonuçlarını paralel olarak şu şekilde dışarı aktarın:
- Hadoop
- Azure Depolama Blobu
- Azure Data Lake Storage Gen2
Ayrılmış SQL havuzunda CETAS
Ayrılmış SQL havuzu, CETAS kullanımı ve söz dizimi için CREATE EXTERNAL TABLE AS SELECT makalesini gözden geçirin. Ayrıca, ayrılmış SQL havuzunu kullanan CTAS hakkında yönergeler için CREATE TABLE AS SELECT makalesine bakın.
Sunucusuz SQL havuzunda CETAS
Sunucusuz SQL havuzu kullanılırken, CETAS bir dış tablo oluşturmak ve sorgu sonuçlarını Azure Depolama Blobu'na veya Azure Data Lake Storage 2. Nesil dışarı aktarmak için kullanılır.
Tam söz dizimi için CREATE EXTERNAL TABLE AS SELECT (Transact-SQL) bölümüne bakın.
Örnekler
Bu örneklerde, yıl ve eyalete göre toplanan toplam popülasyonu population_ds veri kaynağında bulunan bir aggregated_data klasörüne kaydetmek için CETAS kullanılır.
Bu örnek, daha önce oluşturulan kimlik bilgilerine, veri kaynağına ve dış dosya biçimine dayanır. Dış tablolar belgesine bakın. Sorgu sonuçlarını aynı veri kaynağındaki farklı bir klasöre kaydetmek için LOCATION bağımsız değişkenini değiştirin.
Sonuçları farklı bir depolama hesabına kaydetmek için DATA_SOURCE bağımsız değişkeni için farklı bir veri kaynağı oluşturun ve kullanın.
Not
İzleyen örneklerde genel bir Azure Open Data depolama hesabı kullanılır. Salt okunurdur. Bu sorguları yürütmek için, yazma izinlerine sahip olduğunuz veri kaynağını sağlamanız gerekir.
-- 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
Aşağıdaki örnek, CETAS kaynağı olarak bir dış tablo kullanır. Daha önce oluşturulan kimlik bilgilerine, veri kaynağına, dış dosya biçimine ve dış tabloya dayanır. Dış tablolar belgesine bakın.
-- 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
Genel örnek
Bu örnekte kaynak olarak Görünüm ile CETAS yazmaya ve kimlik doğrulaması olarak Yönetilen Kimlik kullanmaya yönelik şablon kodu örneğini görebiliriz.
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
Desteklenen veri türleri
CETAS, aşağıdaki SQL veri türlerine sahip sonuç kümelerini depolamak için kullanılabilir:
- ikili
- Varbinary
- char
- varchar
- Nchar
- nvarchar
- küçüktarih
- date
- datetime
- datetime2
- Datetimeoffset
- time
- decimal
- sayısal
- float
- real
- bigint
- tinyint
- smallint
- int
- bigint
- bit
- Para
- Smallmoney
- uniqueidentifier
Not
1 MB'tan büyük LOB'lar CETAS ile kullanılamaz.
Sonraki adımlar
Apache Spark'ı dış tablolar için Azure Synapse sorgulamayı deneyin.