Инкрементный фильтр DataFrame с использованием различных значений с помощью Spark - PullRequest
0 голосов
/ 06 марта 2019

Прежде всего у меня есть фрейм данных с разными значениями:

| Days |
| day1 |
| day2 |
| day3 |

Затем у меня есть еще один фрейм данных с некоторыми значениями, подобными этому

| A | B | Days |
| 1 | 2 | day1 |
| 3 | 4 | day3 |
| 5 | 6 | day3 |
| 7 | 8 | day2 |

Я хочу отфильтровать второй фрейм данныхсо значениями первого.Сначала я хочу получить один фильтр данных для фильтра день1, затем день1 и день2 и, наконец, день1, день2 и день3 (в инкрементах).

Выводы будут:

| A | B | Days |
| 1 | 2 | day1 |

| A | B | Days |
| 1 | 2 | day1 |
| 7 | 8 | day2 |

| A | B | Days |
| 1 | 2 | day1 |
| 7 | 8 | day2 |
| 3 | 4 | day3 |
| 5 | 6 | day3 |

Большое спасибо

1 Ответ

0 голосов
/ 07 марта 2019

используйте фрейм данных функции filter () путем объединения с оператором and ().

пример

var days = df1.collectAsList
import spark.implicits._

val d1 = df2.filter($"Days".equalTo(days.get(0).getString(0)))
val d2 = df2.filter($"Days".equalTo(days.get(0).getString(0))
.and($"Days".equalTo(days.get(1).getString(0))))
val d3 = df2.filter($"Days".equalTo(days.get(0).getString(0))
.and($"Days".equalTo(days.get(1).getString(0)))
.and($"Days".equalTo(days.get(2).getString(0)))
)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...