Teilen über


Schnellstart: Verwenden eines serverlosen SQL-Pools

Der serverlose SQL-Pool von Synapse ist ein serverloser Abfragedienst, mit dem Sie SQL-Abfragen für Dateien in Azure Storage ausführen können. In diesem Schnellstart erfahren Sie, wie Sie mithilfe eines serverlosen SQL-Pools verschiedene Dateitypen abfragen. Eine Liste der unterstützten Formate finden Sie unter OPENROWSET.

In diesem Schnellstart wird gezeigt, wie Sie CSV-, Apache Parquet- und JSON-Dateien abfragen.

Voraussetzungen

Wählen Sie einen SQL-Client aus, der zum Ausgeben von Abfragen verwendet werden soll:

  • Azure Synapse Studio ist ein Webtool, mit dem Sie Dateien im Speicher durchsuchen und SQL-Abfragen erstellen können.
  • Visual Studio Code mit der mssql-Erweiterung ist ein plattformübergreifendes, schlankes Entwickler- und Datentool, mit dem Sie SQL-Abfragen und -Notizbücher in Ihrer On-Demand-Datenbank ausführen können.
  • SQL Server Management Studio ist ein Clienttool, mit dem Sie SQL-Abfragen für Ihre On-Demand-Datenbank ausführen können.

In diesem Schnellstart werden die folgenden Parameter verwendet:

Parameter BESCHREIBUNG
Adresse des Dienstendpunkts des serverlosen SQL-Pools Wird als Servername verwendet.
Region des Dienstendpunkts des serverlosen SQL-Pools Wird verwendet, um zu bestimmen, welcher Speicher in Beispielen genutzt wird
Benutzername und Kennwort für den Endpunktzugriff Wird für den Zugriff auf den Endpunkt verwendet.
Datenbank für die Erstellung von Sichten Die Datenbank wird in Beispielen als Ausgangspunkt verwendet.

Erstmalige Einrichtung

Vor der Verwendung der Beispiele:

  • Erstellen Sie eine Datenbank für Ihre Sichten (sofern Sie Sichten verwenden möchten).
  • Erstellen Sie Anmeldeinformationen, die vom serverlosen SQL-Pool für den Zugriff auf Dateien im Speicher verwendet werden.

Erstellen einer Datenbank

Erstellen Sie zu Demonstrationszwecken eine eigene Datenbank. Sie können diese Datenbank zum Erstellen der Ansichten sowie für die Beispielabfragen in diesem Artikel verwenden.

Hinweis

Die Datenbanken werden nicht für tatsächliche Daten, sondern nur für Sichtmetadaten verwendet. Notieren Sie sich den Datenbanknamen. Er wird im weiteren Verlauf des Schnellstarts verwendet.

Verwenden Sie den folgenden T-SQL-Befehl, und ändern Sie <mydbname> in einen Namen Ihrer Wahl:

CREATE DATABASE <mydbname>

Erstellen der Datenquelle

Wenn Sie Abfragen mithilfe eines serverlosen SQL-Pools ausführen möchten, erstellen Sie eine Datenquelle, über die der serverlose SQL-Pool auf Dateien im Speicher zugreifen kann. Führen Sie das folgende Codeschnipsel aus, um die in den Beispielen in diesem Abschnitt verwendete Datenquelle zu erstellen. Ersetzen Sie <strong-password-here> durch ein sicheres Kennwort Ihrer Wahl.

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

Abfragen von CSV-Dateien

Die folgende Abbildung zeigt eine Vorschau der abzufragenden Datei:

Screenshot: Die ersten zehn Zeilen der CSV-Datei, ohne Kopfzeile, neue Zeile im Windows-Stil.

Die folgende Abfrage zeigt, wie eine CSV-Datei ohne Kopfzeile gelesen wird, die Neue-Zeile-Zeichen im Windows-Stil und kommagetrennte Spalten enthält:

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

Das Schema kann zum Zeitpunkt der Abfragekompilierung angegeben werden. Weitere Beispiele finden Sie unter Abfragen von CSV-Dateien.

Abfragen von Parquet-Dateien

Im folgenden Beispiel werden die Funktionen des automatischen Schemarückschlusses beim Abfragen von Parquet-Dateien gezeigt. Hierzu wird die Anzahl von Zeilen im September 2017 ohne Angabe eines Schemas zurückgegeben.

Hinweis

Beim Lesen von Parquet-Dateien müssen keine Spalten in der OPENROWSET WITH-Klausel angegeben werden. In diesem Fall verwendet der serverlose SQL-Pool Metadaten in der Parquet-Datei und bindet Spalten anhand des Namens.

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

Weitere Informationen finden Sie unter Abfragen von Parquet-Dateien mithilfe eines serverlosen SQL-Pools.

Abfragen von JSON-Dateien

JSON-Beispieldatei

Die Dateien sind in einem JSON-Container mit dem Ordner books gespeichert und enthalten einen einzelnen Bucheintrag mit folgender 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"
}

Beispielabfrage

Die folgende Abfrage zeigt, wie Sie mithilfe von JSON_VALUE skalare Werte (Titel, Verleger) aus einem Buch mit dem Titel Probabilistic and Statistical Methods in Cryptology, An Introduction abrufen:

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'

Wichtig

Die gesamte JSON-Datei wird als einzelne Zeile oder Spalte gelesen. FIELDTERMINATOR, FIELDQUOTE und ROWTERMINATOR sind auf 0x0b festgelegt, da nicht erwartet wird, dies in der Datei zu finden.