Я пытаюсь получить тип данных географии из производственной БД в другую БД каждую ночь. Я действительно хотел использовать upsert в качестве активности записи, но, похоже, этот метод не поддерживает географию. Я читал аналогичный пост о переносе данных через ADF в качестве общеизвестного текстового типа данных, а затем об изменении его, но я продолжаю путаться в том, что делать с данными после того, как они перенесены в качестве общеизвестного типа данных. Буду рад любому совету, спасибо.
Пытался использовать конвейеры и потоки данных ADF. Пытался преобразовать тип данных, как только он оказался в месте назначения, но потом мне не удалось снова запустить конвейер.






Затем я сделал upsert, используя активность потока данных. Ниже приведены шаги.
Исходная таблица берется в потоке данных, как показано на рисунке ниже.
CREATE TABLE SpatialTable
( id int ,
GeogCol1 geography,
GeogCol2 AS GeogCol1.STAsText() );
INSERT INTO SpatialTable (id,GeogCol1)
VALUES (1,geography::STGeomFromText('LINESTRING(-122.360 46.656, -122.343 46.656 )', 4326));
INSERT INTO SpatialTable (id,GeogCol1)
VALUES (2,geography::STGeomFromText('POLYGON((-122.357 47.653 , -122.348 47.649, -122.348 47.658, -122.358 47.658, -122.358 47.653))', 4326));

Затем выполняется преобразование Alter Row и в Alter Row Conditions Upsert, если задано isNull(id)==false(). (На основе идентификатора столбца таблица приемника изменена)

Затем в Sink задается набор данных для целевой таблицы. В настройках приемника метод обновления выбран как «Разрешить обновление» и указан требуемый столбец «Ключ». (Здесь выбран идентификатор столбца)

Когда конвейер запускается в первый раз, данные вставляются в целевую таблицу.
Когда конвейер запускается во второй раз путем обновления существующих данных и вставки новых записей в источник, данные вставляются правильно.
Исходные данные изменены для id=1 и вставлена новая строка с id=3

Данные приемника отражают изменения, внесенные в источник.

Спасибо. Это именно то, что мне нужно, чтобы мой конвейер работал.