你当前正在访问 Microsoft Azure Global Edition 技术文档网站。 如果需要访问由世纪互联运营的 Microsoft Azure 中国技术文档网站,请访问 https://docs.azure.cn。
在 Azure Synapse Analytics 中使用无服务器 SQL 池将查询结果存储到存储
在本文中,你将了解如何使用无服务器 SQL 池将查询结果存储到存储。
先决条件
第一步是创建将在其中执行查询的数据库。 然后通过对该数据库执行安装脚本来初始化这些对象。 此安装脚本将创建数据源、数据库范围的凭据和用于读取这些示例中数据的外部文件格式。
按照本文中的说明创建数据源、数据库范围的凭据以及用于将数据写入到输出存储的外部文件格式。
Create external table as select
可以使用 CREATE EXTERNAL TABLE AS SELECT (CETAS) 语句将查询结果存储到存储。
注意
更改查询中的第一行(即 [mydbname]),以便使用你创建的数据库。
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;
注意
必须修改此脚本,并更改目标位置以再次执行。 无法在已有某些数据的位置上创建外部表。
使用外部表
可以像使用常规外部表一样,使用通过 CETAS 创建的外部表。
注意
更改查询中的第一行(即 [mydbname]),以便使用你创建的数据库。
USE [mydbname];
GO
SELECT
CountryName, PopulationCount
FROM PopulationCETAS
WHERE
[Year] = 2019
ORDER BY
[PopulationCount] DESC;
备注
存储结果后,不能修改外部表中的数据。 不能重复此脚本,因为 CETAS 不会覆盖在上一次执行中创建的基础数据。 如果你的方案需要下面的某些反馈项,请为那些反馈项投票,或在 Azure 反馈网站上建议新的反馈项:
支持的输出类型只有 Parquet 和 CSV。 可以在 Azure 反馈站点上为其他类型投票。
后续步骤
若要详细了解如何查询不同的文件类型,请参阅以下文章:查询单个 CSV 文件、查询 Parquet 文件和查询 JSON 文件。