Azure Synapse 无服务器。 HashBytes:查询引用了分布式处理模式不支持的对象
Azure Synapse Serverless. HashBytes: The query references an object that is not supported in distributed processing mode
在 Synapse Serverless SQL 池中使用 HASHBYTES() 函数对行进行哈希处理时,我收到错误“查询引用了分布式处理模式不支持的对象”。
最终目标是解析 json 并将其存储为 parquet 以及 json 文档的散列。哈希值将用于未来导入新快照以识别差异。
这是一个产生错误的示例查询:
SELECT HASHBYTES('sha2_256', csvdata.rec)
FROM OPENROWSET(
BULK 'json/*/*/*/*/*.json.gz',
DATA_SOURCE = 'landingzone',
FORMAT = 'csv',
fieldterminator ='0x0b',
fieldquote = '0x0b'
) with (rec nvarchar(max)) as csvdata;
这个例子也会产生错误:
SELECT HASHBYTES('sha2_256', '{"mydoc": {"key":"value"}}')
FROM OPENROWSET(
BULK 'json/*/*/*/*/*.json.gz',
DATA_SOURCE = 'landingzone',
FORMAT = 'csv',
fieldterminator ='0x0b',
fieldquote = '0x0b'
) with (rec nvarchar(max)) as csvdata;
此示例按预期生成哈希:
SELECT HASHBYTES('sha2_256', '{"mydoc": {"key":"value"}}');
如果我首先创建一个外部 table 并在从外部 table 查询时使用 hashbytes() 函数,我也会收到错误消息。
预先感谢您的建议。
Jason,抱歉,外部表不支持 hashbytes()。
无服务器环境中受支持的 T-SQL 命令列表可用 here. This article notably states that cryptographic functions (listed also here),例如 HASHBYTES()(尚)不受支持。
我想宣布,在 Azure Synapse 的无服务器 SQL 池中,分布式查询(与外部表或 openrowset 一起使用时)现在支持 Hashbytes 函数!
在这个link你可以看到Transact-SQL features supported in Azure Synapse SQL。
在 Synapse Serverless SQL 池中使用 HASHBYTES() 函数对行进行哈希处理时,我收到错误“查询引用了分布式处理模式不支持的对象”。
最终目标是解析 json 并将其存储为 parquet 以及 json 文档的散列。哈希值将用于未来导入新快照以识别差异。
这是一个产生错误的示例查询:
SELECT HASHBYTES('sha2_256', csvdata.rec)
FROM OPENROWSET(
BULK 'json/*/*/*/*/*.json.gz',
DATA_SOURCE = 'landingzone',
FORMAT = 'csv',
fieldterminator ='0x0b',
fieldquote = '0x0b'
) with (rec nvarchar(max)) as csvdata;
这个例子也会产生错误:
SELECT HASHBYTES('sha2_256', '{"mydoc": {"key":"value"}}')
FROM OPENROWSET(
BULK 'json/*/*/*/*/*.json.gz',
DATA_SOURCE = 'landingzone',
FORMAT = 'csv',
fieldterminator ='0x0b',
fieldquote = '0x0b'
) with (rec nvarchar(max)) as csvdata;
此示例按预期生成哈希:
SELECT HASHBYTES('sha2_256', '{"mydoc": {"key":"value"}}');
如果我首先创建一个外部 table 并在从外部 table 查询时使用 hashbytes() 函数,我也会收到错误消息。
预先感谢您的建议。
Jason,抱歉,外部表不支持 hashbytes()。
无服务器环境中受支持的 T-SQL 命令列表可用 here. This article notably states that cryptographic functions (listed also here),例如 HASHBYTES()(尚)不受支持。
我想宣布,在 Azure Synapse 的无服务器 SQL 池中,分布式查询(与外部表或 openrowset 一起使用时)现在支持 Hashbytes 函数!
在这个link你可以看到Transact-SQL features supported in Azure Synapse SQL。