Бессерверная версия Azure Synapse. HashBytes: запрос ссылается на объект, который не поддерживается в режиме распределенной обработки.

Я получаю сообщение об ошибке. Запрос ссылается на объект, который не поддерживается в режиме распределенной обработки при использовании функции HASHBYTES () для хеширования строк в Synapse Serverless SQL Pool.

Конечная цель - разобрать json и сохранить его как паркет вместе с хешем документа 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"}}');

Я также получаю сообщение об ошибке, если сначала создаю внешнюю таблицу и использую функцию hashbytes () при запросе из внешней таблицы.

Заранее благодарю за совет.


person jason    schedule 05.01.2021    source источник
comment
Джейсон, мне удалось воспроизвести ошибку при других обстоятельствах, кроме использования hashbytes (). Я копаюсь в этом подробнее, и я сообщу вам о прогрессе позже сегодня.   -  person Ron Dunn    schedule 06.01.2021
comment
У вас BULK 'json/*/*/*/*/*.json.gz', а затем FORMAT = 'csv',. Это верно? Также вы можете опубликовать пример значения столбца rec? Что за тип? Кстати, я видел ответ Рона, но мне было любопытно.   -  person Kashyap    schedule 07.01.2021
comment
@Kashyap, вот документы по синтаксису, которым я следую docs.microsoft.com/en-us/azure/synapse-analytics/sql/. Это работает, если я просто выбираю столбцы и опускаю вызов хеш-байтов. Документ json - {"mydoc": {"key":"value"}}. Это то же самое, что и выше - я только что создал файл с несколькими сотнями строк для тестирования.   -  person jason    schedule 07.01.2021


Ответы (2)


Джейсон, извините, hashbytes () не поддерживается для внешних таблиц.

person Ron Dunn    schedule 06.01.2021
comment
облом - спасибо, что разобрались для меня. - person jason; 07.01.2021
comment
Какие еще функции не поддерживаются? любую документацию, которую я могу использовать? - person Kusal Hettiarachchi; 11.06.2021

Список поддерживаемых команд T-SQL в бессерверных средах доступен здесь. В этой статье особо отмечается, что криптографические функции (перечисленные также здесь), такие как HASHBYTES () (пока) не поддерживаются.

person fred31330    schedule 14.06.2021