我有一个具有以下数据类型的pyspark DataFrame:
print(df.dtypes)
[('TransactionDate', 'timestamp'), ('GroupByFld', 'int'), ('Amount', 'double'),
('AdjustedTransactionDate', 'date')]
我想做的等同于
select min('AdjustedTransactionDate'),max('AdjustedTransactionDate'), GroupByFld, sum('Amount')
我以为我可以使用Pyspark的dataframe api,甚至可以做一些简单的事情,例如:
df.select(min("AdjustedTransactionDate"))
给我错误:
org.apache.spark.sql.AnalysisException:在给定的输入列中无法解析“
A
”:[TransactionDate,GroupByFld,Amount,AdjustedTransactionDate];
更新:
我最终做了:
import pyspark.sql.functions as fn
df.groupBy('GroupByFld').agg(fn.min('adjTransactionDate').alias('MinTransactionDate'),fn.max('AdjTransactionDate').alias('MaxTransactionDate'),fn.sum('Amount').alias('Amount')).show()
答案 0 :(得分:1)
您需要先groupBy
,然后agg
,而不是select
。
df.groupBy('GroupByFld')\
.agg(min('AdjustedTransactionDate'),
max('AdjustedTransactionDate'),
sum('Amount'))
应该做你想要的。