Sdílet prostřednictvím


Ukládání výsledků dotazů do úložiště pomocí bezserverového fondu SQL ve službě Azure Synapse Analytics

V tomto článku se dozvíte, jak ukládat výsledky dotazů do úložiště pomocí bezserverového fondu SQL.

Požadavky

Prvním krokem je vytvoření databáze , ve které budete spouštět dotazy. Potom objekty inicializujete spuštěním instalačního skriptu v této databázi. Tento instalační skript vytvoří zdroje dat, přihlašovací údaje v oboru databáze a formáty externích souborů, které se používají ke čtení dat v těchto ukázkách.

Postupujte podle pokynů v tomto článku a vytvořte zdroje dat, přihlašovací údaje v oboru databáze a formáty externích souborů, které se používají k zápisu dat do výstupního úložiště.

Vytvoření externí tabulky jako výběru

K uložení výsledků dotazu do úložiště můžete použít příkaz CREATE EXTERNAL TABLE AS SELECT (CETAS).

Poznámka:

Změňte tyto hodnoty v dotazu tak, aby odrážely vaše prostředí:

  • mydbname – změňte ho na název databáze, kterou jste vytvořili.
  • storage-account-sas – sdílený přístupový podpis pro účet úložiště, ve kterém chcete zapisovat výsledky
  • název vašeho účtu úložiště – název účtu úložiště, do kterého chcete zapsat výsledky (ujistěte se, že máte kontejner s názvem CSV nebo že tady změníte také název kontejneru).
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;

Poznámka:

Tento skript musíte upravit a změnit cílové umístění, aby se spustilo znovu. Externí tabulky nelze vytvořit v umístění, kde už máte nějaká data.

Použití externí tabulky

Externí tabulku vytvořenou prostřednictvím CETAS můžete použít jako běžnou externí tabulku.

Poznámka:

Změňte první řádek v dotazu, tedy [mydbname], abyste používali databázi, kterou jste vytvořili.

USE [mydbname];
GO

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

Poznámky

Jakmile uložíte výsledky, data v externí tabulce se nedají upravit. Tento skript nemůžete opakovat, protože CETAS nepřepíše podkladová data vytvořená v předchozím spuštění.

Jedinými podporovanými typy výstupu jsou aktuálně Parquet a CSV.

Další informace o dotazování různých typů souborů najdete v článcích o dotazech na jeden soubor CSV, soubory Parquet dotazu a dotazy na soubory JSON.