Я хочу построить функцию, которая получает два параметра: columnOne - это строка, и columnNames - это массив строк.
Таким образом, я буду динамически строить запрос на соединение для двух искровых DataFrames.
Проблема в том, что я не могу воспроизвести что-то вроде:
joinConditionsQueryOne = [(existingHistoryData.colRegex(columnOne) == newHistoryData.colRegex(joinColumn ) &
(
(existingHistoryData.colRegex(columnNames[0]) !=newHistoryData.colRegex(columnNames[0])) |
(existingHistoryData.colRegex(columnNames[1])!= newHistoryData.colRegex(columnNames[1])) |
(existingHistoryData.colRegex(columnNames[n])!= newHistoryData.colRegex(columnNames[n]))
)]
Есть ли способ, которым я могу «добавить» какой-то элемент в список? Я уже пробовал что-то вроде
joinConditionsQueryTwo = []
joinConditionsQueryTwo .append(existingHistoryData.column1 != newHistoryData.column1)
joinConditionsQueryTwo .append(existingHistoryData.column1 != newHistoryData.column1)
Но результат для построения joinConditionsQueryOne: [Column<b'((Id = Id) AND ((NOT (column1 = column1 )) OR (NOT (column2 = column2))))'>]
А для joinConditionsQueryTwo это: [Column<b'((NOT (column1 = column1 )) OR (NOT (column2 = column2)))'>, Column<b'(NOT (column3 = column3)))'>]
То естьспособ, которым я могу динамически добавить предложение «ИЛИ» или «И»?