Delen via


Snelstartgids: Serverloze SQL-pool gebruiken

Synapse serverloze SQL-pool is een serverloze queryservice waarmee u SQL-query's kunt uitvoeren op bestanden die in Azure Storage zijn geplaatst. In deze quickstart leert u hoe u query's kunt uitvoeren op verschillende typen bestanden met behulp van een serverloze SQL-pool. Zie OPENROWSET voor een lijst met ondersteunde indelingen.

In deze quickstart ziet u hoe u query's kunt uitvoeren op CSV-, Apache Parquet- en JSON-bestanden.

Vereisten

Kies een SQL-client waarmee u query's wilt uitvoeren:

  • Azure Synapse Studio is een webhulpprogramma waarmee u kunt zoeken naar bestanden in opslag en SQL-query's kunt maken.
  • Visual Studio Code met de mssql-extensie is een platformoverschrijdend lichtgewicht hulpprogramma voor ontwikkelaars en gegevens waarmee u SQL-query's en notebooks kunt uitvoeren op uw on-demand database.
  • SQL Server Management Studio is een clienthulpprogramma waarmee u SQL-query's kunt uitvoeren op uw on-demand database.

In deze quickstart worden de volgende parameters gebruikt:

Parameter Description
Eindpuntadres van de service voor serverloze SQL-pools Gebruikt als servernaam
Eindpuntregio van de service voor serverloze SQL-pools Wordt gebruikt om te bepalen welke opslag moet worden gebruikt in voorbeelden
Gebruikersnaam en wachtwoord voor eindpunttoegang Gebruikt voor toegang tot het eindpunt
De database die wordt gebruikt voor het maken van weergaven De database die wordt gebruikt als uitgangspunt in voorbeelden

De eerste installatie

Voordat u de voorbeelden gaat gebruiken, moet u het volgende doen:

  • Maak een database voor uw weergaven (voor het geval u weergaven wilt gebruiken).
  • Maak referenties die moeten worden gebruikt door een serverloze SQL-pool voor toegang tot bestanden in de opslag.

Database maken

Maak uw eigen database voor demonstratiedoeleinden. U kunt deze database gebruiken om uw weergaven en voor de voorbeeldquery's in dit artikel te maken.

Notitie

De databases worden alleen gebruikt voor het weergeven van metagegevens, niet voor de werkelijke gegevens. Noteer de databasenaam voor later gebruik in de quickstart.

Gebruik de volgende T-SQL-opdracht en wijzig <mydbname> deze in een naam van uw keuze:

CREATE DATABASE <mydbname>

Gegevensbron maken

Als u query's wilt uitvoeren met behulp van een serverloze SQL-pool, maakt u een gegevensbron die door een serverloze SQL-pool kan worden gebruikt voor toegang tot bestanden in de opslag. Voer het volgende codefragment uit om de gegevensbron te maken die wordt gebruikt in voorbeelden in deze sectie. Vervang <strong-password-here> door een sterk wachtwoord van uw keuze.

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

Query's uitvoeren op CSV-bestanden

In de volgende afbeelding ziet u een voorbeeld van het bestand waarop een query moet worden uitgevoerd:

Schermopname van de eerste 10 rijen van het CSV-bestand zonder koptekst, nieuwe regel in Windows-stijl.

De volgende query laat zien hoe u een CSV-bestand leest dat geen headerrij bevat, met een nieuwe regel in Windows-stijl en door komma's gescheiden kolommen:

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

U kunt het schema opgeven bij het compileren van de query. Zie voor meer voorbeelden hoe u query's uitvoert op CSV-bestanden.

Query's uitvoeren op Parquet-bestanden

In het volgende voorbeeld ziet u de mogelijkheden voor het automatisch afleiden van schema's voor het uitvoeren van query's op Parquet-bestanden. Hierbij wordt het aantal rijen in september 2017 geretourneerd zonder een schema op te geven.

Notitie

U hoeft geen kolommen in OPENROWSET WITH component op te geven bij het lezen van Parquet-bestanden. In dit geval maakt de serverloze SQL-pool gebruik van metagegevens in het Parquet-bestand, en worden kolommen gekoppeld op naam.

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

Zie Parquet-bestanden opvragen met behulp van een serverloze SQL-pool voor meer informatie.

Query's uitvoeren op JSON-bestanden

JSON-voorbeeldbestand

Bestanden worden opgeslagen in een json-container, met behulp van mapboeken en bevatten één boekvermelding met de volgende structuur:

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

Voorbeeldquery

De volgende query laat zien hoe u JSON_VALUE kunt gebruiken om scalaire waarden (titel, uitgever) op te halen uit een boek met de titel Probabilistic and Statistical Methods in Cryptologie, 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'

Belangrijk

We hebben het hele JSON-bestand gelezen als één rij of kolom. Dus FIELDTERMINATOR, FIELDQUOTEen ROWTERMINATOR zijn ingesteld op 0x0b omdat we niet verwachten dat het in het bestand wordt gevonden.