Przechowywanie wyników zapytań w magazynie przy użyciu bezserwerowej puli SQL w usłudze Azure Synapse Analytics

W tym artykule dowiesz się, jak przechowywać wyniki zapytań w magazynie przy użyciu bezserwerowej puli SQL.

Wymagania wstępne

Pierwszym krokiem jest utworzenie bazy danych , w której będą wykonywane zapytania. Następnie zainicjuj obiekty, wykonując skrypt instalacji w tej bazie danych. Ten skrypt instalacyjny utworzy źródła danych, poświadczenia o zakresie bazy danych i zewnętrzne formaty plików, które są używane do odczytywania danych w tych przykładach.

Postępuj zgodnie z instrukcjami w tym artykule, aby utworzyć źródła danych, poświadczenia o zakresie bazy danych i zewnętrzne formaty plików, które są używane do zapisywania danych w magazynie wyjściowym.

Utwórz tabelę zewnętrzną podczas wybierania

Aby zapisać wyniki zapytania w magazynie, można użyć instrukcji CREATE EXTERNAL TABLE AS SELECT (CETAS).

Uwaga

Zmień pierwszy wiersz zapytania, tj. [mydbname], więc używasz utworzonej bazy danych.

USE [mydbname];
GO

CREATE DATABASE SCOPED CREDENTIAL [SasTokenWrite]
WITH IDENTITY = 'SHARED ACCESS SIGNATURE',
     SECRET = 'sv=2018-03-28&ss=bfqt&srt=sco&sp=rwdlacup&se=2019-04-18T20:42:12Z&st=2019-04-18T12:42:12Z&spr=https&sig=lQHczNvrk1KoYLCpFdSsMANd0ef9BrIPBNJ3VYEIq78%3D';
GO

CREATE EXTERNAL DATA SOURCE [MyDataSource] WITH (
    LOCATION = 'https://<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;

Uwaga

Należy zmodyfikować ten skrypt i zmienić lokalizację docelową, aby wykonać go ponownie. Nie można utworzyć tabel zewnętrznych w lokalizacji, w której masz już pewne dane.

Korzystanie z tabeli zewnętrznej

Możesz użyć tabeli zewnętrznej utworzonej za pośrednictwem instrukcji CETAS, takich jak zwykła tabela zewnętrzna.

Uwaga

Zmień pierwszy wiersz zapytania, tj. [mydbname], więc używasz utworzonej bazy danych.

USE [mydbname];
GO

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

Uwagi

Po przechowywaniu wyników nie można modyfikować danych w tabeli zewnętrznej. Nie można powtórzyć tego skryptu, ponieważ instrukcje CETAS nie zastąpią danych bazowych utworzonych w poprzednim wykonaniu. Zagłosuj na następujące elementy opinii, jeśli niektóre z nich są wymagane w Twoich scenariuszach lub zaproponuj nowe elementy w witrynie opinii na platformie Azure:

Jedynymi obsługiwanymi typami danych wyjściowych są Parquet i CSV. Możesz głosować na inne typy w witrynie opinii platformy Azure.

Następne kroki

Aby uzyskać więcej informacji na temat wykonywania zapytań dotyczących różnych typów plików, zobacz artykuły Query single CSV file (Wykonywanie zapytań względem pojedynczych plików CSV), Query Parquet files (Wykonywanie zapytań w plikach Parquet) i Query JSON files (Wykonywanie zapytań w plikach JSON ).