Polybase:将数据从外部表加载到特定日期/时间范围的根 blob 文件夹

Posted

技术标签:

【中文标题】Polybase:将数据从外部表加载到特定日期/时间范围的根 blob 文件夹【英文标题】:Polybase: Loading data from external table to root blob folder for specific date/time range 【发布时间】:2018-06-28 20:47:29 【问题描述】:

我在 blob 存储帐户中有数据,该帐户按以下结构组织:

/logs/YYYY/mm/dd/HH

假设有几年的数据,我想将特定时间段(或多个时间段)中的数据提取到 Azure 数据仓库表中。

就 Polybase 检索数据的方式而言,以下各项有何不同:

1) 创建表作为从指向根文件夹 (/logs) 的外部表中选择的表,其中包含考虑特定时间值的一系列值(例如 x 和 y 之间的时间戳)的 where 子句。

2) 来自外部表 UNION 的 CTAS,指向构成我想要的特定时间段的各个文件夹。

我假设上面的 2) 会更快,因为 Polybase 不必查看任何不需要的文件夹?它是否正确?

如果是这样,有没有办法从指向根文件夹的外部表中进行选择,但以某种方式只选择特定时间段的文件?

也许有一些文档可以解释这一点?

【问题讨论】:

【参考方案1】:

是的,你是对的。

1 将所有数据引入,然后在 SQL DW 中应用 where 子句。

2 会更快,因为它只会从单个文件夹中获取数据。

目前,PolyBase 外部表不支持文件夹/文件/分区,因此无法根据过滤子句跳过。

【讨论】:

以上是关于Polybase:将数据从外部表加载到特定日期/时间范围的根 blob 文件夹的主要内容,如果未能解决你的问题,请参考以下文章

带有日期分区的 HdInsight Azure DW Polybase 到 Hive 表 (ORC) 失败

将 ADLS Gen 2 中的数据加载到 Azure Synapse

Polybase - 将数据类型 VARCHAR 转换为 DATETIME 时出错

来自外部表的 Polybase 查询不支持拒绝选项

Azure Synapse Polybase/外部表 - 仅返回最新文件

Polybase 外部表与 OPENROWSET 无服务器 sql 池架构