Compartilhar via


Armazenar os resultados da consulta no armazenamento usando o pool de SQL sem servidor no Azure Synapse Analytics

Neste artigo, você aprenderá a armazenar os resultados da consulta no armazenamento usando o pool de SQL sem servidor.

Pré-requisitos

A primeira etapa é criar um banco de dados no qual você executará as consultas. Em seguida, inicialize os objetos executando o script de instalação nesse banco de dados. Esse script de instalação criará as fontes de dados, as credenciais no escopo do banco de dados e os formatos de arquivo externos que são usados para ler os dados nestas amostras.

Siga as instruções deste artigo para criar fontes de dados, credenciais no escopo do banco de dados e formatos de arquivo externos que são usados para gravar dados no armazenamento de saída.

Create external table as select

Use a instrução CETAS (CREATE EXTERNAL TABLE AS SELECT) para armazenar os resultados da consulta no armazenamento.

Observação

Altere esses valores na consulta para refletir seu ambiente:

  • mydbname - altere-o para o nome do banco de dados que você criou
  • storage-account-sas - a assinatura de acesso compartilhado para uma conta de armazenamento na qual você deseja gravar seus resultados
  • your-storage-account-name - o nome da conta de armazenamento em que você deseja gravar os resultados (certifique-se de ter um contêiner chamado “csv” ou de alterar o nome do contêiner aqui também)
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;

Observação

Você deve modificar esse script e alterar a localização de destino para executá-lo novamente. As tabelas externas não podem ser criadas no local onde você já tem alguns dados.

Usar a tabela externa

Você pode usar a tabela externa criada por meio da CETAS como uma tabela externa normal.

Observação

Altere a primeira linha da consulta, ou seja, [mydbname], para que você esteja usando o banco de dados que criou.

USE [mydbname];
GO

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

Comentários

Depois que você armazena seus resultados, os dados na tabela externa não podem ser modificados. Você não pode repetir esse script porque o CETAS não substituirá os dados subjacentes criados na execução anterior.

Os únicos tipos de saída com suporte atualmente são Parquet e CSV.

Para obter mais informações sobre como consultar diferentes tipos de arquivo, confira os artigos Consultar um arquivo CSV individual, Consultar arquivos Parquet e Consultar arquivos JSON.