Фабрика данных Azure: преобразование Exists не работает должным образом при сравнении двух таблиц

Я пытаюсь сравнить содержимое двух таблиц SQL в Фабрике данных Azure (ADF), используя преобразование Exists в потоке данных, чтобы найти дельта-данные. Моя цель — переместить дельта-данные в приемник. Вот подробности:

  • Таблица 1 содержит 683 934 строки.
  • Таблица 2 содержит 684 000 строк.

Подход:

В потоке данных ADF для каждой таблицы я использую функцию sha2() для создания производного хеш-столбца следующим образом: производныйстолбец = SHA2(256, столбцы())

Базовый бизнес-кейс заключается в том, что строки могут быть одинаковыми, но данные в строках могут со временем меняться. Следовательно, я сравниваю весь контент, вычисляя хеш-столбец для всех столбцов, а не просто сравнивая уникальные столбцы.

Затем я использую преобразование Exists, чтобы найти в таблице 1 строки, которых нет в таблице 2.

Предполагается, что дельта-данные будут отправлены в приемник.

Проблема:

Когда я просматриваю данные в преобразовании «Существует», в результате я вижу множество строк. В моем случае он должен возвращать ноль строк, поскольку в таблице 1 (левая таблица) меньше строк, чем в таблице 2, и я точно знаю, что все эти строки и данные уже присутствуют в таблице 2.

Вопрос:

  • Почему преобразование Exists возвращает так много строк? Я что-то упускаю в отношении трансляции, разделения и т. д.? Я попробовал установить для трансляции значение «Авто», а также «Фиксировано» с правым потоком, но в обоих случаях результат был одинаковым.
  • Есть ли более эффективный способ сравнить содержимое двух таблиц, чтобы найти дельта-данные с помощью ADF?
  • Как я могу гарантировать, что сравнение правильно идентифицирует только измененные или новые строки?

Дополнительная информация:

  • Обе таблицы имеют одинаковую схему.

Любые идеи или предложения будут высоко оценены. Спасибо!

Скриншоты потока данных:

Можете ли вы поделиться снимком экрана потока данных и настроек Exists?

Joel Cochran 06.06.2024 19:55

сделанный. обновил вопрос скриншотами

redwolf_cr7 06.06.2024 20:07
Как установить LAMP Stack - Security 5/5 на виртуальную машину Azure Linux VM
Как установить LAMP Stack - Security 5/5 на виртуальную машину Azure Linux VM
В предыдущей статье мы завершили установку базы данных, для тех, кто не знает.
Как установить LAMP Stack 1/2 на Azure Linux VM
Как установить LAMP Stack 1/2 на Azure Linux VM
В дополнение к нашему предыдущему сообщению о намерении Azure прекратить поддержку Azure Database для MySQL в качестве единого сервера после 16...
0
2
87
2
Перейти к ответу Данный вопрос помечен как решенный

Ответы 2

Я считаю, что проблема в том, что генерация кода неверна при использовании пользовательского выражения таким образом.

С пользовательским выражением

С селекторами столбцов Если вы отмените выбор параметра «Пользовательское выражение» и используете пользовательский интерфейс для выбора столбцов, синтаксис будет другим:

Я не думаю, что вам нужно собственное выражение, просто выберите столбцы из предоставленных списков.

Спасибо, Джоэл. Я попробовал оба подхода, но получил один и тот же результат. В моем случае имена обоих столбцов разные. Так что это не должно быть проблемой в любом случае.

redwolf_cr7 06.06.2024 21:58
Ответ принят как подходящий

Эта проблема при предварительном просмотре данных потока данных не является фактической ошибкой. Причина несоответствия данных при предварительном просмотре данных заключается в том, что в настройках отладки source1 и source2 ограничены случайными 1000 строками для предварительного просмотра данных. Это и есть причина не получения ожидаемого результата. При отладке конвейера с этим потоком данных вы не получите эту ошибку.

  • Чтобы получить правильный вывод при предварительном просмотре данных, вы можете загрузить образцы данных для source1 и source2 в настройках отладки.

Обратитесь к MS doc относительно этих настроек отладки.

Спасибо, Асвин. Я запущу свой конвейер с этим предположением и проверю, работает ли он.

redwolf_cr7 07.06.2024 16:06

Надеюсь, это сработало. Преобразование Exists для небольшого набора данных также будет работать при предварительном просмотре данных. Вы можете проверить это, загрузив образцы детерминированных данных для source1 и source2 в настройках отладки.

Aswin 10.06.2024 06:17

Привет, Асвин! Да, похоже, это сработало. Спасибо. Я буквально пару дней думал, что моя логика какая-то неправильная :)

redwolf_cr7 12.06.2024 16:15

Другие вопросы по теме

Фабрика данных Azure не позволит функции Azure инициировать запуск с использованием управляемого идентификатора
Используйте фабрику данных Azure для динамического создания новых столбцов
Триггер BLOB-объектов Azure | формат тела запроса
Azure Blob Не удалось создать контейнер-контейнер
Невозможно связать базу данных SQL Azure с фабрикой данных с помощью управляемого удостоверения
API работает нормально в Postman, но не в веб-активности ADF
Можем ли мы переместить данные из космоса в BLOB-объект в ADF как отдельные файлы?
Хранилище BLOB-объектов Azure: нет ли события UnDelete?
Фабрика данных Azure: как предотвратить выполнение потока данных, если в результате действия копирования в фабрике данных Azure не найден файл?
Фабрика данных Azure: как использовать Exists, когда источник (Blob - CSV) и цель (БД SQL) представляют собой массивные наборы данных (различные типы данных ~ 370 столбцов, ~ 7 миллионов строк)

Похожие вопросы

Переменная cicd yaml Azure dev ops для appSettings, многострочная ошибка, вызывающая ошибку
Фабрика данных Azure не позволит функции Azure инициировать запуск с использованием управляемого идентификатора
Как решить проблему: невозможно создать экземпляр — yii\di\NotInstantiableException в Azure?
Скрытые ссылки Terraform для приложения-функции Azure
Используйте фабрику данных Azure для динамического создания новых столбцов
Пользовательский анализатор вложенного свойства в службе поиска показывает ошибку в Azure
Как решить проблему «ManagedIdentityCredential.GetToken не удалось получить токен доступа». при использовании Azure ServiceBusTrigger и управляемого удостоверения?
Создайте веб-книгу, чтобы получать уведомления, создавать и обновлять пользователей на портале Azure
Функции Azure (Node.js): как прочитать открытый ключ (.cer), загруженный в блейд сертификатов в Azure, из кодов?
Bicep — использование OpenAPI для создания определения API и политик XML для каждой операции