INSTRUKCJE 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
Wyeksportuj równolegle wyniki instrukcji Transact-SQL SELECT do:
- Hadoop
- Azure Storage Blob
- Usługa Azure Data Lake Storage 2. generacji
Instrukcje CETAS w dedykowanej puli SQL
W przypadku dedykowanej puli SQL użycie i składnia instrukcji 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 ).
INSTRUKCJE CETAS w bezserwerowej puli SQL
W przypadku korzystania z bezserwerowej puli SQL instrukcja CETAS służy do tworzenia tabeli zewnętrznej i eksportowania wyników zapytań do obiektu blob usługi Azure Storage lub 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 wcześniej utworzonym poświadczeniu, źródle danych i formacie 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 korzystające z publicznego konta magazynu usługi Azure Open Data. Jest on tylko do odczytu. Aby wykonać te zapytania, musisz podać źródło danych, do 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ę on 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żywania 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:
- binarny
- varbinary
- char
- varchar
- nchar
- nvarchar
- smalldate
- data
- datetime
- datetime2
- datetimeoffset
- time
- decimal
- numeryczne
- float
- liczba rzeczywista
- bigint
- tinyint
- smallint
- int
- bigint
- bit
- pieniędzy
- smallmoney
- uniqueidentifier
Uwaga
Z instrukcjami CETAS nie można używać obiektów LOB większych niż 1 MB.
Następne kroki
Spróbuj wykonać zapytanie dotyczące platformy Apache Spark dla Azure Synapse tabel zewnętrznych.