在 Azure Synapse Analytics 中使用無伺服器 SQL 集區將查詢結果儲存至儲存體
在本文中,您將了解如何使用無伺服器 SQL 集區將查詢結果儲存至儲存體。
必要條件
您的第一個步驟是建立資料庫,您將在其中執行查詢。 然後在該資料庫上執行安裝指令碼,將物件初始化。 此安裝指令碼會建立資料來源、資料庫範圍認證,以及用來讀取這些範例中資料的外部檔案格式。
依照本文中的指示,建立資料來源、資料庫範圍認證,以及用來將資料寫入輸出儲存體的外部檔案格式。
Create external table as select
您可以使用 CREATE EXTERNAL TABLE AS SELECT (CETAS) 陳述式將查詢結果儲存至儲存體。
注意
變更查詢中的這些值以反映您的環境:
- mydbname - 將它變更為您建立的資料庫名稱
- storage-account-sas - 您想要在其中寫入結果的記憶體帳戶共用存取簽章
- your-storage-account-name - 您要在其中寫入結果的記憶體帳戶名稱(請確定您有名為 'csv' 的容器,或您在這裡變更容器的名稱)
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;
注意
您必須修改此指令碼並變更目標位置,以便再次執行。 您無法在您已經擁有某些資料的位置上建立外部資料表。
使用外部資料表
您可以像一般外部資料表一樣地使用透過 CETAS 所建立的外部資料表。
注意
變更查詢中的第一行,也就是 [mydbname],因此您使用您所建立的資料庫。
USE [mydbname];
GO
SELECT
CountryName, PopulationCount
FROM PopulationCETAS
WHERE
[Year] = 2019
ORDER BY
[PopulationCount] DESC;
備註
儲存結果之後,就無法修改外部數據表中的數據。 您無法重複此文稿,因為 CETAS 不會覆寫在先前執行中建立的基礎數據。
目前唯一支持的輸出類型是 Parquet 和 CSV。
相關內容
如需有關如何查詢不同檔案類型的詳細資訊,請參閱查詢單一 CSV 檔案、查詢 Parquet 檔案及查詢 JSON 檔案文章。