Фабрика данных Azure отображает 2 столбца в один столбец

Может кто-нибудь помочь мне решить ошибку, я получаю при объединении двух столбцов, т.е. first name а также last name из моего текстового файла и слияния двух столбцов в один столбец имени в моей базе данных SQL Azure как sink в фабрике данных Azure, и другой вопрос заключается в том, что я хочу выбрать первую букву пола столбца, который M или же F для мужского и женского пола соответственно из исходного текстового файла и изменения его на одну букву M или F в столбце моего пола в конвейере фабрики данных Azure введите описание изображения здесь?

  • Обновление 1

Моя таблица называется [dbo].[Contact], и после применения этой процедуры я получаю эту ошибку, и между именами моих столбцов в текстовом файле между ними есть пробел, например, Имя и Фамилия, это тоже создает проблему?

введите описание изображения здесь

1 ответ

Решение

Основываясь на отображении doc: Schema в операции копирования, объединение столбцов поддерживается отображением схемы.

В качестве обходного пути, я предлагаю настроить сервер SQL stored procedure в вашей раковине сервера sql. Он может объединять копируемые данные с существующими данными.

Пожалуйста, следуйте инструкциям из этого документа:

Шаг 1: Настройте ваш выходной набор данных:

Шаг 2. Настройте раздел "Мойка" в операции копирования следующим образом:

Шаг 3: В вашей базе данных определите тип таблицы с тем же именем, что и sqlWriterTableType. Обратите внимание, что схема типа таблицы должна совпадать со схемой, возвращаемой вашими входными данными.

CREATE TYPE [dbo].[MarketingType] AS TABLE(
    [FirstName] [varchar](256) NOT NULL,
    [LastName] [varchar](256) NOT NULL,
    [Gender] [varchar](256) NOT NULL
)

Шаг 4. В вашей базе данных определите хранимую процедуру с тем же именем, что и SqlWriterStoredProcedureName. Он обрабатывает входные данные из указанного вами источника и объединяет их в выходную таблицу. Обратите внимание, что имя параметра хранимой процедуры должно совпадать с именем "tableName", определенным в наборе данных.

Create PROCEDURE spOverwriteMarketing @Marketing [dbo].[MarketingType] READONLY
AS
BEGIN
  MERGE [dbo].[jay] AS target
  USING @Marketing AS source
  ON (1=1)
  WHEN NOT MATCHED THEN
      INSERT (name, gender)
      VALUES (source.FirstName + ' ' + source.LastName, UPPER(left(source.Gender,1)));
END

Скриншот вывода:

Надеюсь, это поможет вам.

Другие вопросы по тегам