Snabbstart: Använda serverlös SQL-pool
Synapse serverlös SQL-pool är en serverlös frågetjänst som gör att du kan köra SQL-frågor på filer som placeras i Azure Storage. I den här snabbstarten får du lära dig hur du frågar efter olika typer av filer med hjälp av en serverlös SQL-pool. En lista över format som stöds finns i OPENROWSET.
Den här snabbstarten visar hur du frågar CSV-, Apache Parquet- och JSON-filer.
Förutsättningar
Välj en SQL-klient för att utfärda frågor:
- Azure Synapse Studio är ett webbverktyg som du kan använda för att bläddra bland filer i lagring och skapa SQL-frågor.
- Visual Studio Code med mssql-tillägget är ett plattformsoberoende enkelt utvecklar- och dataverktyg som gör att du kan köra SQL-frågor och notebook-filer på din databas på begäran.
- SQL Server Management Studio är ett klientverktyg som gör att du kan köra SQL-frågor på din databas på begäran.
Den här snabbstarten använder följande parametrar:
Parameter | Description |
---|---|
Tjänstslutpunktsadress för serverlös SQL-pool | Används som servernamn |
Tjänstslutpunktsregion för serverlös SQL-pool | Används för att avgöra vilken lagring som ska användas i exempel |
Användarnamn och lösenord för slutpunktsåtkomst | Används för att komma åt slutpunkten |
Databasen som används för att skapa vyer | Databas som används som startpunkt i exempel |
Konfiguration första gången
Innan du använder exemplen:
- Skapa en databas för dina vyer (om du vill använda vyer).
- Skapa autentiseringsuppgifter som ska användas av en serverlös SQL-pool för att få åtkomst till filer i lagringen.
Skapa databas
Skapa en egen databas i demosyfte. Du kan använda den här databasen för att skapa dina vyer och för exempelfrågorna i den här artikeln.
Kommentar
Databaserna används endast för att visa metadata, inte för faktiska data. Skriv ned databasnamnet för användning senare i snabbstarten.
Använd följande T-SQL-kommando och ändra <mydbname>
till ett valfritt namn:
CREATE DATABASE <mydbname>
Skapa datakälla
Om du vill köra frågor med en serverlös SQL-pool skapar du en datakälla som en serverlös SQL-pool kan använda för att komma åt filer i lagring. Kör följande kodfragment för att skapa datakällan som används i exempel i det här avsnittet. Ersätt <strong-password-here>
med ett starkt lösenord.
-- 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
);
Köra frågor mot CSV-filer
Följande bild visar en förhandsgranskning av filen som ska frågas:
Följande fråga visar hur du läser en CSV-fil som inte innehåller en rubrikrad, med ny rad i Windows-format och kommaavgränsade kolumner:
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
Du kan ange schema vid frågekompileringstid. Fler exempel finns i Så här kör du frågor mot CSV-filer.
Efterfråga Parquet-filer
Följande exempel visar funktionerna för automatisk schemainferens för att köra frågor mot Parquet-filer. Det returnerar antalet rader i september 2017 utan att ange schema.
Kommentar
Du behöver inte ange kolumner i OPENROWSET WITH
sats när du läser Parquet-filer. I så fall använder serverlös SQL-pool metadata i Parquet-filen och binder kolumner efter namn.
SELECT COUNT_BIG(*)
FROM OPENROWSET
(
BULK 'parquet/taxi/year=2017/month=9/*.parquet',
DATA_SOURCE = 'SqlOnDemandDemo',
FORMAT='PARQUET'
) AS nyc
Mer information finns i Fråga Parquet-filer med serverlös SQL-pool.
Efterfråga JSON-filer
JSON-exempelfil
Filer lagras i en json-container med hjälp av mappböcker och innehåller en enda bokpost med följande struktur:
{
"_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"
}
Exempelfråga
Följande fråga visar hur du använder JSON_VALUE för att hämta skalärvärden (titel, utgivare) från en bok med titeln 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'
Viktigt!
Vi läser hela JSON-filen som en enskild rad eller kolumn. Så FIELDTERMINATOR
, FIELDQUOTE
och ROWTERMINATOR
är inställda på 0x0b
eftersom vi inte förväntar oss att hitta den i filen.
Relaterat innehåll
- Fråga CSV-filer
- Efterfråga mappar och flera filer
- Fråga efter specifika filer
- Fråga Parquet-filer med serverlös SQL-pool
- Fråga efter kapslade typer i Parquet- och JSON-filer
- Köra frågor mot JSON-filer med hjälp av en serverlös SQL-pool
- Skapa och använda vyer med hjälp av en serverlös SQL-pool
- Skapa och använda interna externa tabeller
- Lagra frågeresultat till lagring