Bagikan melalui


CETAS dengan Synapse SQL

Anda dapat menggunakan CREATE EXTERNAL TABLE AS SELECT (CETAS) di kumpulan SQL khusus atau kumpulan SQL tanpa server untuk menyelesaikan tugas-tugas berikut:

  • Membuat tabel eksternal

  • Ekspor secara paralel hasil pernyataan Transact-SQL SELECT untuk:

    • Hadoop
    • Azure Storage Blob
    • Azure Data Lake Storage Gen2

CETAS di kumpulan SQL khusus

Untuk kumpulan SQL khusus, penggunaan dan sintaks CETAS, lihat artikel CREATE EXTERNAL TABLE AS SELECT. Selain itu, untuk panduan tentang CTAS menggunakan kumpulan SQL khusus, lihat artikel CREATE TABLE AS SELECT.

CETAS dalam kumpulan SQL tanpa server

Saat menggunakan kumpulan SQL tanpa server, CETAS digunakan untuk membuat tabel eksternal dan mengekspor hasil kueri ke Azure Storage Blob atau Azure Data Lake Storage Gen2.

Untuk sintaks lengkap, lihat CREATE EXTERNAL TABLE AS SELECT (Transact-SQL).

Contoh

Contoh-contoh ini menggunakan CETAS untuk menghemat total populasi yang diagregasi berdasarkan tahun dan ditetapkan ke folder aggregated_data yang terletak di sumber data population_ds.

Sampel ini bergantung pada kredensial, sumber data, dan format file eksternal yang dibuat sebelumnya. Merujuk ke dokumen tabel eksternal. Untuk menyimpan hasil kueri ke folder lain di sumber data yang sama, ubah argumen LOCATION.

Untuk menyimpan hasil ke akun penyimpanan yang berbeda, buat dan gunakan sumber data yang berbeda untuk argumen DATA_SOURCE.

Catatan

Sampel yang mengikuti menggunakan akun penyimpanan Azure Open Data publik. Hanya baca. Untuk menjalankan kueri ini, Anda harus menyediakan sumber data yang izin menulisnya Anda miliki.

-- 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

Sampel berikut menggunakan tabel eksternal sebagai sumber untuk CETAS. Sampel ini bergantung pada kredensial, sumber data, format file eksternal, dan tabel eksternal yang dibuat sebelumnya. Merujuk ke dokumen tabel eksternal.

-- 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

Contoh umum

Dalam contoh ini kita dapat melihat contoh kode templat untuk menulis CETAS dengan Tampilan sebagai sumber dan menggunakan Identitas Terkelola sebagai autentikasi.

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

Tipe data yang didukung

CETAS dapat digunakan untuk menyimpan kumpulan hasil dengan tipe data SQL berikut:

  • biner
  • varbinary
  • char
  • varchar
  • nchar
  • nvarchar
  • smalldate
  • date
  • datetime
  • tanggalwaktu2
  • tanggalwaktulewat
  • waktu
  • desimal
  • numeric
  • float
  • real
  • bigint
  • tinyint
  • smallint
  • int
  • bigint
  • bit
  • money
  • smallmoney

Catatan

LOB yang lebih besar dari 1MB tidak dapat digunakan dengan CETAS.

Langkah selanjutnya