Udostępnij za pomocą


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 instalacyjny 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 używane do zapisywania danych w magazynie wyjściowym.

Utwórz tabelę zewnętrzną jako wybór

Możesz użyć instrukcji CREATE EXTERNAL TABLE AS SELECT (CETAS), aby zapisać wyniki zapytania w magazynie danych.

Uwaga

Zmień te wartości w zapytaniu, aby odzwierciedlić środowisko:

  • mydbname — zmień ją na nazwę utworzonej bazy danych
  • storage-account-sas - sygnatura dostępu współdzielonego dla konta magazynu, gdzie chcesz zapisać swoje wyniki
  • your-storage-account-name — nazwa konta magazynu, na którym chcesz zapisać wyniki (upewnij się, że masz kontener o nazwie "csv" lub zmienisz nazwę kontenera w tym miejscu)
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;

Uwaga

Należy zmodyfikować ten skrypt i zmienić lokalizację docelową, aby wykonać go ponownie. Tabele zewnętrzne nie mogą być tworzone w lokalizacji, w której masz już pewne dane.

Użyj tabeli zewnętrznej

Możesz użyć tabeli zewnętrznej utworzonej przez CETAS jak zwykłej tabeli zewnętrznej.

Uwaga

Zmień pierwszy wiersz zapytania, czyli [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ż CETAS nie nadpisze bazowych danych utworzonych w poprzednim wykonaniu skryptu.

Jedynymi obsługiwanymi typami danych wyjściowych są obecnie Parquet i CSV.

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