Столбцы с нулевым выходом в разделе Sink Error Solution

Для своей разработки я использую поток данных Фабрики данных Azure.

У меня есть исходная таблица со строками «D», «I» и «U». Я хочу разделить строки «D» из «U» и «I» и загрузить их отдельно в две разные папки.

Я использовал условное разделение потока данных Azure, чтобы разделить их, и указал потоки на разные потоки и приемники соответственно: приемник удаления для строк «D» и приемник InsertUpdate для строк «I» и «U».

Мой конвейер динамический, я не импортировал никакую схему и не хочу, и все столбцы перемещаются по потоку данных от источника к приемнику. Условное разделение также выполняется с помощью функции byName() внутри построителя выражений.

Моя проблема, например, в том, что если нет строк «D», ни один столбец не будет перемещаться в приемник «Удалить», это выдает ошибку, указывающую: «приемник не может иметь 0 столбцов».

Пожалуйста, помогите мне решить эту проблему, если возможно, предоставьте пошаговое текстовое/визуальное объяснение решения моей проблемы.

Вы выбрали «Разрешить дрейф схемы в стоке»?

Aswin 16.05.2024 14:26

Привет @Aswin, да, смещение схемы включено для обоих приемников: приемника удаления и приемника обновления, но ни одна схема не перейдет в приемник из-за условного разделения, если из источника нет строк «D».

Prem__Raj 16.05.2024 14:52
Как установить 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
106
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

Моя проблема, например, в том, что если нет строк «D», ни один столбец не будет перемещаться в приемник «Удалить», это выдает ошибку, указывающую: «приемник не может иметь 0 столбцов».

Преобразование Условное разделение таким образом не сработает. Он будет разделять строки только на основе условия, и если нет строк, удовлетворяющих данному условию, будут созданы пустые строки с той же исходной схемой. Те же столбцы из источника будут переданы в целевой объект, но в нем не будет строк.

Следуйте приведенной ниже пошаговой процедуре для достижения вашего требования.

Вот мой пример исходных данных:

one,two
I,2
U,3
I,5
I,6
U,7
U,8

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

InsertUpdate - or(equals(toString(byName('one')),'I'),equals(toString(byName('one')),'U'))

Delete - equals(toString(byName('one')),'D')

Я добавил соответствующие приемники в два потока.

При выполнении из конвейера он будет генерировать файлы, подобные приведенным ниже.

Файл InsertUpdate.csv:

Если в источнике нет строк D, он создаст файл delete.csv с заголовками источника (если заголовок firstRow проверен в наборе данных приемника) и без строк, как показано ниже.

Если первая строка в качестве заголовка отключена в наборе данных приемника, будет создан пустой файл delete.csv.

Убедитесь, что вы проверили Schema drift в источнике, а также в обоих приемниках.

Привет @Rakesh Govindula, странно, у меня это не работает, могу ли я узнать, дали ли вы проекцию импорта при преобразовании источника здесь, в вашем примере?

Prem__Raj 27.05.2024 15:08

Нет, я не делал никаких прогнозов. Вы можете увидеть количество столбцов 0 в преобразовании условного разделения. Я пробовал использовать данные с необходимыми D и без этих строк. Это сработало в обоих случаях. Даже я пробовал использовать столбцы различий, это сработало, как и ожидалось.

Rakesh Govindula 27.05.2024 15:11

Попробуйте запустить поток данных из конвейера и проверьте, дает ли целевой файл желаемый результат или нет. Иногда отладка вызывает некоторые проблемы.

Rakesh Govindula 27.05.2024 15:13

Я попробовал запустить отладку, позвольте мне запустить среду выполнения активности и вернуться к вам по этому поводу.

Prem__Raj 27.05.2024 16:07

Спасибо, @rakesh-govindula, сейчас почему-то работает, давно не работало. Ценю вашу помощь!

Prem__Raj 27.05.2024 17:24

Отлично, это сработало для вас :).

Rakesh Govindula 28.05.2024 04:39

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

Фабрика данных Azure запускает завершение кластера Databricks
Клиент с идентификатором объекта не имеет полномочий на выполнение действия «Microsoft.DataFactory/factories/triggers/write» в области действия
Выпуск ADF Azure DevOps от Dev до Prod. Как сделать, чтобы релиз не затронул Связанные сервисы
Как параметризовать набор данных, чтобы я мог использовать несколько файлов Excel в папке больших двоичных объектов для передачи в PowerQuery один за другим?
Фабрика данных Azure находит объект JSON по определенной строке/значению, а затем выбирает другое значение
Набор данных DelimitedText (csv) автоматически кодирует пути к файлам в формат urlencoding, и при последовательном копировании не удается найти большие двоичные объекты
Узел среды выполнения интеграции (локальный) обнаружил ошибку во время регистрации. Невозможно определить состояние узла среды выполнения интеграции
Каков правильный текст JSON для отключения обновления расписания PowerBi через API?
Как передать массив в качестве параметра в конвейер через действие выполнения конвейера?
Фабрика данных Azure Анализ строкового массива Json в массив json