Подстрока имени столбца в операции копирования в ADF v2

Есть ли способ в действии копирования V2 работать с одним из входных столбцов (строкового типа) с выражением? Прежде чем загружать строки в место назначения, мне нужно ограничить количество символов в столбце.

Я надеялся просто переключиться с чего-то вроде этого:

"ColumnMappings": "inColumn: outColumn"

примерно так:

"ColumnMappings": "@substring(inColumn, 1, 300): outColumn"

Если кто-нибудь может указать мне, где я могу прочитать, где и когда можно использовать строковые выражения, я мог бы воспользоваться руководством.


person fchukoskie    schedule 05.02.2018    source источник
comment
Я попытался изменить синтаксис для columnMappings, чтобы использовать формат значения / типа, показанный здесь (безрезультатно): stackoverflow.com/questions/47828502/   -  person fchukoskie    schedule 05.02.2018


Ответы (2)


Если у вас нет источника SQL, но местом назначения является приемник SQL, вы можете использовать хранимую процедуру для вставки данных в окончательную таблицу. Таким образом, вы можете определить такие преобразования в хранимой процедуре. Я не думаю, что фабрика данных может справиться с подобными действиями, она больше предназначена как оркестратор.

Посмотрите здесь: https://docs.microsoft.com/en-us/azure/data-factory/connector-sql-server#invoke-stored-procedure-from-sql-sink

person Simon Zeinstra    schedule 08.02.2018
comment
Я не думаю, что поначалу уделял этому достаточно внимания, потому что слишком долго страдал из-за ограничений хранилища Azure SQL (приемника) varchar (8000) и nvarchar (4000). Поскольку обновления удалили эти заглавные буквы, вы правы ... проще всего поместить всю строку в неограниченные столбцы, а затем усечь их до разумного размера с помощью сохраненной процедуры. Спасибо - person fchukoskie; 09.02.2018

Это официальная документация по выражениям и функциям: https://docs.microsoft.com/en-us/azure/data-factory/control-flow-expression-language-functions

И это документация по сопоставлениям: https://docs.microsoft.com/en-us/azure/data-factory/copy-activity-schema-and-type-mapping

Также помните, что если вы используете определенный запрос в действии копирования, вы можете использовать функции sql, такие как CAST ([fieldName] as varchar (300)), чтобы ограничить количество символов в определенном поле.

Надеюсь, это помогло!

person Martin Esteban Zurita    schedule 06.02.2018
comment
CAST & CONVERT было бы идеально, но я не нашел способа использовать их, которые работают с источником хранилища таблиц Azure. - person fchukoskie; 06.02.2018
comment
Другая моя идея (которая, как я все еще надеюсь, может существовать) - найти параметр, который указывает целевой таблице игнорировать ошибки усечения (аналогично SSIS). В противном случае, я думаю, мне придется научиться писать шаг преобразования в фабрике данных. Спасибо! - person fchukoskie; 06.02.2018