Вопрос или проблема
Используя потоки данных для проверки наших поступающих данных с помощью операции Assert. Согласно документации, я могу получить карту ошибок assert через функцию assertErrorMessages().
Я хочу записать эти ошибки вместе с некоторыми данными (не всеми) в файл csv. Для этого я использую производный столбец с функцией isError(), чтобы указать, произошла ли ошибка. Ошибочные строки я условно разделяю, использую выборку, чтобы выбрать только несколько столбцов, и отправляю их в другой приемник.
Проблема в том, что сообщения об ошибках на самом деле являются картой (похожей на массив) и не записываются в csv, столбец с сообщениями об ошибках остается пустым.
Поэтому я пытаюсь понять, как преобразовать карту/массив в строку. В выражении конвейера у нас есть метод join(), который решает эту задачу, однако этот метод недоступен в редакторе выражений производного столбца.
Есть какие-нибудь предложения?
Ответ или решение
Для решения вашей задачи по преобразованию сообщений об ошибках из функции assertErrorMessages()
в строку, которую можно записать в CSV-файл, следуйте следующим шагам:
-
Преобразование сообщений об ошибках: Поскольку функция
assertErrorMessages()
возвращает карту ошибок, вам нужно объединить эти сообщения в одну строку. Несмотря на то, что методjoin()
недоступен в редакторе выражений столбца Derived, вы можете воспользоваться функциейmap()
для преобразования данных иreduce()
для их объединения. Пример такой функции может выглядеть следующим образом:function convertErrorMapToString(errorMap) { return Object.keys(errorMap) .map(key => `${key}: ${errorMap[key]}`) .join('; '); }
Этот код берет каждую пару ключ-значение в вашем объекте, и объединяет их в строку в формате "ключ: значение", разделяя их с помощью "; ".
-
Добавление в поток: В вашем процессе обработки данных, добавьте новый столбец, используя описанную функцию, чтобы преобразовать каждую карту ошибок в строку. Убедитесь, что этот столбец будет заполняться только в случае, если функция
isError()
возвращает истину. -
Использование выборки: После того, как вы преобразовали сообщения об ошибках в строку, используйте оператор
select
, чтобы выбрать нужные столбцы, включая новый столбец с преобразованными сообщениями об ошибках. -
Запись в CSV: После того, как необходимая информация собрана и отфильтрована, используйте ваш целевой "sink" для записи данных в CSV-файл. Убедитесь, что выбранный вами sink поддерживает запись строк.
Таким образом, у вас будет возможность конвертировать сообщения об ошибках из карты в строку и записывать их в CSV вместе с нужными вам данными.
Если у вас возникнут дополнительные вопросы или потребуется более детальная помощь, не стесняйтесь обращаться.