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:
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.
Contenido relacionado
- Consulta de archivos CSV
- Consulta de carpetas y varios archivos
- Consulta de archivos específicos
- Consulta de archivos de Parquet mediante un grupo de SQL sin servidor
- Consulta de tipos anidados en archivos Parquet y JSON
- Consulta de archivos JSON mediante un grupo de SQL sin servidor
- Creación y uso de vistas en un grupo de SQL sin servidor
- Creación y uso de tablas externas nativas
- Almacenamiento de los resultados de las consultas en Storage