Пользовательская функция объединения двух таблиц pyspark - PullRequest
0 голосов
/ 02 ноября 2019

Я хочу построить функцию, которая получает два параметра: 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)))'>]

То естьспособ, которым я могу динамически добавить предложение «ИЛИ» или «И»?

...