У вас есть несколько проблем, потому что большинство из того, что вы пытаетесь конвертировать, не способ сделать что-то на ASDW.
Во-первых, как вы отмечаете, CREATE TYPE не поддерживаетсяи не существует эквивалентной альтернативы.
Далее, код, кажется, выполняет одиночные вставки в таблицу.Это действительно плохо для ASDW, производительность будет ужасной.
Далее, пока нет заявления MERGE для ASDW.Это потому, что ОБНОВЛЕНИЕ не лучший способ обработки изменяющихся данных.
И, наконец, хранимые процедуры в ASDW работают немного по-другому, они не компилируются, а интерпретируются при каждом вызове процедуры.Хранимые процедуры отлично подходят для больших кусков логики уровня таблицы, но не рекомендуются для вызовов большого объема с однострочными операциями.
Мне нужно больше знать о сценарии использования, чтобы давать конкретные рекомендации, но вВообще вам нужно думать в таблицах, а не в строках.В частности, обратите внимание на способ обработки вашего ELT способом CREATE TABLE AS (* CTAS).
Вот хорошая ссылка, она показывает, как можно выполнить эквивалент слияния / переноса с помощью CTAS:
https://docs.microsoft.com/en-us/azure/sql-data-warehouse/sql-data-warehouse-develop-ctas#replace-merge-statements
Как вы увидите, он обрабатывает две таблицы одновременно, а не одну строку.Это означает, что вам нужно пересмотреть логику, которая вызвала пример хранимой процедуры.
Если вы разберетесь в том, чтобы делать все в CTAS, и отдельно в распределении, то вы уже на пути к достижению высокойхранилище данных о производительности.