Почему Azure Data Flow преобразовывает varbinary (1000) в varbinary (max) и как я могу предотвратить это? - PullRequest
0 голосов
/ 28 января 2020

Моя исходная таблица, которая находится в Azure SQL Хранилище данных сервера, имеет столбец с именем Upline с типом данных varbinary (1000). В таблице назначения, расположенной в том же Azure SQL Хранилище данных сервера, тип данных и имя столбца совпадают. Моя проблема в потоке данных Azure, который заполняет таблицу назначения.

Вместо того, чтобы вставлять данные в таблицу приемников в потоке данных, он создает новую таблицу в моем хранилище данных. Вот инструкция create для таблицы, которая создается с помощью

CREATE TABLE [Common].[T_7be15bb497654f0c8eeb82459912f178]
(
    [EmployeeSK] [int] NULL,
    [EmployeeLastName] [nvarchar](max) NULL,
    [EmployeeFirstName] [nvarchar](max) NULL,
    [EmploymentStatus] [nvarchar](max) NULL,
    [HireDate] [date] NULL,
    [OriginalHireDate] [date] NULL,
    [TerminationDate] [date] NULL,
    [CurrentPosition] [nvarchar](max) NULL,
    [PreviousPosition] [nvarchar](max) NULL,
    [WorkAssignmentEffectiveStart] [date] NULL,
    [Region] [nvarchar](max) NULL,
    [District] [nvarchar](max) NULL,
    [Site] [nvarchar](max) NULL,
    [OnSiteDepartment] [nvarchar](max) NULL,
    [DepartmentName] [nvarchar](max) NULL,
    [ManagerDayForceEmployeeNumber] [nvarchar](max) NULL,
    [Upline] [varbinary](max) NULL,
    [Lvl] [int] NULL,
    [dimStartDate] [date] NULL,
    [dimEndDate] [date] NULL,
    [dimIsCurrent] [int] NULL,
    [dimHash] [nvarchar](max) NULL,
    [r7ace46966877481a90d6f8039c6524b5] [int] NULL
)

. Как видно из рисунка (если вы можете видеть рисунок), таблица дает столбцу Upline значение varbinary (max) тип данных. Почему это происходит? Как я могу остановить это? Когда я беру этот столбец из исходной и целевой таблиц, он работает успешно. Однако мне нужна колонка. Поток данных выполняет следующие действия: источник, выбор, производный столбец, суррогатный ключ и приемник. Он делает очень простые вещи, и Upline не изменяется в производном столбце.

Вот сообщение об ошибке из конвейера, который выполняет поток данных: «Обнаружено неявное преобразование из VarBinary (Max) в VarBinary (1000), для которого требуется предупреждение об усечении ANSI. Это не поддерживается. Используйте функцию CONVERT для явного выполнения этого запроса. " В производном столбце нет функции преобразования, поэтому я не могу выполнить предложенное предложение.

Максимальная длина данных в столбце равна 24 (определяется с помощью Select len ​​(max (Upline)) FROM. [исходная таблица]).

Любая помощь будет оценена. Спасибо.

1 Ответ

0 голосов
/ 28 января 2020

Я нашел работу вокруг. В операторе создания таблицы назначения я изменил varbinary (1000) на varbinary (max) и в конце заменил это окончание:

WITH
(
    DISTRIBUTION = ROUND_ROBIN,
    CLUSTERED COLUMNSTORE INDEX
)
GO

на следующее:

WITH
(
    DISTRIBUTION = ROUND_ROBIN,
    HEAP
)
GO

Теперь весь оператор create выглядит следующим образом:

CREATE TABLE [Common].[dimEmployee_temp]
(
    [EmployeeSK] [int] IDENTITY(1,1) NOT NULL,
    [DayForceEmployeeNumber] [nvarchar](255) NOT NULL,
    [ConaEmployeeNumber] [char](10) NULL,
    [EmployeeLastName] [nvarchar](255) NULL,
    [EmployeeFirstName] [nvarchar](255) NULL,
    [EmploymentStatus] [nvarchar](255) NULL,
    [HireDate] [date] NULL,
    [OriginalHireDate] [date] NULL,
    [TerminationDate] [date] NULL,
    [CurrentPosition] [nvarchar](255) NULL,
    [PreviousPosition] [nvarchar](255) NULL,
    [WorkAssignmentEffectiveStart] [date] NULL,
    [Region] [nvarchar](255) NULL,
    [District] [nvarchar](255) NULL,
    [Site] [nvarchar](255) NULL,
    [OnSiteDepartment] [nvarchar](255) NULL,
    [DepartmentName] [nvarchar](255) NULL,
    [UnionName] [nvarchar](255) NULL,
    [ManagerDayForceEmployeeNumber] [nvarchar](255) NULL,
    [Upline] [varbinary](max) NULL,
    [Lvl] [int] NULL,
    [dimStartDate] [date] NOT NULL,
    [dimEndDate] [date] NULL,
    [dimIsCurrent] [int] NOT NULL,
    [dimHash] [nvarchar](256) NULL
)
WITH
(
    DISTRIBUTION = ROUND_ROBIN,
    HEAP
)
GO

Это не помогает мне понять, что происходит в потоке данных Azure, но он успешно выполняется и вставляется в таблицу. .

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...