У меня есть два кадра данных.
dataDF
+---+
| tt|
+---+
| a|
| b|
| c|
| ab|
+---+
alter
+----+-----+------+
|name|alter|profit|
+----+-----+------+
| a| aa| 1|
| b| a| 5|
| c| ab| 8|
+----+-----+------+
Задача состоит в том, чтобы найти col "tt" в кадре данных alter col ("name"), если он найден, присоединитесь к ним, если он не найден, выполните поиск col" tt "в col (" alter ").Приоритет col («имя») выше, чем col («изменить»).Это означает, что если строка col ("tt") соответствует col ("name"), я не хочу сопоставлять ее с другой строкой, которая соответствует только col ("alter").Как мне решить эту задачу?
Я пытался написать объединение, но оно не работает.
dataDF = dataDF.select("*")
.join(broadcast(alterDF),
col("tt") === col("Name") || col("tt") === col("alter"),
"left")
Результат:
+---+----+-----+------+
| tt|name|alter|profit|
+---+----+-----+------+
| a| a| aa| 1|
| a| b| a| 5| // this row is not expected.
| b| b| a| 5|
| c| c| ab| 8|
| ab| c| ab| 8|
+---+----+-----+------+