Partage via


Démarrage rapide : Utiliser un pool SQL serverless

Le pool SQL serverless Synapse est un service de requête serverless qui vous permet d’exécuter des requêtes SQL sur des fichiers placés dans le Stockage Azure. Dans ce guide de démarrage rapide, vous apprenez à interroger différents types de fichiers en utilisant le pool SQL serverless. Pour afficher la liste des formats pris en charge, consultez OPENROWSET.

Ce démarrage rapide montre comment interroger des fichiers CSV, Apache Parquet et JSON.

Prérequis

Choisissez le client SQL avec lequel vous souhaitez émettre les requêtes :

  • Azure Synapse Studio est un outil web que vous pouvez utiliser pour parcourir les fichiers dans le stockage et créer des requêtes SQL.
  • Visual Studio Code avec l'extension mssql est un outil de développement et de données léger et multi-plateforme qui vous permet d'exécuter des requêtes SQL et des notebooks sur votre base de données à la demande.
  • SQL Server Management Studio est un outil client qui vous laisse exécuter des requêtes SQL sur votre base de données à la demande.

Ce démarrage rapide utilise les paramètres suivants :

Paramètre Description
Adresse du point de terminaison de service du pool SQL serverless Utilisée comme nom de serveur
Région du point de terminaison de service du pool SQL serverless Utilisée pour déterminer le stockage à utiliser dans les exemples
Nom d’utilisateur et mot de passe pour l’accès au point de terminaison Utilisés pour accéder au point de terminaison
Base de données utilisée pour créer des vues Base de données utilisée comme point de départ dans les exemples

Première configuration

Avant d’utiliser les exemples :

  • Créer une base de données pour vos vues (au cas où vous souhaiteriez utiliser des vues).
  • Créer les informations d’identification que devra utiliser le pool SQL serverless pour accéder aux fichiers dans le stockage.

Créer une base de données

Créez votre propre base de données à des fins de démonstration. Vous pouvez utiliser cette base de données pour créer vos vues et pour les exemples de requêtes fournis dans cet article.

Remarque

Les bases de données sont utilisées uniquement pour les métadonnées de vue, et non pour les données réelles. Notez le nom de base de données car vous en aurez besoin plus loin dans le guide de démarrage rapide.

Utilisez la commande T-SQL suivante, en remplaçant <mydbname> par le nom de votre choix :

CREATE DATABASE <mydbname>

Créer une source de données

Pour exécuter des requêtes à l’aide du pool SQL serverless, créez une source de données que le pool peut utiliser pour accéder aux fichiers dans le stockage. Exécutez l’extrait de code suivant pour créer la source de données utilisée dans les exemples de cette section. Remplacez <strong-password-here> par un mot de passe fort de votre choix.

-- 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
);

Interroger des fichiers CSV

L’image suivante affiche un aperçu du fichier à interroger :

Capture d’écran affichant les 10 premières lignes du fichier CSV sans en-tête, avec caractères de nouvelle ligne de style Windows.

La requête suivante montre comment lire un fichier CSV qui ne contient pas de ligne d’en-tête et comprend des caractères de nouvelle ligne de style Windows et des colonnes délimitées par des virgules :

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

Vous pouvez spécifier le schéma au moment de la compilation de la requête. Pour plus d’exemples, consultez la procédure indiquant comment Interroger des fichiers CSV.

Interroger des fichiers Parquet

L’exemple suivant montre les fonctionnalités d’inférence automatique du schéma pour l’interrogation des fichiers Parquet. Il retourne le nombre de lignes en septembre 2017 sans spécifier de schéma.

Remarque

Vous n’avez pas besoin de spécifier de colonnes dans la clause OPENROWSET WITH lors de la lecture de fichiers Parquet. Dans ce cas, le pool SQL serverless utilise les métadonnées dans le fichier Parquet et lie les colonnes par nom.

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

Pour trouver plus d’informations, consultez Interroger des fichiers Parquet à l’aide d’un pool SQL serverless.

Interroger des fichiers JSON

Exemple de fichier JSON

Les fichiers sont stockés au sein d’un conteneur json, à l’aide d’un dossier livres et contiennent une entrée de livre unique avec la structure suivante :

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

Exemple de requête

La requête suivante montre comment utiliser JSON_VALUE pour récupérer des valeurs scalaires (titre, éditeur) à partir d’un livre intitulé 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'

Important

Nous lisons l’intégralité du fichier JSON sous la forme d’une seule ligne ou colonne. Ainsi, FIELDTERMINATOR, FIELDQUOTE et ROWTERMINATOR sont définis sur 0x0b parce que nous ne nous attendons pas à le trouver dans le fichier.