Динамические столбцы в предложении where при чтении файлов паркета в pyspark - PullRequest
0 голосов
/ 15 мая 2019

У меня есть файлы паркета, и я хочу прочитать их на основе динамических столбцов, поэтому возьмем пример, у меня есть 2 фрейма данных, и я хочу выбрать данные из df1 на основе df2.

, поэтому я использую приведенный нижекод, но я хочу сделать его динамичным с точки зрения объединения столбцов, сегодня у меня есть 2 столбца, завтра я могу иметь 4.

a = dict[keys]
col1 = a[0]
col2 = a[1]
v = df1.join(df2,[df1[col1] == df2[col1],
df1.[col2] == df2.[col2],
how='inner')

Так, как я могу сделать эти столбцы динамическими, чтобы условие соединения не должно бытьжестко закодировано и добавит удаление столбцов из условия соединения.

1 Ответ

0 голосов
/ 15 мая 2019

Я бы просто сгенерировал объект условия соединения сначала на основе вашего запроса, а затем использовал бы его в соединении.

from functools import reduce

join_condition = reduce(
    lambda a, b: a && b,
    [ df1[col] == df2[col] 
     for col 
     in dict[keys]
    ]
)

v = df1.join(
    df2,
    join_condition,
)


Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...