2016-12-02 4 views
2

В локальной базе данных SQL Server у меня есть несколько таблиц, в которые вставляются различные данные о продажах цепочки магазинов в течение дня. Я хотел бы «собрать» эти данные Azure каждый, скажем, через 15 минут через Data Factory и локальный шлюз управления данными. Ясно, что я не заинтересован в копировании всех данных таблицы каждые 15 минут, но только при копировании строк, которые были вставлены с момента последней выборки. Насколько я вижу, documentation предлагает использовать эти «срезы» для этой цели. Однако, насколько я вижу, эти срезы требуют, чтобы столбец времени (например, datetime) существовал в таблицах, откуда извлекаются данные.Инкрементальная передача данных с использованием Azure Data Factory

  1. Могу ли я выполнить выборку «delta» (то есть только получить строки, вставленные после последней выборки) без наличия такого столбца временной метки? Могу ли я использовать последовательный целочисленный столбец? Или даже не иметь увеличивающегося столбца?
  2. Предположим, что в последнем кусочке было окно с 08:15 до 08:30. Теперь, если часы на сервере базы данных немного отстают от часов Azure, он может добавить несколько строк с отметкой времени, которая установлена ​​в 08:29 после, что этот срез был выбран, и эти строки не будут включены, когда следующий фрагмент (С 08:30 до 08:45). Есть ли разумный способ избежать этой проблемы? Сдвиг окна среза на несколько минут в прошлое может свести к минимуму риск, но не полностью устранить его.
+0

Чтобы противостоять часовым отличиям, вы можете установить «задержку» на объект политики действия. –

ответ

0

Возьмите Azure Data Factory из уравнения. Как вы организуете передачу дельт в целевую систему? Я думаю, у вас есть несколько вариантов:

  1. добавить дату, созданную/измененную колонку в исходные таблицы. Записывать параметризованные запросы, чтобы получать только новые или измененные значения. ADF поддерживает этот сценарий с временными срезами и system variables. Re, вы можете сделать это с помощью хранимой процедуры (согласно here) и таблицы, отслеживающей последний отправленный идентификатор.
  2. Включить Change Data Capture (CDC) на исходную систему. Это позволит вам получить доступ к дельтам через функции CDC. Оберните их в proc и вызовите системные переменные, аналогичные приведенному выше примеру.
  3. Всегда переносите все данные, например, в промежуточные таблицы цели. Используйте дельта-код EXCEPT и MERGE, чтобы определить, какие записи имеют изменения; очевидно, не идеально подходит для больших объемов, это будет работать для небольших объемов.

НТН

0

Мы планируем добавить эту возможность в АПД. Он может начинаться с последовательного целочисленного столбца вместо метки времени. Не могли бы вы сообщить мне, поможет ли колонка последовательного целого?

+0

Да, это очень помогло бы. – someName

Смежные вопросы