Я не уверен, правильно ли я спрашиваю об этом или нет, но у меня возникают проблемы с пониманием, как распаковать значение ключа словаря, которое может иметь тип списка.
То, чего я в основном пытаюсь добиться, - это иметь функцию, которая может группировать блок данных в PySpark, но в условии агрегации может быть несколько значений.
def readfilegrouped(**groupargs):
"""Group the dataframe based on the conditions"""
dfgrouped = groupargs['groupingdf'].groupBy(groupargs['aggcol']).agg(groupargs['aggcond'])
return dfgrouped
В приведенной выше функции я хочу иметь возможность передать несколько условий агрегации.Пример, упомянутый ниже:
groupargs = {'groupingdf':members, 'aggcol':"MEMBERID", 'aggcond':F.countDistinct(F.col("MEMBERID")).alias("DISTINCT_MEMBERID"), F.sum(F.col("TRANSACTIONS")).alias("TOTALTRANSACTIONS")}
membersgrouped = readfilegrouped(**groupargs)
Таблица участников:
MEMBERID TRANSACTIONS DATE
M1 2 01/01
M1 3 01/02
M2 5 02/01
M3 1 01/01
M3 2 01/02
Результат, который я ищу:
MEMBERID DISTINCT_MEMBERID TOTALTRANSACTIONS
M1 1 5
Наиболее близким, к которому я пришел, было использование defaultdict
, чтобы сделать это, но я не уверен, как правильно определить это при вызове функции.Любая помощь будет оценена.