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. Format som stöds visas i OPENROWSET.

Den här snabbstarten visar frågor: 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.
  • Azure Data Studio är ett klientverktyg som gör det möjligt att köra SQL-frågor och notebook-filer mot din på begäran-databas.
  • SQL Server Management Studio är ett klientverktyg som gör det möjligt att köra SQL-frågor mot din på begäran-databas.

Parametrar för den här snabbstarten:

Parameter Beskrivning
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 åtkomst till filer i lagring

Skapa databas

Skapa en egen databas i demosyfte. Du använder 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 databasnamn som du använder för användning senare i snabbstarten.

Använd följande fråga 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 lagringen. Kör följande kodfragment för att skapa datakälla som används i exempel i det här avsnittet:

-- create master key that will protect the credentials:
CREATE MASTER KEY ENCRYPTION BY PASSWORD = <enter very strong password here>

-- create credentials for containers in our demo storage account
CREATE DATABASE SCOPED CREDENTIAL sqlondemand
WITH IDENTITY='SHARED ACCESS SIGNATURE',  
SECRET = 'sv=2018-03-28&ss=bf&srt=sco&sp=rl&st=2019-10-14T12%3A10%3A25Z&se=2061-12-31T12%3A10%3A00Z&sig=KlSU2ullCscyTS0An0nozEpo4tO5JAgGBvw%2FJX2lguw%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 är en förhandsversion av filen som ska frågas:

First 10 rows of the CSV file without header, Windows style new line.

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 fråga efter CSV-fil.

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 -satsen 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 om hur du kör frågor mot parquet-filer.

Efterfråga JSON-filer

JSON-exempelfil

Filer lagras i json-container, mappböcker och innehåller post med en enda bok 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"
}

Efterfråga JSON-filer

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 by Selected articles:

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 by Selected Topics'

Viktigt!

Vi läser hela JSON-filen som enskild rad/kolumn. FieldTERMINATOR, FIELDQUOTE och ROWTERMINATOR är därför inställda på 0x0b eftersom vi inte förväntar oss att hitta den i filen.

Nästa steg

Nu är du redo att fortsätta med följande artiklar: