Freigeben über


Speichern von Abfrageergebnissen im Speicher mithilfe eines serverlosen SQL-Pools in Azure Synapse Analytics

In diesem Artikel erfahren Sie, wie Abfrageergebnisse mithilfe eines serverlosen SQL-Pools im Speicher gespeichert werden.

Voraussetzungen

Im ersten Schritt erstellen Sie eine Datenbank, in der Sie die Abfragen ausführen. Initialisieren Sie dann die Objekte, indem Sie das Setupskript für diese Datenbank ausführen. Mit diesem Setupskript werden die Datenquellen, die für die gesamte Datenbank gültigen Anmeldeinformationen und externe Dateiformate erstellt, die in diesen Beispielen zum Lesen von Daten verwendet werden.

Befolgen Sie die Anweisungen in diesem Artikel, um Datenquellen, datenbankgestützte Anmeldeinformationen und externe Dateiformate zu erstellen, die zum Schreiben von Daten in den Ausgabespeicher verwendet werden.

CREATE EXTERNAL TABLE AS SELECT

Sie können mithilfe der CETAS-Anweisung (CREATE EXTERNAL TABLE AS SELECT) die Abfrageergebnisse im Speicher speichern.

Hinweis

Ändern Sie diese Werte in der Abfrage so, dass sie Ihre Umgebung widerspiegeln:

  • „mydbname“ – Ersetzen Sie diesen Wert durch den Namen der von Ihnen erstellten Datenbank.
  • „storage-account-sas“ – Geben Sie hier die SAS (Shared Access Signature) für ein Speicherkonto an, in das Sie die Ergebnisse schreiben möchten.
  • „your-storage-account-name“ – Dies ist der Name Ihres Speicherkontos, in das Sie Ihre Ergebnisse schreiben möchten (stellen Sie sicher, dass Sie über einen Container namens „csv“ verfügen oder den Namen des Containers hier ebenfalls ändern).
USE [mydbname];
GO

CREATE DATABASE SCOPED CREDENTIAL [SasTokenWrite]
WITH IDENTITY = 'SHARED ACCESS SIGNATURE',
     SECRET = 'storage-account-sas';
GO

CREATE EXTERNAL DATA SOURCE [MyDataSource] WITH (
    LOCATION = 'https://your-storage-account-name.blob.core.windows.net/csv', CREDENTIAL = [SasTokenWrite]
);
GO

CREATE EXTERNAL FILE FORMAT [ParquetFF] WITH (
    FORMAT_TYPE = PARQUET,
    DATA_COMPRESSION = 'org.apache.hadoop.io.compress.SnappyCodec'
);
GO

CREATE EXTERNAL TABLE [dbo].[PopulationCETAS] WITH (
        LOCATION = 'populationParquet/',
        DATA_SOURCE = [MyDataSource],
        FILE_FORMAT = [ParquetFF]
) AS
SELECT
    *
FROM
    OPENROWSET(
        BULK 'csv/population-unix/population.csv',
        DATA_SOURCE = 'sqlondemanddemo',
        FORMAT = 'CSV', PARSER_VERSION = '2.0'
    ) WITH (
        CountryCode varchar(4),
        CountryName varchar(64),
        Year int,
        PopulationCount int
    ) AS r;

Hinweis

Für die erneute Ausführung müssen Sie dieses Skript modifizieren und den Zielspeicherort ändern. Externe Tabellen können nicht an dem Speicherort erstellt werden, an dem bei Ihnen bereits Daten vorhanden sind.

Verwenden der externen Tabelle

Sie können die mithilfe von CETAS erstellte externe Tabelle wie eine reguläre externe Tabelle verwendet werden.

Hinweis

Ändern Sie die erste Zeile in der Abfrage (d. h. [mydbname]), sodass die von Ihnen erstellte Datenbank verwendet wird.

USE [mydbname];
GO

SELECT
    CountryName, PopulationCount
FROM PopulationCETAS
WHERE
    [Year] = 2019
ORDER BY
    [PopulationCount] DESC;

Hinweise

Nachdem Sie Ihre Ergebnisse gespeichert haben, können die Daten in der externen Tabelle nicht mehr geändert werden. Eine Wiederholung ist für dieses Skript nicht möglich, da von CETAS die zugrunde liegenden Daten, die bei der vorherigen Ausführung erstellt wurden, nicht überschrieben werden.

Derzeit werden ausschließlich die Ausgabetypen „Parquet“ und „CSV“ unterstützt.

Weitere Informationen zum Abfragen verschiedener Dateitypen finden Sie in den Artikeln zum Abfragen einer einzelnen CSV-Datei, Abfragen von Parquet-Dateien und Abfragen von JSON-Dateien.