Bagikan melalui


Menyimpan hasil kueri ke penyimpanan menggunakan kumpulan SQL tanpa server di Azure Synapse Analytics

Dalam artikel ini, Anda akan mempelajari cara menyimpan hasil kueri ke penyimpanan menggunakan kumpulan SQL tanpa server.

Prasyarat

Langkah pertama Anda adalah membuat database tempat Anda akan menjalankan kueri. Kemudian menginisialisasi objek dengan mengeksekusi skrip penyiapan pada database itu. Skrip penyiapan ini akan membuat sumber data, informasi masuk lingkup database, dan format file eksternal yang digunakan untuk membaca data dalam sampel ini.

Ikuti instruksi dalam artikel ini untuk membuat sumber data, informasi masuk lingkup database, dan format file eksternal yang digunakan untuk menulis data ke dalam penyimpanan output.

Buat tabel eksternal dengan select

Anda dapat menggunakan pernyataan CREATE EXTERNAL TABLE AS SELECT (CETAS) untuk menyimpan hasil kueri ke penyimpanan.

Catatan

Ubah nilai-nilai ini dalam kueri untuk mencerminkan lingkungan Anda:

  • mydbname - ubah menjadi nama database yang Anda buat
  • storage-account-sas - tanda tangan akses bersama untuk akun penyimpanan tempat Anda ingin menulis hasil
  • your-storage-account-name - nama akun penyimpanan tempat Anda ingin menulis hasil (Pastikan Anda memiliki kontainer yang disebut 'csv' atau Anda juga mengubah nama kontainer di sini)
USE [mydbname];
GO

CREATE DATABASE SCOPED CREDENTIAL [SasTokenWrite]
WITH IDENTITY = 'SHARED ACCESS SIGNATURE',
     SECRET = 'storage-account-sas';
GO

CREATE EXTERNAL DATA SOURCE [MyDataSource] WITH (
    LOCATION = 'https://your-storage-account-name.blob.core.windows.net/csv', CREDENTIAL = [SasTokenWrite]
);
GO

CREATE EXTERNAL FILE FORMAT [ParquetFF] WITH (
    FORMAT_TYPE = PARQUET,
    DATA_COMPRESSION = 'org.apache.hadoop.io.compress.SnappyCodec'
);
GO

CREATE EXTERNAL TABLE [dbo].[PopulationCETAS] WITH (
        LOCATION = 'populationParquet/',
        DATA_SOURCE = [MyDataSource],
        FILE_FORMAT = [ParquetFF]
) AS
SELECT
    *
FROM
    OPENROWSET(
        BULK 'csv/population-unix/population.csv',
        DATA_SOURCE = 'sqlondemanddemo',
        FORMAT = 'CSV', PARSER_VERSION = '2.0'
    ) WITH (
        CountryCode varchar(4),
        CountryName varchar(64),
        Year int,
        PopulationCount int
    ) AS r;

Catatan

Anda harus mengubah skrip ini dan mengubah lokasi target untuk mengeksekusinya kembali. Tabel eksternal tidak dapat dibuat di lokasi tempat Anda sudah memiliki beberapa data.

Menggunakan tabel eksternal

Anda dapat menggunakan tabel eksternal yang dibuat melalui CETAS seperti tabel eksternal biasa.

Catatan

Ubah baris pertama dalam kueri, yaitu, [mydbname], sehingga Anda menggunakan database yang Anda buat.

USE [mydbname];
GO

SELECT
    CountryName, PopulationCount
FROM PopulationCETAS
WHERE
    [Year] = 2019
ORDER BY
    [PopulationCount] DESC;

Keterangan

Setelah Anda menyimpan hasil, data dalam tabel eksternal tidak dapat dimodifikasi. Anda tidak dapat mengulangi skrip ini karena CETAS tidak akan menimpa data dasar yang dibuat dalam eksekusi sebelumnya.

Satu-satunya jenis output yang didukung saat ini adalah Parquet dan CSV.

Untuk informasi selengkapnya tentang cara mengkueri jenis file yang berbeda, lihat Kueri file CSV tunggal, Kueri file Parquet, dan artikel Kueri file JSON.