2016-11-08 4 views
1

나는 특성에 내가 (예를 들어 일반 수를) 집계를 수행하는 방법에 대한 관심이 오전 다음과 같은 속성이두 개의 열을 하나의 큐브로 만드는 방법?

'category', 'sub-category', age, city, education... (around 10 more) 

내가 그렇게 dataframes에게 큐브를 사용하여 그룹의 속성의 가능한 모든 조합에 관심 기능은 저를 달성하는 것을 도울 수있었습니다. 하위 범주 내가 큐브 (나이, 도시와 롤업 (카테고리, 하위 범주)를 결합해야이를 달성하기 위해, 그래서 카테고리없이 이해가되지 않습니다 : 여기

그러나

는 캐치입니다. 교육...).

어떻게 하시겠습니까?

val data = sqlContext.sql("select category,'sub-category',age from test group by cube(rollup(category,'sub-category'), age)") 

이것이 내가 오류입니다 :

org.apache.spark.sql이 테스트 내 테이블의 이름입니다 내가 뭘하려

. AnalysisException : 표현식 '테스트. category '은 그룹에 존재하지 않으며 집계 함수도 아닙니다. 그룹별로 추가 하시거나 어떤 가치를 가지지 않으시면 first() (또는 first_value)로 싸십시오.;

+0

예제 데이터, 시도한 코드 및 예상 출력을 공유하여 재현 가능한 예를 제공해주십시오. – mtoto

+0

@Srdjan Nikitovic : 창 기능을 사용해 보셨습니까?이 기능이 도움이 될 수 있습니까? – Shankar

+0

@Shankar 어떻게 창 함수가 이걸로 나를 도울 수있는 방법을 볼 수 없어 ... –

답변

0

난 당신이 하나로 두 개의 열을 결합에 cube에 사용 struct 또는 expr 기능입니다 원하는 생각 . 다음과 같이 struct

는 것 : 단지 추측 즉, 그것은 "순수"SQL을 사용하는 것만 큼 간단

df.rollup(struct("category", "sub-category") as "(cat,sub)") 

expr으로

df.rollup(expr("(category, 'sub-category')") as "(cat,sub)") 

을하지만 난 ..

관련 문제