Dela via


Lagra frågeresultat till lagring med hjälp av en serverlös SQL-pool i Azure Synapse Analytics

I den här artikeln får du lära dig hur du lagrar frågeresultat till lagring med hjälp av en serverlös SQL-pool.

Förutsättningar

Det första steget är att skapa en databas där du kör frågorna. Initiera sedan objekten genom att köra installationsskriptet på databasen. Det här installationsskriptet skapar datakällor, databasomfattningsautentiseringsuppgifter och externa filformat som används för att läsa data i dessa exempel.

Följ anvisningarna i den här artikeln för att skapa datakällor, databasomfattningsautentiseringsuppgifter och externa filformat som används för att skriva data till utdatalagringen.

Skapa en extern tabell efter val

Du kan använda CETAS-instruktionen (CREATE EXTERNAL TABLE AS SELECT) för att lagra frågeresultatet i lagringen.

Kommentar

Ändra dessa värden i frågan så att de återspeglar din miljö:

  • mydbname – ändra det till namnet på den databas som du skapade
  • storage-account-sas – signaturen för delad åtkomst för ett lagringskonto där du vill skriva dina resultat
  • your-storage-account-name – namnet på ditt lagringskonto där du vill skriva dina resultat (Kontrollera att du har en container med namnet "csv" eller att du ändrar namnet på containern här också)
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;

Kommentar

Du måste ändra det här skriptet och ändra målplatsen för att köra det igen. Det går inte att skapa externa tabeller på den plats där du redan har vissa data.

Använda den externa tabellen

Du kan använda den externa tabell som skapats via CETAS som en vanlig extern tabell.

Kommentar

Ändra den första raden i frågan, d.v.s. [mydbname], så att du använder databasen som du skapade.

USE [mydbname];
GO

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

Kommentarer

När du har lagrat dina resultat kan data i den externa tabellen inte ändras. Du kan inte upprepa det här skriptet eftersom CETAS inte skriver över underliggande data som skapades i föregående körning.

De enda utdatatyper som stöds är för närvarande Parquet och CSV.

Mer information om hur du kör frågor mot olika filtyper finns i artiklarna Query Single CSV-fil, Query Parquet-filer och Query JSON-filer .