Я следую учебному пособию по миграции фабрики данных Azure с SQL Azure на Blob через конвейеры. Хотя большинство концепций имеют смысл, запрос «Копировать данные» немного сбивает с толку.У меня есть опыт написания Oracle SQL, но Azure SQL в ADF сильно отличается, и я изо всех сил пытаюсь найти конкретную техническую документацию, возможно, потому что она еще не получила широкого распространения.
Конфигурация конвейера, показанная ниже: Запрос опубликован ниже:
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
Пара вопросов, которые у меня были:
- Существует много внешних ссылок на другие действия в запросе «Копировать данные», например
@{activity('...').output.firstRow.CurrentChangeTrackingVersion
.Есть ли способ узнать соответствующий синтаксис для ссылки на внешние действия?Не могу найти хорошую документацию по синтаксису, например, что такое .firstRow
или как выглядит вывод changetable
.Я не могу повторить этот запрос в SSMS, что делает его чем-то вроде черного ящика. - SYS_CHANGE_OPERATION появляется в
SELECT
без префикса имени таблицы.Это напрямую запрашивает из таблицы в SourceDataset?(Он указывает на data_source_table, для которого отслеживание таблиц включено ). Моя основная путаница связана с тем, как информация отслеживания таблиц хранится в включенных таблицах.Есть ли способ показать все отслеживаемые изменения таблицы в SSMS?Я вижу некоторую документацию о том, что возвращаемое значение , но мне трудно представить это без таблицы в таблице, так что выходной запрос некоторых возвращаемых значений был бы хорош. - Операция LookupLastChangeTracking запрашивает во всех строках таблицы (которая, когда я проверял, является только одной строкой), но операция LookupCurrentChangeTracking использует функцию CHANGE_TRACKING для извлечения версии приемника данных в table_store_ChangeTracking_version,Почему он использует функцию, когда версия приемника данных уже записана в table_store_ChangeTracking_version?
Извините за многие вопросы, но я не могу найти способ сделать эту кривую обучения немного менее крутой.Любые гиды или ресурсы будут великолепны!