Фабрика данных Azure - ссылки на операции поиска в запросах - PullRequest
0 голосов
/ 03 июня 2019

Я следую учебному пособию по миграции фабрики данных Azure с SQL Azure на Blob через конвейеры. Хотя большинство концепций имеют смысл, запрос «Копировать данные» немного сбивает с толку.У меня есть опыт написания Oracle SQL, но Azure SQL в ADF сильно отличается, и я изо всех сил пытаюсь найти конкретную техническую документацию, возможно, потому что она еще не получила широкого распространения.

Конфигурация конвейера, показанная ниже: enter image description here Запрос опубликован ниже:

SELECT data_source_table.PersonID,data_source_table.Name,data_source_table.Age, 
CT.SYS_CHANGE_VERSION, SYS_CHANGE_OPERATION
FROM data_source_table 
RIGHT OUTER JOIN CHANGETABLE(CHANGES data_source_table, 
@{activity('LookupLastChangeTrackingVersionActivity').output.firstRow.SYS_CHANGE_VERSION}) 
AS CT ON data_source_table.PersonID = CT.PersonID 
WHERE CT.SYS_CHANGE_VERSION <= 
@{activity('LookupCurrentChangeTrackingVersionActivity').output.firstRow.CurrentChangeTrackingVersion}

Вывод в BLOB-объект приемника в результате запроса «Копировать данные»:

2,name2,14,4,U
7,name7,51,3,I
8,name8,31,5,I
9,name9,38,6,I

Пара вопросов, которые у меня были:

  1. Существует много внешних ссылок на другие действия в запросе «Копировать данные», например @{activity('...').output.firstRow.CurrentChangeTrackingVersion.Есть ли способ узнать соответствующий синтаксис для ссылки на внешние действия?Не могу найти хорошую документацию по синтаксису, например, что такое .firstRow или как выглядит вывод changetable.Я не могу повторить этот запрос в SSMS, что делает его чем-то вроде черного ящика.
  2. SYS_CHANGE_OPERATION появляется в SELECT без префикса имени таблицы.Это напрямую запрашивает из таблицы в SourceDataset?(Он указывает на data_source_table, для которого отслеживание таблиц включено ). Моя основная путаница связана с тем, как информация отслеживания таблиц хранится в включенных таблицах.Есть ли способ показать все отслеживаемые изменения таблицы в SSMS?Я вижу некоторую документацию о том, что возвращаемое значение , но мне трудно представить это без таблицы в таблице, так что выходной запрос некоторых возвращаемых значений был бы хорош.
  3. Операция LookupLastChangeTracking запрашивает во всех строках таблицы (которая, когда я проверял, является только одной строкой), но операция LookupCurrentChangeTracking использует функцию CHANGE_TRACKING для извлечения версии приемника данных в table_store_ChangeTracking_version,Почему он использует функцию, когда версия приемника данных уже записана в table_store_ChangeTracking_version?

Извините за многие вопросы, но я не могу найти способ сделать эту кривую обучения немного менее крутой.Любые гиды или ресурсы будут великолепны!

1 Ответ

0 голосов
/ 05 июня 2019

Есть статья, чтобы сделать то же самое из пользовательского интерфейса, и она поможет вам лучше понять это. https://docs.microsoft.com/en-us/azure/data-factory/tutorial-incremental-copy-change-tracking-feature-portal.

1. Это операция поиска. очень прямо, пожалуйста, прочитайте о них здесь. https://docs.microsoft.com/en-us/azure/data-factory/control-flow-lookup-activity

2.SYS_CHANGE_OPERATION - это столбец в data_source_table, поэтому все должно быть в порядке. Что касается подробностей о том, как хранится отслеживание изменений (CT), я не уверен, что все системные таблицы представлены в Azure SQL, но у нас было несколько таблиц в предварительной версии SQL, которые можно было бы запросить, если необходимо Но для этого упражнения я думаю, что это будет слишком.

...