BigQuery 11

[Big Query] Google Sheet 빅쿼리 연동하기. Google Sheet 데이터를 빅쿼리 테이블로 쿼리하는 방법.

빅쿼리에서는 빅쿼리 외부에 보관된 데이터에 대해 마치 테이블 처럼 쿼리를 실행할 수 있다. 그 중 Google Dirve에 보관된 Google Spread Sheet의 데이터를 쿼리해 보자.Google Spread Sheet를 바로 읽어들이기 때문에 Sheet 에서 데이터를 편집(추가,삭제,업데이트) 하면 실시간으로 반영된 데이터를 기준으로 쿼리할 수 있다.  1. 테이블을 만들고자하는 데이터 셋에 테이블 만들기   -  데이터셋 > 더보기> create table  2. 소스 설정 - 테이블 종류: 드라이브 선택 - 드라이브 URI : 테이블처럼 활용하고자 하는 Google Sheet URI 입력 - 파일 형식: Google 스트레드 시트 선택 - 시트 범위(optional): 시트가 여러개인 경우 시..

[Big Query] 빅쿼리 스케쥴링이란? (쿼리 자동실행 예약 방법 )

* 빅쿼리 스케쥴링이란 ?쿼리가 반복적으로 실행되도록 일정을 예약하는 기능.예약된 쿼리는 Google 표준 SQL로 작성되어야 하며 데이터 정의 언어(DDL) 및 데이터 조작 언어(DML) 문을 포함할 수 있다. 쿼리 문자열과 대상 테이블을 매개변수화하여 쿼리 결과를 날짜와 시간별로 구성할 수 있다.빅쿼리 콘솔에서 스케쥴링 기능을 제공하므로 간단히 작업이 가능하다. 쿼리 일정을 만들거나 업데이트하면 쿼리의 예약된 시간이 현지 시간에서 UTC로 변환되므로 KST > UTC 계산하여 등록해야한다.  1. 쿼리창에 원하는 쿼리 입력 후 상단의 SCHEDULE 클릭 * 일자별 샤드 테이블 스케쥴링인 경우쿼리 내 날짜 설정:- @run_date 를 사용하면 자동으로 시스템 날짜를 인식함. - DATE_SUB 를 ..

[Big Query] 빅쿼리 주요 데이터 타입

빅쿼리에서는 문자열이나 정수 등 단순한 데이터형 외에도 ARRAY, STRUCT 등 복잡한 데이터형 지원한다. 주요데이터 타입) 분류 데이터형 설명 정수형 INT64 정수인 숫자 부동소수점형 FLOAT64 소수가 있는 근삿값, 배정도 십진수 값 숫자형 NUMBER 38자리 정밀도와 소수점 9자리 비율을 사용하는 십진수 값 부울형 BOOL TRUE / FALSE로 표시(대소문자 구분 X) 문자열형 STRING 가변 길이 문자(Unicode) 데이터 바이트형 BYTES 가변 길이 문자 바이너리 데이터 날짜형 DATE YYYY-MM-DD 날짜/시간형 DATETIME YYYY-MM-DD hh:mm:ss Time zone이나 summer time 등 관습적인 것을 반영한 날짜/시간 시간형 TIME hh:mm:ss..

[Big Query] 샤드 테이블 전체 삭제하는 방법. DROP shard tables

빅쿼리에서 샤드 테이블 개념을 사용한다고 했다. 해서 날짜별로 스키마가 같은 테이블이 여러개 생성되게 되는데 그렇다면 테이블을 삭제해야하는 경우 어떻게 해야할까? * 샤드 테이블이란? https://cheershennah.tistory.com/296 [Big Query] 테이블 샤딩이란? Table Sharding. Data Sharding. 분산 컴퓨팀 환경 내 여러 노드 또는 서버에 대규모 데이터 세트를 수평으로 분할하고 배포하기 위해 빅데이터 시스템에 사용되는 주요기술. Dataset을 샤드(Shard)라고 하는 더 작고 관 cheershennah.tistory.com SQL 에서 테이블 삭제시 아래와 같이 DROP 문을 사용하는데 DROP TABLE [database_name.]table_name..

[Bigquery] Shard 테이블 날짜별 마이그레이션 (feat. 빅쿼리 절차적 언어_동적 SQL 만들기)

빅쿼리 샤드 테이블 마이그레이션 방법 정리 (feat. 빅쿼리 절차적 언어_동적 SQL 만들기.) 먼저 빅쿼리에서는 서브쿼리를 많이 사용하는 쿼리는 실행할때마다 모든 쿼리에대해 요금이 발생한다. 가능하면 서브쿼리의 필요한 부분을 select 한뒤 별도 테이블로 만들어주고 해당 테이블에 대해 메인 쿼리를 실행하는 방법으로 실행할 때 마다 대용량의 요금이 발생하는 것을 지양할 수 있다. 단, 빅쿼리는 테이블을 날짜별로 나누는 샤드 테이블 형태를 사용하기 때문에 이 형태를 그대로 사용하고 싶다면 별도 테이블 또한 날짜별로 쌓아야 한다. 미래 날짜의 경우 빅쿼리 스튜디오에서 제공하는 스케쥴러를 통해서 어렵지 않게 가능하지만 과거의 날짜로는 스케쥴링이 불가하다. 예를 들어 1년치의 데이터가 필요한 경우라면, 1년..

[Big Query] 테이블 샤딩이란? Table Sharding.

Data Sharding. 분산 컴퓨팀 환경 내 여러 노드 또는 서버에 대규모 데이터 세트를 수평으로 분할하고 배포하기 위해 빅데이터 시스템에 사용되는 주요기술. Dataset을 샤드(Shard)라고 하는 더 작고 관리하기 쉬운 조각으로 나누어 데이터 관리, 확장성 및 성능 향상을 목표로 함. 데이터 샤딩을 사용하는 이유? 데이터 배포 및 병렬처리 향상. 빅쿼리는 위와같이 일별로 분할된 테이블을 생성한다. 이를 테이블 샤딩이라고(Table Sharding) 하며 이러한 방식은 쿼리 속도를 높이고, 데이터 중복을 방지하며, 테이블 그룹관리를 위한 유연한 옵션을 제공함. 테이블 샤딩 장점 샤딩은 쿼리의 각 날짜에 자체 테이블이 존재하므로 하루의 데이터가 중복되는 것을 방지함. 세트의 모든 테이블은 동일한 테..

[Big Query] 빅쿼리 _ 컬럼 지향 스토리지란? Columnar Storage

일반적으로 전통적인 관계형 DBMS 의 스토리지 방식은 로우(ROW, 행) 지향 스토리지 방식으로 동작한다. 실무에서 빅쿼리를 접하게 되면서 빅쿼리가 빅데이터에 적합하게 만들어진 데이터베이스라는 건 알고 있었지만 여타 다른 SQL 문과 거의 동일한 방식의 쿼리를 사용할 수 있기 때문에 당연히 같은 방식으로 동작할거라는 편견을 나도 모르게 갖고 있던 터라 삽질을 하던 과정에서 빅쿼리는 통상적인 로우 지향이 아닌 컬럼 지향 스토리지 방식으로 동작한다는 사실을 알게되어 학습/기록한다. 컬럼 지향 스토리지 형식 빅쿼리는 완전 관리형 스토리지를 제공. 사용되는 빅쿼리 스토리지 크기는 자동 조절되며 과금은 사용한 만큼만 부과. 컬럼지향 스토리지에 담긴 데이터를 사용하여 대규모 데이터 분석 수행하도록 설계됨. Pos..

[Big Query] 빅쿼리 SELECT 결과 데이터로 새 테이블 만들기.

빅쿼리에서 대부분 대용량 데이터를 다룬다. 특히 기본적으로 빅쿼리는 NEST방식으로 데이터를 저장하기 때문에 배열 형식의 데이터는 UNNEST 함수를 써야만 하기 때문에 여간 번거로운게 아니다. 참고 포스팅) https://cheershennah.tistory.com/244 BigQuery 빅쿼리란? BigQuery 빅쿼리란? 빅쿼리는 구글에서 만든 클라우드용 데이터웨어하우스(DW)로, 빅데이터에 최적회된 저장 및 분석용 클라우드 서비스이다. 빅쿼리의 구조는 관계형이 아닌 NoSQL기반의 데이터 저 cheershennah.tistory.com 전체 데이터가 아닌 일부 데이터 결과만을 데이터 풀로 보고자 할 때 SELECT 한 결과를 별도의 하나의 테이블로 만들어 사용할 수 있다. 여기서는 CSV로 로컬에..

[GA-Bigquery] 내 블로그에 누가 다녀갔을까? 주간 방문 데이터 분석

블로그를 개설한지 2018년부터 현재까지 운영중이고 초라했던 개인 기록용 블로그에서 현재 일평균 약 1500 정도의 기술블로그로 성장하였다. 티스토리에서 블로그를 운영하면 통계를 분석해주는데 항상 통계로 보여지는 방문자들의 데이터의 흐름이 신기하고 궁금했다. 구글 애널리틱스 GA4와 블로그를 연동하여 데이터를 쌓고, GA4와 BigQuery와 연동을 하면 데이터를 조작할 수 있다. 평소 궁금했던 블로그 방문에 대한 데이터를 직접 분석해려고 한다. 연동하기만 하면 쌓여있는 모든 데이터들을 다 볼 수 있는지 알았는데, 그건 아니고 연동한 시점부터 데이터를 쌓기 시작하여 이후 수집 데이터들을 다룰 수 있다. 때문에 해당 포스팅에서는 12/19일-25일, 즉 1주일 간 쌓인 데이터들을 대상으로 한다. 데이터 구..

Data Analytics 2023.01.18

[빅쿼리] ARRAY / STRUCT / UNNEST. 정체가 무엇이냐??

BigQuery는 SQL을 제공하기 때문에 기존의 SQL과 같이 질의할 수 있어 접근성이 쉽다. 하지만, 우리에게 익숙한 RDB의 데이터 구조와 완전히 동일하지는 않다. 자주보기 힘든 배열 ARRAY, 구조체 STRUCT, UNNEST 등의 문법을 사용하기 때문이다. 예를 들어 우리에게 익숙한 RDB의 데이터 구조가 다음과 같다면, ARRAY, STRUCT, UNNEST 문법이 사용된 데이터 구조는 다음과 같다. 딱 봐도 하나의 행에 하나의 데이터 값이 저장되는 구조의 테이블과 다른 모습이 어색하다. event_name 컬럼 까지는 하나의 데이터가 있지만 event_params.key 부터는 하나의 행에 데이터 타입이 동일한 여러값이 저장되어 있다. 이러한 형태가 배열 ARRAY 문법이다. 또하나 어색한..