Compartir a través de


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 estos valores en la consulta para reflejar el entorno:

  • mydbname : cámbielo por el nombre de la base de datos que creó
  • storage-account-sas: firma de acceso compartido de una cuenta de almacenamiento en la que desea escribir los resultados
  • your-storage-account-name: el nombre de la cuenta de almacenamiento en la que desea escribir los resultados (asegúrese de que tiene un contenedor denominado "csv" o de cambiar el nombre del contenedor aquí también)
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;

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.

Los únicos tipos de salida que se admiten actualmente son Parquet y CSV.

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.