Compartilhar via


Início Rápido: Usar o pool de SQL sem servidor

O pool de SQL sem servidor do Synapse é um serviço de consulta sem servidor que permite executar consultas SQL em arquivos colocados no Armazenamento do Azure. Neste início rápido, você aprenderá a consultar vários tipos de arquivos usando o pool de SQL sem servidor. Para obter uma lista de formatos com suporte, confira OPENROWSET.

Este início rápido mostra como consultar arquivos CSV, Apache Parquet e JSON.

Pré-requisitos

Escolha um cliente SQL para emitir consultas:

  • O Azure Synapse Studio é uma ferramenta da Web que pode ser usada para procurar arquivos no armazenamento e criar consultas SQL.
  • O Visual Studio Code com a extensão mssql é uma ferramenta de dados e desenvolvimento leve e multiplataforma que permite executar consultas SQL e notebooks em seu banco de dados sob demanda.
  • O SQL Server Management Studio é uma ferramenta de cliente que permite executar consultas SQL no banco de dados sob demanda.

Este início rápido usa os seguintes parâmetros:

Parâmetro Descrição
Endereço do ponto de extremidade de serviço do pool de SQL sem servidor Usado como o nome do servidor
Região do ponto de extremidade de serviço do pool de SQL sem servidor Usado para determinar qual armazenamento usar em exemplos
Nome de usuário e senha para acesso de ponto de extremidade Usado para acessar o ponto de extremidade
O banco de dados usado para criar exibições Banco de dados usado como ponto de partida nas amostras

Configuração inicial

Antes de usar os exemplos:

  • Crie um banco de dados para seus modos de exibição (caso você queira usar exibições).
  • Crie credenciais a serem usadas pelo pool de SQL sem servidor para acessar arquivos no armazenamento.

Criar banco de dados

Crie um banco de dados próprio para fins de demonstração. Você pode usar esse banco de dados para criar seus modos de exibição e para as consultas de exemplo neste artigo.

Observação

Os bancos de dados são usados apenas para os metadados de exibição, não para os dados reais. Anote o nome do banco de dados para usar posteriormente no início rápido.

Use o seguinte comando T-SQL, alterando <mydbname> para um nome de sua escolha:

CREATE DATABASE <mydbname>

Criar a fonte de dados

Para executar consultas usando o pool de SQL sem servidor, crie uma fonte de dados que o pool de SQL sem servidor possa usar para acessar arquivos no armazenamento. Execute o snippet de código a seguir para criar a fonte de dados usada em exemplos nesta seção. Substitua <strong-password-here> por uma senha forte de sua escolha.

-- create master key that will protect the credentials:
CREATE MASTER KEY ENCRYPTION BY PASSWORD = '<strong-password-here>'

-- create credentials for containers in our demo storage account
CREATE DATABASE SCOPED CREDENTIAL sqlondemand
WITH IDENTITY='SHARED ACCESS SIGNATURE',  
SECRET = 'sv=2022-11-02&ss=b&srt=co&sp=rl&se=2042-11-26T17:40:55Z&st=2024-11-24T09:40:55Z&spr=https&sig=DKZDuSeZhuCWP9IytWLQwu9shcI5pTJ%2Fw5Crw6fD%2BC8%3D'
GO
CREATE EXTERNAL DATA SOURCE SqlOnDemandDemo WITH (
    LOCATION = 'https://sqlondemandstorage.blob.core.windows.net',
    CREDENTIAL = sqlondemand
);

Consultar arquivos CSV

A imagem a seguir mostra uma visualização do arquivo a ser consultado:

Captura de tela mostrando as primeiras 10 linhas do arquivo CSV sem cabeçalho, nova linha no estilo do Windows.

A seguinte consulta mostra como ler um arquivo CSV que não contém uma linha de cabeçalho, com uma nova linha no estilo do Windows e colunas delimitadas por vírgula:

SELECT TOP 10 *
FROM OPENROWSET
  (
      BULK 'csv/population/*.csv',
      DATA_SOURCE = 'SqlOnDemandDemo',
      FORMAT = 'CSV', PARSER_VERSION = '2.0'
  )
WITH
  (
      country_code VARCHAR (5)
    , country_name VARCHAR (100)
    , year smallint
    , population bigint
  ) AS r
WHERE
  country_name = 'Luxembourg' AND year = 2017

Você pode especificar o esquema no momento da compilação da consulta. Para obter mais exemplos, veja como consultar arquivos CSV.

Consultar arquivos Parquet

A amostra a seguir apresenta as funcionalidades de inferência automática de esquemas para consulta de arquivos Parquet. Ela retorna o número de linhas em setembro de 2017 sem especificar o esquema.

Observação

Você não precisa especificar colunas na cláusula OPENROWSET WITH ao ler arquivos Parquet. Nesse caso, o pool de SQL sem servidor utiliza os metadados do arquivo Parquet e associa as colunas por nome.

SELECT COUNT_BIG(*)
FROM OPENROWSET
  (
      BULK 'parquet/taxi/year=2017/month=9/*.parquet',
      DATA_SOURCE = 'SqlOnDemandDemo',
      FORMAT='PARQUET'
  ) AS nyc

Encontre mais informações, confira Consultar arquivos Parquet usando o pool de SQL sem servidor.

Consultar arquivos JSON

Arquivo de exemplo JSON

Os arquivos são armazenados em um contêiner json, usando livros de pastas, e contêm uma única entrada de livro com a seguinte estrutura:

{  
   "_id":"ahokw88",
   "type":"Book",
   "title":"The AWK Programming Language",
   "year":"1988",
   "publisher":"Addison-Wesley",
   "authors":[  
      "Alfred V. Aho",
      "Brian W. Kernighan",
      "Peter J. Weinberger"
   ],
   "source":"DBLP"
}

Exemplo de consulta

A consulta a seguir mostra como usar JSON_VALUE para recuperar valores escalares (título, editora) de um livro com o título Probabilistic and Statistical Methods in Cryptology, An Introduction:

SELECT
    JSON_VALUE(jsonContent, '$.title') AS title
  , JSON_VALUE(jsonContent, '$.publisher') as publisher
  , jsonContent
FROM OPENROWSET
  (
      BULK 'json/books/*.json',
      DATA_SOURCE = 'SqlOnDemandDemo'
    , FORMAT='CSV'
    , FIELDTERMINATOR ='0x0b'
    , FIELDQUOTE = '0x0b'
    , ROWTERMINATOR = '0x0b'
  )
WITH
  ( jsonContent varchar(8000) ) AS [r]
WHERE
  JSON_VALUE(jsonContent, '$.title') = 'Probabilistic and Statistical Methods in Cryptology, An Introduction'

Importante

Lemos todo o arquivo JSON como uma única linha ou coluna. Portanto FIELDTERMINATOR, FIELDQUOTE e ROWTERMINATOR estão definidos como 0x0b porque não esperamos encontrá-los no arquivo.