与 CTAS 相比,CREATE EXTERNAL TABLE 的优缺点是什么?

What are the pros & cons of CREATE EXTERNAL TABLE compared to CTAS?

我正在尝试构建一个 Azure 数据工厂管道,该管道从 Azure 数据湖中获取数据并进行转换。

我想将转换后的数据存储在 Azure SQL 数据仓库中(作为事实和维度)。

我最终找到了两个解决方案来使数据在仓库中可用:

  1. 使用 CREATE EXTERNAL TABLE 并引用 .csv 文件中 Lake 中的转换数据;
  2. 使用 CTAS.csv 文件从湖中复制到仓库中;

问题

对我来说,权衡取舍并不明显。一方面,在我看来,第一个选项避免了复制到仓库(是吗?)。但是第二个选项会提供更多选项,例如索引。

与 CTAS 相比,CREATE EXTERNAL TABLE 的优缺点是什么?

将数据登陆 DW(使用 CTAS)的主要好处是后续对该数据的查询会明显更快。您将获得跨节点和分布的完整数据分布。过滤或加入 table 的任何查询都会快得多。

正如您指出的那样,缺点是您现在正在存储数据的另一个副本......假设您不会在摄取后从数据湖中删除文件。

将 Create External Table 视为简单地提供外部文件到 SQL 数据结构的映射。