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:
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.
Zugehöriger Inhalt
- Abfragen von CSV-Dateien
- Abfragen von Ordnern und mehreren Dateien
- Abfragen bestimmter Dateien
- Abfragen von Parquet-Dateien mithilfe eines serverlosen SQL-Pools
- Abfragen von geschachtelten Typen in Parquet- und JSON-Dateien
- Abfragen von JSON-Dateien mit einem serverlosen SQL-Pool
- Erstellen und Verwenden von Sichten in einem serverlosen SQL-Pool
- Erstellen und Verwenden von nativen, externen Tabellen
- Speichern von Abfrageergebnissen im Speicher