Compartir a través de


Inicio rápido: Uso de grupos de SQL sin servidor

El grupo de SQL sin servidor de Synapse es un servicio de consulta sin servidor que permite ejecutar consultas SQL en archivos colocados en Azure Storage. En este inicio rápido, obtendrá información sobre cómo consultar varios tipos de archivos mediante un grupo de SQL sin servidor. Para obtener una lista de los formatos admitidos, consulte OPENROWSET.

En este inicio rápido se muestra cómo consultar archivos CSV, Apache Parquet y JSON.

Requisitos previos

Elija un cliente SQL para emitir consultas:

  • Azure Synapse Studio es una herramienta web que se puede usar para examinar archivos en el almacenamiento y crear consultas SQL.
  • Visual Studio Code con la extensión mssql es una herramienta ligera de datos y desarrollador multiplataforma que permite ejecutar consultas SQL y cuadernos en la base de datos a petición.
  • SQL Server Management Studio es una herramienta de cliente que le permite ejecutar consultas SQL en la base de datos a petición.

En este inicio rápido se usan los parámetros siguientes:

Parámetro Descripción
Dirección del punto de conexión de servicio del grupo de SQL sin servidor Se usa como nombre de servidor.
Región del punto de conexión de servicio del grupo de SQL sin servidor Se usa para determinar qué almacenamiento se utilizará en los ejemplos.
Nombre de usuario y contraseña para el acceso al punto de conexión. Se usa para acceder al punto de conexión.
La base de datos que se utiliza para crear vistas. La base de datos que se utiliza como punto de partida en ejemplos.

Primera configuración

Antes de usar los ejemplos:

  • Cree una base de datos para las vistas (en caso de que quiera usar vistas).
  • Cree las credenciales que va a usar el grupo de SQL sin servidor para acceder a los archivos en el almacenamiento.

Crear base de datos

Cree su propia base de datos para fines de demostración. Puede usar esta base de datos para crear sus vistas y para las consultas de ejemplo de este artículo.

Nota:

Las bases de datos se usan solo para los metadatos de la vista, no para los datos reales. Anote el nombre de la base de datos para usarlo más adelante en el artículo de inicio rápido.

Use el siguiente comando de T-SQL y cambie <mydbname> a un nombre de su elección:

CREATE DATABASE <mydbname>

Creación de un origen de datos

Para ejecutar consultas mediante el grupo de SQL sin servidor, cree un origen de datos que dicho grupo pueda usar para acceder a los archivos del almacenamiento. Ejecute el siguiente fragmento de código para crear el origen de datos que se usa en los ejemplos de esta sección. Reemplace por <strong-password-here> una contraseña segura de su elección.

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

Consulta de archivo CSV

La imagen siguiente es una vista previa del archivo que se va a consultar:

Captura de pantalla que muestra las primeras 10 filas del archivo CSV sin encabezado, nueva línea con estilo de Windows.

La consulta siguiente muestra cómo leer un archivo CSV que no contiene una fila de encabezado, con una nueva línea al estilo de Windows y columnas delimitadas por comas:

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

Puede especificar el esquema en el momento de la compilación de la consulta. Para obtener más ejemplos, consulte el artículo sobre cómo Consultar archivos CSV.

Consulta de archivos de Parquet

En el ejemplo siguiente se muestran las funcionalidades de inferencia automática del esquema para los archivos Parquet. Devuelve el número de filas de septiembre de 2017 sin especificar un esquema.

Nota:

No es necesario especificar columnas en la cláusula OPENROWSET WITH al leer los archivos Parquet. En este caso, el grupo de SQL sin servidor utiliza los metadatos del archivo de Parquet y enlaza las columnas por nombre.

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

Para obtener más información, consulte Consulta de archivos Parquet mediante el grupo de SQL sin servidor.

Consulta de archivo JSON

Archivo de ejemplo de JSON

Los archivos se almacenan en un contenedor json, mediante la carpeta books, y contienen una entrada con un único libro con la siguiente estructura:

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

Consulta de ejemplo

En la consulta siguiente se muestra cómo usar JSON_VALUE para recuperar valores escalares (título, editor) de un libro con el 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

Se lee todo el archivo JSON como una sola fila o columna. Por lo tanto FIELDTERMINATOR, FIELDQUOTE y ROWTERMINATOR se establecen en 0x0b porque no esperamos encontrarlo en el archivo.