CETAS z usługą Synapse SQL
Aby wykonać następujące zadania, możesz użyć polecenia CREATE EXTERNAL TABLE AS SELECT (CETAS) w dedykowanej puli SQL lub bezserwerowej puli SQL:
Tworzenie tabeli zewnętrznej
Eksportuj równolegle wyniki instrukcji Transact-SQL SELECT do:
- Hadoop
- Azure Storage Blob
- Azure Data Lake Storage Gen2
CETAS w dedykowanej puli SQL
W przypadku dedykowanej puli SQL użycie i składnia CETAS zapoznaj się z artykułem CREATE EXTERNAL TABLE AS SELECT (TWORZENIE TABELI ZEWNĘTRZNEJ JAKO SELECT ). Ponadto, aby uzyskać wskazówki dotyczące funkcji CTAS przy użyciu dedykowanej puli SQL, zobacz artykuł CREATE TABLE AS SELECT (TWORZENIE TABELI JAKO SELECT ).
CETAS w bezserwerowej puli SQL
W przypadku korzystania z bezserwerowej puli SQL funkcja CETAS służy do tworzenia tabeli zewnętrznej i eksportowania wyników zapytań do obiektu blob usługi Azure Storage lub usługi Azure Data Lake Storage Gen2.
Aby uzyskać pełną składnię, zobacz CREATE EXTERNAL TABLE AS SELECT (Transact-SQL).
Przykłady
W tych przykładach użyto instrukcji CETAS, aby zapisać łączną populację zagregowaną według roku i stanu w folderze aggregated_data znajdującym się w population_ds źródle danych.
Ten przykład opiera się na utworzonym wcześniej formacie poświadczeń, źródła danych i pliku zewnętrznego. Zapoznaj się z dokumentem tabel zewnętrznych. Aby zapisać wyniki zapytania w innym folderze w tym samym źródle danych, zmień argument LOCATION.
Aby zapisać wyniki na innym koncie magazynu, utwórz inne źródło danych dla DATA_SOURCE argumentu.
Uwaga
Przykłady, które są zgodne z publicznym kontem magazynu usługi Azure Open Data. Jest tylko do odczytu. Aby wykonać te zapytania, musisz podać źródło danych, dla którego masz uprawnienia do zapisu.
-- 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
W poniższym przykładzie użyto tabeli zewnętrznej jako źródła instrukcji CETAS. Opiera się na poświadczeniach, źródle danych, formacie pliku zewnętrznego i utworzonej wcześniej tabeli zewnętrznej. Zapoznaj się z dokumentem tabel zewnętrznych.
-- 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
Przykład ogólny
W tym przykładzie przedstawiono przykład kodu szablonu do pisania instrukcji CETAS z widokiem jako źródłem i użyciem tożsamości zarządzanej jako uwierzytelniania.
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
Obsługiwane typy danych:
Instrukcje CETAS mogą służyć do przechowywania zestawów wyników z następującymi typami danych SQL:
- dane binarne
- varbinary
- char
- varchar
- nchar
- nvarchar
- mały rozmiar
- data
- datetime
- datetime2
- datetimeoffset
- time
- decimal
- numeryczne
- liczba zmiennoprzecinkowa
- rzeczywiste
- bigint
- tinyint
- smallint
- int
- bigint
- bitowe
- pieniędzy
- smallmoney
Uwaga
Nie można używać obiektów LOB większych niż 1 MB z instrukcjami CETAS.