Avvio rapido: utilizzare un pool SQL serverless

Il pool SQL serverless di Synapse è un servizio di query serverless che consente di eseguire le query SQL sui file presenti in Archiviazione di Azure. Questo argomento di avvio rapido illustra come eseguire query su diversi tipi di file tramite il pool SQL serverless. In OPENROWSET sono elencati i formati supportati.

Questa guida introduttiva illustra l'esecuzione di query: file CSV, Apache Parquet e JSON.

Prerequisiti

Scegliere un client SQL per l'esecuzione delle query:

  • Azure Synapse Studio è uno strumento Web che può essere usato per esplorare i file nell'archiviazione e creare query SQL.
  • Azure Data Studio è uno strumento client che consente di eseguire query SQL e notebook sul database su richiesta.
  • SQL Server Management Studio è uno strumento client che consente di eseguire query SQL sul database su richiesta.

Parametri per questo argomento di avvio rapido:

Parametro Descrizione
indirizzo dell'endpoint di servizio del pool SQL serverless Usato come nome del server
area dell'endpoint di servizio del pool SQL serverless Usata per determinare quale archiviazione si userà negli esempi
Nome utente e password per l'accesso all'endpoint Usati per accedere all'endpoint
Database usato per creare le viste Database usato come punto di partenza negli esempi

Prima configurazione

Prima di usare gli esempi:

  • Creare un database per le viste (se si vogliono usare le viste)
  • Creare le credenziali che devono essere usate dal pool SQL serverless per accedere ai file nell'archiviazione

Creazione del database

Creare un database personalizzato a scopo dimostrativo. Questo database verrà usato per creare le viste e per le query di esempio in questo articolo.

Nota

I database vengono usati solo per visualizzare i metadati, non i dati effettivi. Prendere nota del nome del database per usarlo successivamente nella guida di avvio rapido.

Usare la query seguente, sostituendo mydbname con un nome a scelta:

CREATE DATABASE mydbname

Creare un'origine dati

Per eseguire query usando il pool SQL serverless, creare l'origine dati che il pool SQL serverless può usare per accedere ai file nell'archiviazione. Eseguire il frammento di codice seguente per creare l’origine dati usata negli esempi di questa sezione:

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

-- create credentials for containers in our demo storage account
CREATE DATABASE SCOPED CREDENTIAL sqlondemand
WITH IDENTITY='SHARED ACCESS SIGNATURE',  
SECRET = 'sv=2018-03-28&ss=bf&srt=sco&sp=rl&st=2019-10-14T12%3A10%3A25Z&se=2061-12-31T12%3A10%3A00Z&sig=KlSU2ullCscyTS0An0nozEpo4tO5JAgGBvw%2FJX2lguw%3D'
GO
CREATE EXTERNAL DATA SOURCE SqlOnDemandDemo WITH (
    LOCATION = 'https://sqlondemandstorage.blob.core.windows.net',
    CREDENTIAL = sqlondemand
);

Eseguire query su file CSV

L'immagine seguente è un'anteprima del file su cui eseguire le query:

First 10 rows of the CSV file without header, Windows style new line.

La query seguente mostra come leggere un file CSV che non contiene una riga di intestazione, con il carattere di nuova riga in stile Windows e colonne delimitate da virgole:

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

È possibile specificare lo schema in fase di compilazione della query. Per altri esempi, vedere Eseguire query su file CSV.

Eseguire query su file Parquet

L'esempio seguente mostra le funzionalità di inferenza di schema automatica per l'esecuzione di query sui file Parquet. Restituisce il numero di righe per settembre 2017 senza specificare lo schema.

Nota

Non è necessario specificare le colonne nella clausola OPENROWSET WITH durante la lettura dei file Parquet. In questo caso, il pool SQL serverless usa i metadati del file Parquet e associa le colonne in base al nome.

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

Vedere altre informazioni sull'esecuzione di query su file Parquet.

Eseguire query su file JSON

File di esempio JSON

I file sono archiviati nella cartella books del contenitore json e contengono voci di singoli libri con la struttura seguente:

{  
   "_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"
}

Eseguire query su file JSON

La query seguente mostra come usare JSON_VALUE per recuperare valori scalari (titolo, editore) da un libro intitolato Probabilistic and Statistical Methods in Cryptology, An Introduction by Selected articles:

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 by Selected Topics'

Importante

L'intero file JSON viene letto come singola riga/colonna, quindi FIELDTERMINATOR, FIELDQUOTE e ROWTERMINATOR sono impostati su 0x0b perché non è previsto trovarli nel file.

Passaggi successivi

A questo punto è possibile continuare con gli articoli seguenti: