Azure Delta Load не распознает временную метку эпохи (мс) в качестве имени столбца водяного знака
Я пытаюсь выполнить дельта-загрузку (добавочную загрузку) с помощью Фабрики данных Azure из SQL Server в хранилище BLOB-объектов. В моих таблицах есть столбец updateStamp, который представляет собой время эпохи в миллисекундах, числовой (19,0) тип данных. Когда я пытаюсь выбрать имя столбца «Водяной знак» в разделе конфигурации инструмента «Копировать данные» в ADF, это не один из вариантов, и он не позволяет мне вручную вводить имя столбца. Похоже, ему нужен только тип данных datetime или ключевой целочисленный тип данных. Я пробовал с задачей копирования на основе метаданных и разностным копированием из шаблона базы данных, но безуспешно. Есть ли обходной путь или способ преобразования максимума и его использования (вместо добавления еще одного столбца к сотням миллионов строк). Любая помощь или руководство приветствуются.
Я ожидаю, что смогу использовать тип данных, который указывает момент времени в качестве водяного знака для добавочной загрузки, даже если этот тип данных не является датой и временем.
1 ответ
Я попытался воспроизвести это в своей среде, используя дельта-копию из шаблона базы данных в adf для столбца водяных знаков с типом метки времени эпохи. Ниже приведены шаги.
- Входная таблица и таблица водяных знаков взяты, как на изображении ниже. (Исходное значение водяного знака для таблицы водяных знаков указано как 1657238400000, чтобы скопировать все записи при первом запуске)
- Хранимая процедура для обновления нового значения водяного знака записывается на сервере SQL, как показано ниже.
Create PROCEDURE update_watermark @LastModifyDate numeric(19,0)
AS
BEGIN
UPDATE watermarktable
SET [WatermarkValue] = @LastModifyDate
END
- В ADF берется дельта-копия из шаблона базы данных и предоставляется связанная служба для источника, приемника и управляющей таблицы. Затем выберите Использовать шаблон .
Конфигурация в действиях LookupLastWaterMark, LookupCurrentWaterMark, DeltaCopyfromDB не изменена
В действии UpdateWaterMark выбирается имя хранимой процедуры и импортируется параметр. тип параметра LastModifyDate задается как Int64 .
Отладка нажимается для запуска конвейера, и задаются параметры конвейера для источника, приемника и управляющей таблицы.
- После копирования файла значение водяного знака обновляется последним значением.
Файл стока:
- В источник добавлена новая позиция (4-я запись на изображении ниже добавлена заново).
- Pipeline перезапускается, чтобы проверить, скопированы ли дельта-строки.
Дельта-записи копируются в приемник, когда временная метка эпохи указана в качестве столбца водяных знаков.
Ссылка: документ MS по разностному копированию из шаблона базы данных .