#apache-spark #databricks
#apache-spark #databricks
Вопрос:
Я кодирую Python в Databricks и использую spark 2.4.5.
У меня есть функция, подобная приведенному ниже коду :
def verifyMatchAndDisplayDifferences(oldDF, newDF, pkColumn):
...
newDF.join(oldDF, newDF.SK_ID_Site == oldDF.SK_ID_Site, "full")
...
Как вы можете видеть, я объединяю два фрейма данных с помощью столбца (SK_ID_Site).
Я хотел бы знать, как я могу использовать свой параметр (pkColumn) вместо использования жестко закодированного имени столбца?
Я попробовал приведенный ниже код, но он не сработал
newDF.join(oldDF, newDF.col(pkColumn) == oldDF.col(pkColumn), "full")
Ответ №1:
Поскольку это всегда один и тот же ключ, вы можете использовать on
параметр
def verifyMatchAndDisplayDifferences(oldDF, newDF, pkColumn):
...
newDF.join(oldDF, on=[pkColumn], how="full")
...
Дополнительная документация здесь, https://spark.apache.org/docs/latest/api/python/_modules/pyspark/sql/dataframe.html#DataFrame.join
Комментарии:
1. Если у меня есть составные pkColumns, что мне нужно делать? а что, если мой pkColumn немного отличается. например, PK_Site и PK_Site_Old? у меня есть шаблон, и я могу создать имя столбца pk в своей функции. из-за этого я передал только один параметр.