首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >Azure SQL数据仓库多基地查询Azure Data Lake Gen 2返回零行

Azure SQL数据仓库多基地查询Azure Data Lake Gen 2返回零行
EN

Stack Overflow用户
提问于 2020-04-09 10:35:14
回答 1查看 395关注 0票数 1

为什么Azure SQL数据仓库Polybase查询Azure Data Lake 2会为单个文件源返回多行,而对于父文件夹源则返回零行?

我创造了:

创建主KEY;)

  • Credential (创建数据库作用域凭据)-使用ADLS 2帐户键

  • 外部数据源(创建外部数据源)

  • 文件格式(创建外部文件FORMAT)

  • External表(创建外部表)

)

当我的外部表指向一个特定的文件时,一切都很好。

代码语言:javascript
复制
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
);
代码语言:javascript
复制
SELECT * FROM [ext].[Time];

返回了许多行,因此我确信上面提到的所有项目都配置正确。

2中的Time文件夹包含许多文件,而不仅仅是time001.txt。当我将外部表更改为指向文件夹而不是单个文件时,查询将返回零行,即

代码语言:javascript
复制
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
);
代码语言:javascript
复制
SELECT * FROM [ext].[Time];

零行返回

我试过:

  • LOCATION = '/Time/‘、
  • LOCATION = 'Time’、
  • LOCATION = 'Time/‘、
  • LOCATION =’Time‘、

F 231

但总是零排。我还遵循了https://learn.microsoft.com/en-us/azure/synapse-analytics/sql-data-warehouse/sql-data-warehouse-load-from-azure-data-lake-store的指示

--我测试了文件夹中的所有文件,并分别返回了许多行数据。

I查询了Blob存储中的所有文件,而不是Gen2,“文件夹”查询按预期返回所有行。

如何使用Azure SQL数据仓库和Polybase从Azure数据湖Gen2存储中查询文件夹中的所有文件?

EN

回答 1

Stack Overflow用户

发布于 2021-04-19 20:29:18

我正面临着一个完全相同的问题:问题在于数据源协议。

带有错误的脚本:

代码语言:javascript
复制
   CREATE EXTERNAL DATA SOURCE datasourcename
   WITH (
       TYPE = HADOOP,
       LOCATION = 'abfss://container@storage.blob.core.windows.net',
       CREDENTIAL = credential_name

解决问题的脚本:

代码语言:javascript
复制
   CREATE EXTERNAL DATA SOURCE datasourcename
   WITH (
       TYPE = HADOOP,
       LOCATION = 'abfss://container@storage.dfs.core.windows.net',
       CREDENTIAL = credential_name

唯一需要的改变就是地点。

感谢微软支持团队在这方面的帮助。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/61119205

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档