Udostępnij za pośrednictwem


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, zapoznaj się ze składnią i użytkowaniem CETAS w artykule CREATE EXTERNAL TABLE AS SELECT. Aby uzyskać wskazówki dotyczące korzystania z 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 wcześniej utworzonym poświadczeniu, źródle danych i formacie pliku zewnętrznego. Zapoznaj się z dokumentem zewnętrznych tabel. 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 i użyj innego źródła danych jako argument DATA_SOURCE.

Uwaga

Przykłady, które zostały przygotowane przy użyciu publicznego konta magazynowego Azure Open Data. 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 dla 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:

CETAS może być używane do przechowywania zestawów wyników przy użyciu następujących typów danych SQL:

  • binarny
  • varbinary
  • char
  • varchar
  • nchar
  • nvarchar
  • mała data
  • data
  • data i czas
  • datetime2
  • datetimeoffset
  • czas
  • dziesiętny
  • numeryczny
  • liczba zmiennoprzecinkowa
  • rzeczywiste
  • bigint
  • tinyint
  • smallint
  • int
  • bigint
  • bit
  • pieniądze
  • smallmoney

Uwaga

Nie można używać obiektów LOB większych niż 1 MB w połączeniu z CETAS.

Następny krok