Compartir vía


Almacenamiento de resultados de consultas en Storage mediante un grupo de SQL sin servidor en Azure Synapse Analytics

En este artículo, aprenderá a almacenar los resultados de las consultas en Storage mediante un grupo de SQL sin servidor.

Requisitos previos

El primer paso es crear una base de datos en la que se ejecutarán las consultas. Luego, se inicializan los objetos, para lo que hay que ejecutar un script de instalación en esa base de datos. Este script de instalación creará los orígenes de datos, las credenciales con ámbito de base de datos y los formatos de archivo externos que se usan para leer datos en estos ejemplos.

Siga las instrucciones de este artículo para crear orígenes de datos, credenciales con ámbito de base de datos y formatos de archivo externos que se usan para escribir datos en el almacenamiento de salida.

CREATE EXTERNAL TABLE AS SELECT

Puede usar la instrucción CREATE EXTERNAL TABLE AS SELECT (CETAS) para almacenar los resultados de la consulta en Storage.

Nota

Cambie la primera línea de la consulta, es decir, [mydbname], para usar la base de datos que ha creado.

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

Debe modificar este script y cambiar la ubicación de destino para ejecutarlo de nuevo. No se pueden crear tablas externas en la ubicación en la que ya tenga algunos datos.

Uso de una tabla externa

La tabla externa que se crea mediante CETAS se puede usar como una tabla externa normal.

Nota

Cambie la primera línea de la consulta, es decir, [mydbname], para usar la base de datos que ha creado.

USE [mydbname];
GO

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

Comentarios

Una vez que se almacenan los resultados, los datos de la tabla externa no se pueden modificar. Este script no se puede repetir porque CETAS no sobrescribirá los datos subyacentes creados en la ejecución anterior. Vote por los siguientes elementos de comentarios si algunos de ellos son necesarios en sus escenarios o proponga unos nuevos en el sitio de comentarios de Azure:

Los únicos tipos de salida que se admiten son Parquet y CSV. Puede votar por los otros tipos en el sitio de comentarios de Azure.

Pasos siguientes

Para más información sobre cómo realizar consultas en distintos tipos de archivo, consulte los artículos Consulta de archivos .csv, Consulta de archivos Parquet y Consulta de archivos JSON.