[SQL] 방법 pyspark를 사용하여 일부 필드로 그룹화 된 데이터 집합 주어진에서 최대 (날짜)를 얻으려면?
SQL방법 pyspark를 사용하여 일부 필드로 그룹화 된 데이터 집합 주어진에서 최대 (날짜)를 얻으려면?
나는 아래로 dataframe의 데이터를 가지고 :
datetime | userId | memberId | value |
2016-04-06 16:36:... | 1234 | 111 | 1
2016-04-06 17:35:... | 1234 | 222 | 5
2016-04-06 17:50:... | 1234 | 111 | 8
2016-04-06 18:36:... | 1234 | 222 | 9
2016-04-05 16:36:... | 4567 | 111 | 1
2016-04-06 17:35:... | 4567 | 222 | 5
2016-04-06 18:50:... | 4567 | 111 | 8
2016-04-06 19:36:... | 4567 | 222 | 9
나는 최대 (날짜) GROUPBY 사용자 ID, MEMBERID을 찾아야합니다. 때 나는 다음과 같이 시도 :
df2 = df.groupBy('userId','memberId').max('datetime')
나는 오류로 받고 있어요 :
org.apache.spark.sql.AnalysisException: "datetime" is not a numeric
column. Aggregation function can only be applied on a numeric column.;
I는 다음과 같이 원하는 출력은 :
userId | memberId | datetime
1234 | 111 | 2016-04-06 17:50:...
1234 | 222 | 2016-04-06 18:36:...
4567 | 111 | 2016-04-06 18:50:...
4567 | 222 | 2016-04-06 19:36:...
내가 PySpark의 dataframes를 사용하여 주어진 데이터 중 최대 날짜를 얼마나 사람이 도움을 저를 기쁘게 할 수 있습니까?
해결법
-
==============================
1.숫자가 아닌하지만 주문 가능한 유형의 당신은 최대 직접적으로 AGG 사용할 수 있습니다 :
숫자가 아닌하지만 주문 가능한 유형의 당신은 최대 직접적으로 AGG 사용할 수 있습니다 :
from pyspark.sql.functions import col, max as max_ df = sc.parallelize([ ("2016-04-06 16:36", 1234, 111, 1), ("2016-04-06 17:35", 1234, 111, 5), ]).toDF(["datetime", "userId", "memberId", "value"]) (df.withColumn("datetime", col("datetime").cast("timestamp")) .groupBy("userId", "memberId") .agg(max_("datetime"))) ## +------+--------+--------------------+ ## |userId|memberId| max(datetime)| ## +------+--------+--------------------+ ## | 1234| 111|2016-04-06 17:35:...| ## +------+--------+--------------------+
from https://stackoverflow.com/questions/38377894/how-to-get-maxdate-from-given-set-of-data-grouped-by-some-fields-using-pyspark by cc-by-sa and MIT license
'SQL' 카테고리의 다른 글
[SQL] 다른 데이터베이스에서 테이블에 외래 키 (0) | 2020.07.12 |
---|---|
[SQL] 가중 행 확률로 PostgreSQL의 테이블에서 임의의 행을 선택 (0) | 2020.07.12 |
[SQL] SQL 스왑 기본 키 값 (0) | 2020.07.12 |
[SQL] 삽입 날짜에 대한 기본 GETDATE (0) | 2020.07.12 |
[SQL] 단일 삽입 문에 삽입 할 수 SQL 서버 최대 행 (0) | 2020.07.12 |