Azure Synapse 无服务器 CETAS 错误 "External table location is not valid"
Azure Synapse Serverless CETAS error "External table location is not valid"
我正在使用 Synapse Serverless Pool 并在尝试使用 CETAS 时遇到以下错误
消息 15860,级别 16,状态 5,第 3 行
外部 table 位置路径无效。提供的位置:'https://accountName.blob.core.windows.net/ontainerName/test/'
我的工作区托管标识应该在存储帐户上具有所有正确的 ACL 和 RBAC 角色。我可以查询那里的文件,但无法执行 CETAS 命令。
CREATE DATABASE SCOPED CREDENTIAL WorkspaceIdentity WITH IDENTITY = 'Managed Identity'
GO
CREATE EXTERNAL DATA SOURCE MyASDL
WITH ( LOCATION = 'https://accountName.blob.core.windows.net/containerName'
,CREDENTIAL = WorkspaceIdentity)
GO
CREATE EXTERNAL FILE FORMAT CustomCSV
WITH (
FORMAT_TYPE = DELIMITEDTEXT,
FORMAT_OPTIONS (ENCODING = 'UTF8')
);
GO
CREATE EXTERNAL TABLE Test.dbo.TestTable
WITH (
LOCATION = 'test/',
DATA_SOURCE = MyASDL,
FILE_FORMAT = CustomCSV
) AS
WITH source AS
(
SELECT
jsonContent
, JSON_VALUE (jsonContent, '$.zipCode') AS ZipCode
FROM
OPENROWSET(
BULK '/customer-001-100MB.json',
FORMAT = 'CSV',
FIELDQUOTE = '0x00',
FIELDTERMINATOR ='0x0b',
ROWTERMINATOR = '\n',
DATA_SOURCE = 'MyASDL'
)
WITH (
jsonContent varchar(1000) COLLATE Latin1_General_100_BIN2_UTF8
) AS [result]
)
SELECT ZipCode, COUNT(*) as Count
FROM source
GROUP BY ZipCode
;
如果我已经尝试了 CETAS 命令的 LOCATION
参数中的所有内容,但似乎没有任何效果。文件夹路径、文件路径、带和不带前导/尾随 /
等
CTE select 声明在没有 CETAS 的情况下有效。
我不能使用相同的数据源进行读取和写入吗?还是其他原因?
问题出在我的数据源定义上。
当我根据以下 link TSQL CREATE EXTERNAL DATA SOURCE
将其更改为 wasbs:\
时,我使用 https:\
的地方
其中描述您必须使用 wasbs
、abfs
或 adl
,具体取决于您的数据源类型是 V2 存储帐户、V2 数据湖还是 V1 数据湖
我正在使用 Synapse Serverless Pool 并在尝试使用 CETAS 时遇到以下错误
消息 15860,级别 16,状态 5,第 3 行
外部 table 位置路径无效。提供的位置:'https://accountName.blob.core.windows.net/ontainerName/test/'
我的工作区托管标识应该在存储帐户上具有所有正确的 ACL 和 RBAC 角色。我可以查询那里的文件,但无法执行 CETAS 命令。
CREATE DATABASE SCOPED CREDENTIAL WorkspaceIdentity WITH IDENTITY = 'Managed Identity'
GO
CREATE EXTERNAL DATA SOURCE MyASDL
WITH ( LOCATION = 'https://accountName.blob.core.windows.net/containerName'
,CREDENTIAL = WorkspaceIdentity)
GO
CREATE EXTERNAL FILE FORMAT CustomCSV
WITH (
FORMAT_TYPE = DELIMITEDTEXT,
FORMAT_OPTIONS (ENCODING = 'UTF8')
);
GO
CREATE EXTERNAL TABLE Test.dbo.TestTable
WITH (
LOCATION = 'test/',
DATA_SOURCE = MyASDL,
FILE_FORMAT = CustomCSV
) AS
WITH source AS
(
SELECT
jsonContent
, JSON_VALUE (jsonContent, '$.zipCode') AS ZipCode
FROM
OPENROWSET(
BULK '/customer-001-100MB.json',
FORMAT = 'CSV',
FIELDQUOTE = '0x00',
FIELDTERMINATOR ='0x0b',
ROWTERMINATOR = '\n',
DATA_SOURCE = 'MyASDL'
)
WITH (
jsonContent varchar(1000) COLLATE Latin1_General_100_BIN2_UTF8
) AS [result]
)
SELECT ZipCode, COUNT(*) as Count
FROM source
GROUP BY ZipCode
;
如果我已经尝试了 CETAS 命令的 LOCATION
参数中的所有内容,但似乎没有任何效果。文件夹路径、文件路径、带和不带前导/尾随 /
等
CTE select 声明在没有 CETAS 的情况下有效。
我不能使用相同的数据源进行读取和写入吗?还是其他原因?
问题出在我的数据源定义上。
当我根据以下 link TSQL CREATE EXTERNAL DATA SOURCE
将其更改为wasbs:\
时,我使用 https:\
的地方
其中描述您必须使用 wasbs
、abfs
或 adl
,具体取决于您的数据源类型是 V2 存储帐户、V2 数据湖还是 V1 数据湖