> 데이터 베이스 > MySQL 튜토리얼 > 기본 피벗 기능 없이 BigQuery에서 행을 열로 피벗하는 방법은 무엇인가요?

기본 피벗 기능 없이 BigQuery에서 행을 열로 피벗하는 방법은 무엇인가요?

Barbara Streisand
풀어 주다: 2025-01-03 14:34:40
원래의
774명이 탐색했습니다.

How to Pivot Rows into Columns in BigQuery Without Native Pivot Functionality?

BigQuery에서 행을 열로 바꾸기(피벗 구현)

이 BigQuery 튜토리얼에서는 데이터 변환에 대한 일반적인 요구 사항을 해결하는 것을 목표로 합니다. 키-값 쌍을 유지하면서 행을 열로 변환합니다. 피보팅(pivoting)이라고 알려진 이 기술은 데이터 분석 및 보고에 널리 사용됩니다. 그러나 기본적으로 피벗 작업을 지원하는 기존 데이터베이스 시스템과 달리 BigQuery에는 현재 이 기능이 없습니다.

추가 그룹화 열을 사용한 피벗

이러한 한계를 극복하기 위해 우리는 출력에서 단일 행으로 병합되어야 하는 행을 그룹화하는 역할을 하는 입력 데이터의 추가 열과 관련된 해결 솔루션입니다. 접근 방식은 다음과 같습니다.

1단계: 피벗 쿼리 구성

실제 피벗 쿼리를 생성할 쿼리를 작성하는 것부터 시작합니다. 이 쿼리는 입력 데이터 세트를 기반으로 피벗 작업을 수행하는 데 필요한 코드를 동적으로 구성합니다.

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
) 
로그인 후 복사

이 쿼리는 입력 데이터의 모든 고유 키 값을 식별하고 별도의 쿼리로 실행될 때 문자열을 생성합니다. , 피벗 작업을 수행합니다.

2단계: 생성된 피벗 실행 쿼리

첫 번째 쿼리의 결과는 실제 피벗 쿼리를 정의하는 문자열입니다. 이 문자열을 복사하여 일반 BigQuery 쿼리로 실행하기만 하면 됩니다. 결과는 키가 열 이름이고 값이 열 값인 전치된 데이터 세트입니다.

입력 및 출력 예

다음 입력 테이블을 고려하세요.

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

피벗된 데이터세트 결과는 다음과 같습니다.

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

제한 사항 및 대안

이 접근 방식은 피벗 동작을 효과적으로 모방하지만 제한 사항이 있습니다. 특히 BigQuery는 테이블당 열 수를 10,000개로 제한하므로 고유 키가 많은 대규모 데이터 세트의 피버팅을 방해할 수 있습니다. 이러한 시나리오에서는 Python 또는 R을 사용하는 외부 피버팅이나 기본적으로 피버팅을 지원하는 데이터베이스 시스템과 함께 통합 쿼리 접근 방식을 사용하는 등의 대체 솔루션을 고려해 보세요.

위 내용은 기본 피벗 기능 없이 BigQuery에서 행을 열로 피벗하는 방법은 무엇인가요?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

원천:php.cn
본 웹사이트의 성명
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.
저자별 최신 기사
인기 튜토리얼
더>
최신 다운로드
더>
웹 효과
웹사이트 소스 코드
웹사이트 자료
프론트엔드 템플릿