在Azure Synapse无服务器SQL池中,我有一个CTE链。我想将结果存储在Azure Data Lake Storage中的外部表中。我的查询看起来像这样:
WITH CTE1 AS (
<query logic>
), CTE2 AS (
<query logic>
), CTE3 AS (
<query logic>
)
SELECT * FROM CTE3
我尝试了以下操作:
WITH CTE1 AS (
<query logic>
), CTE2 AS (
<query logic>
), CTE3 AS (
<query logic>
)
CREATE EXTERNAL TABLE [tmp].[Table] WITH (
LOCATION = 'TEMP/',
DATA_SOURCE = [data_lake_external_data_source],
FILE_FORMAT = [parquet_external_file_format]
) AS
SELECT * FROM CTE3
这导致了这个错误:'* 关键字' CREATE'附近的语法不正确。*'
此外,我尝试创建一个空的外部表,并在CTE之后使用SELECT语句将数据插入其中,但看起来您无法将数据插入外部表。
存储CTE输出的正确方法是什么?它可以是临时表、外部表等。
1条答案
按热度按时间swvgeqrz1#
由于CTE(公共表表达式),您面临的错误是一个只在查询期间存在的一次性结果集。我们不能在select下使用create语句。
若要在Azure Synapse Serverless SQL池中从CTE创建外部表,请执行以下代码:
我的执行和输出: