为什么对 Azure Data Lake Gen 2 的 Azure SQL 数据仓库 Polybase 查询会为单个文件源返回多行,但为父文件夹源返回零行?
我建立:
- 万能钥匙(CREATE MASTER KEY;)
- 凭据 (CREATE DATABASE SCOPED CREDENTIAL) - 使用 ADLS Gen 2 帐户密钥
- 外部数据源(CREATE EXTERNAL DATA SOURCE)
- 文件格式(创建外部文件格式)
- 外部表(创建外部表)
当我的外部表指向特定文件时,一切正常,即
CREATE EXTERNAL TABLE [ext].[Time]
(
[TimeID] int NOT NULL,
[HourNumber] tinyint NOT NULL,
[MinuteNumber] tinyint NOT NULL,
[SecondNumber] tinyint NOT NULL,
[TimeInSecond] int NOT NULL,
[HourlyBucket] varchar(15) COLLATE SQL_Latin1_General_CP1_CI_AS NOT NULL
)
WITH
(
LOCATION = '/Time/time001.txt',
DATA_SOURCE = ADLSDataSource,
FILE_FORMAT = uncompressedcsv,
REJECT_TYPE = value,
REJECT_VALUE = 2147483647
);
SELECT * FROM [ext].[Time];
返回了很多行,因此我相信上面提到的所有项目都配置正确。
Azure Data Lake Gen 2 中的 Time 文件夹包含许多文件,而不仅仅是 time001.txt。当我将外部表更改为指向文件夹而不是单个文件时,查询返回零行,即
CREATE EXTERNAL TABLE [ext].[Time]
(
[TimeID] int NOT NULL,
[HourNumber] tinyint NOT NULL,
[MinuteNumber] tinyint NOT NULL,
[SecondNumber] tinyint NOT NULL,
[TimeInSecond] int NOT NULL,
[HourlyBucket] varchar(15) COLLATE SQL_Latin1_General_CP1_CI_AS NOT NULL
)
WITH
(
LOCATION = '/Time/',
DATA_SOURCE = ADLSDataSource,
FILE_FORMAT = uncompressedcsv,
REJECT_TYPE = value,
REJECT_VALUE = 2147483647
);
SELECT * FROM [ext].[Time];
返回零行
我试过了:
- LOCATION = '/时间/',
- 位置 = '/时间',
- 位置='时间/',
- 位置='时间',
我测试了文件夹中的所有文件,并分别返回多行数据。
我从 Blob 存储而不是 ADLS Gen2 中查询了所有文件,并且“文件夹”查询按预期返回所有行。
如何使用 Azure SQL 数据仓库和 Polybase 从 Azure Data Lake Gen2 存储中“作为一个”查询文件夹中的所有文件?