排查 Azure Synapse 无服务器 SQL 池上的 CREATE EXTERNAL TABLE AS SELECT (CETAS) 问题

适用对象:Azure Synapse Analytics

Azure Synapse 无服务器 SQL 池中的 CREATE EXTERNAL TABLE AS SELECT(也称为 CETAS)语句用于创建外部表并将查询结果导出到 Azure 存储 Blob 或 Azure Data Lake Storage Gen2。 本指南可帮助你实现有关使用 CETAS 导出数据的常见问题的最佳做法和解决方法。

常见问题解答

问题 建议
是否可以将结果导出到单个文件? 不正确。 由于无服务器 SQL 查询引擎的高度并行和可缩放性,无服务器 SQL 在使用 CETAS 将查询结果保存到存储时无法控制文件数。

解决方法:
或者,可以使用 Spark 笔记本将数据导出到存储。 请参阅 在存储帐户 中创建 CSV 和 Parquet 文件,了解如何将数据导出到单个 CSV 文件和 Parquet 文件。
是否可在第一次导出后修改导出的数据? 不正确。 存储结果后,无法修改外部表中的数据。 CETAS 不会覆盖在第一次执行中创建的基础数据。

解决方法:
替代方法是,可新建一个写入其他文件夹的外部表。
支持哪些导出文件格式? 目前仅支持 PARQUET 和 DELIMITEDTEXT。
不支持 DELIMITEDTEXT 格式的 Gzip 压缩。

有关更多详细信息,请参阅 无服务器 SQL 池中的 CETAS
为何无法连接到存储? - 请确保已为源存储帐户和目标存储帐户创建适当的凭据,这些凭据在控制无服务器 SQL 池的存储访问中指定。

- 请确保对源和目标存储帐户具有适当的 权限
如何使 CETAS 语句更具性能? - 确保目标存储帐户位于无服务器 SQL 池终结点所在的同一区域。 在Azure 门户中,可以在存储帐户或工作区的“概述”窗格中找到存储帐户和工作区区域

- 确保使用 CETAS 支持的数据类型