Archiviare i risultati delle query nell'archiviazione tramite il pool SQL serverless in Azure Synapse Analytics

Questo articolo illustra come archiviare i risultati delle query nell'archiviazione tramite il pool SQL serverless.

Prerequisiti

Il primo passaggio consiste nel creare un database in cui verranno eseguite le query. Inizializzare quindi gli oggetti eseguendo uno script di installazione su tale database. Questo script di configurazione creerà le origini dati, le credenziali con ambito database e i formati di file esterni usati per leggere i dati in questi esempi.

Seguire le istruzioni riportate in questo articolo per creare origini dati, credenziali con ambito database e formati di file esterni usati per scrivere i dati nell'archiviazione di output.

CREATE EXTERNAL TABLE AS SELECT

È possibile usare l'istruzione CREATE EXTERNAL TABLE AS SELECT (CETAS) per archiviare i risultati della query nell'archiviazione.

Nota

Cambiare la prima riga della query, ossia [mydbname], in modo da usare il database creato.

USE [mydbname];
GO

CREATE DATABASE SCOPED CREDENTIAL [SasTokenWrite]
WITH IDENTITY = 'SHARED ACCESS SIGNATURE',
     SECRET = 'sv=2018-03-28&ss=bfqt&srt=sco&sp=rwdlacup&se=2019-04-18T20:42:12Z&st=2019-04-18T12:42:12Z&spr=https&sig=lQHczNvrk1KoYLCpFdSsMANd0ef9BrIPBNJ3VYEIq78%3D';
GO

CREATE EXTERNAL DATA SOURCE [MyDataSource] WITH (
    LOCATION = 'https://<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;

Nota

È necessario modificare questo script e cambiare la posizione di destinazione per eseguirlo di nuovo. Non è possibile creare tabelle esterne nella posizione in cui sono già disponibili dati.

Usare la tabella esterna

È possibile usare la tabella esterna creata tramite CETAS come una normale tabella esterna.

Nota

Cambiare la prima riga della query, ossia [mydbname], in modo da usare il database creato.

USE [mydbname];
GO

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

Commenti

Una volta archiviati i risultati, non è possibile modificare i dati nella tabella esterna. Non è possibile ripetere questo script perché CETAS non sovrascriverà i dati sottostanti creati nell'esecuzione precedente. Esprimere un voto per gli elementi di feedback seguenti se sono necessari nei propri scenari oppure proporre nuove funzionalità nel sito di feedback di Azure:

Gli unici tipi di output supportati sono Parquet e CSV. È possibile votare per gli altri tipi nel sito di feedback di Azure.

Passaggi successivi

Per altre informazioni su come eseguire una query su tipi di file diversi, vedere gli articoli Eseguire query su un singolo file CSV, Eseguire query su file Parquet e Eseguire query su file JSON.