[SQL] BigQuery에 열로 트랜스 행 (피벗 구현)
SQLBigQuery에 열로 트랜스 행 (피벗 구현)
나는 새 테이블을 생성하고 BigQuery에를 사용하여 각각의 값으로 열 이름과 값으로 키를 사용하여 모든 키 값 쌍을 배치 할.
예:
**Key** **Value**
channel_title Mahendra Guru
youtube_id ugEGMG4-MdA
channel_id UCiDKcjKocimAO1tV
examId 72975611-4a5e-11e5
postId 1189e340-b08f
channel_title Ab Live
youtube_id 3TNbtTwLY0U
channel_id UCODeKM_D6JLf8jJt
examId 72975611-4a5e-11e5
postId 0c3e6590-afeb
나는 그것을 변환 할 :
**channel_title youtube_id channel_id examId postId**
Mahendra Guru ugEGMG4-MdA UCiDKcjKocimAO1tV 72975611-4a5e-11e5 1189e340-b08f
Ab Live 3TNbtTwLY0U UCODeKM_D6JLf8jJt 72975611-4a5e-11e5 0c3e6590-afeb
방법의 BigQuery를 사용하여 할까?
해결법
-
==============================
1.BigQuery를 아직 피벗 기능을 지원하지 않습니다 당신은 여전히 접근 아래 사용 BigQuery에서이 작업을 수행 할 수 있습니다
BigQuery를 아직 피벗 기능을 지원하지 않습니다 당신은 여전히 접근 아래 사용 BigQuery에서이 작업을 수행 할 수 있습니다
하지만 먼저, 입력 데이터의 두 열뿐만 아니라 당신이 필요 출력의 한 행에 결합 할 수 있음을 입력의 행 그룹을 지정합니다 하나 더 열이 있어야합니다
그래서, 나는 당신의 입력 테이블 (yourTable는) 다음과 같은 가정
**id** **Key** **Value** 1 channel_title Mahendra Guru 1 youtube_id ugEGMG4-MdA 1 channel_id UCiDKcjKocimAO1tV 1 examId 72975611-4a5e-11e5 1 postId 1189e340-b08f 2 channel_title Ab Live 2 youtube_id 3TNbtTwLY0U 2 channel_id UCODeKM_D6JLf8jJt 2 examId 72975611-4a5e-11e5 2 postId 0c3e6590-afeb
그래서, 먼저 쿼리 아래 실행해야
SELECT 'SELECT id, ' + GROUP_CONCAT_UNQUOTED( 'MAX(IF(key = "' + key + '", value, NULL)) as [' + key + ']' ) + ' FROM yourTable GROUP BY id ORDER BY id' FROM ( SELECT key FROM yourTable GROUP BY key ORDER BY key )
위의 쿼리의 결과 (형식 경우)는 다음과 같이됩니다 문자열입니다
SELECT id, MAX(IF(key = "channel_id", value, NULL)) AS [channel_id], MAX(IF(key = "channel_title", value, NULL)) AS [channel_title], MAX(IF(key = "examId", value, NULL)) AS [examId], MAX(IF(key = "postId", value, NULL)) AS [postId], MAX(IF(key = "youtube_id", value, NULL)) AS [youtube_id] FROM yourTable GROUP BY id ORDER BY id
(당신이 정말로 포맷 할 필요가 없습니다 - 난 단지 제시를 위해 그것을했던 주)와 일반 쿼리로 실행 이제 결과를 복사한다
당신이 예상하는 것처럼 결과가 될 것입니다
id channel_id channel_title examId postId youtube_id 1 UCiDKcjKocimAO1tV Mahendra Guru 72975611-4a5e-11e5 1189e340-b08f ugEGMG4-MdA 2 UCODeKM_D6JLf8jJt Ab Live 72975611-4a5e-11e5 0c3e6590-afeb 3TNbtTwLY0U
참고 :이 또는 한 번 거래의 경우 자신과 작은 필드와 상수의 숫자 (2 단계)을 적절한 쿼리를 구성 할 수있는 경우 1 단계를 건너 뛸 수 있습니다. 그러나 단계는 빠른 언제든지 그것을 만들 수 있도록, 당신을 위해 그것을 만드는 1 단지 도우미 단계!
어떻게 BigQuery에서 피벗을 확장 할 수? 테이블 당 10K 열 한계가있다 - - 참고 사항은 10K 단체로 제한되도록. (한 자세한 / 너무 복잡 위의 경우) 당신은 또한 간단한 예로 아래를 참조 할 수 있습니다 : 어떻게 BigQuery에 / SQL에서 데이터 다량의 열과 행을 바꾸어 하는가? 어떻게 Google BigQuery에서 범주의 수천 더미 변수 열을 만드는 방법? BigQuery에서의 피벗 반복 필드
from https://stackoverflow.com/questions/40761453/transpose-rows-into-columns-in-bigquery-pivot-implementation by cc-by-sa and MIT license
'SQL' 카테고리의 다른 글
[SQL] SQL은 - 행에서 파괴 값을 빼면 (0) | 2020.04.05 |
---|---|
[SQL] 트리거는 SQL 영향을받는 테이블이 로그 만들기를? (0) | 2020.04.05 |
[SQL] 이유는 무엇입니까이 SQL 코드를주고 오류 1066 (안 독특한 테이블 / 별칭 : '사용자')? (0) | 2020.04.05 |
[SQL] 테이블 필드는 하이픈을 포함 할 수 있습니까? (0) | 2020.04.05 |
[SQL] 뷰에서 사용 변경 PostgreSQL의 열 (0) | 2020.04.05 |