[Bigquery] 파티션 테이블을 동적으로 변경하는 방법
의 목적
Bigquery에서 만든 파티션 테이블을 동적으로 변경하려고 합니다.
Bigquery에 등록된 파티션 테이블 이름 끝에 있는 엔터프라이즈 ID를 변수화하여 Bigquery의 동적 SQL에 임의의 엔터프라이즈 점포 분류를 표시합니다.
전제 조건
● GCP 계정 연결 및 파티션 테이블 생성
• 어느 정도 스타 모델, 파티션 테이블의 상태를 파악
・지역 이용 US
/(BI 도구 metabse를 사용하여 표시)
독자 대상
프로그래밍 초보자
· SQL 초보자
• 빅query 초보자
파티션 테이블 구조
데이터 소프트웨어 하우스(DWH)의 표 구조로 일반적인 스타크래프트 모드로 제작됐다.간단하게 말하면 관계 데이터베이스(RDB)와 같은 중간 테이블이나 세부 테이블을 만들지 않는다 = 너무 많은 테이블 구조를 분해하지 않는다.
위의 첨부 파일 이미지에서 store마스터라는 테이블과salse 입니다.results_company_xx 단위로 만든 표에서 만든 시간마다 구분표를 만듭니다.xx 1, 2, 3 등companyID가 있습니다.
이거 컴퍼니.목적은 동적 변경 id!
참고로 빅query에서 가장 불안한 요소는 유료이지만 구역과 집합이라는 특유의 구조가 있어 참조된 데이터량을 억제할 수 있다.이번에는 크리에이트.데이터에 따라 섹션 테이블을 만들고 있습니다.
※ 초보자이기 때문에 처음에는 동적, 정적 의미를 잘 몰랐지만 사용자별로 다른 페이지를 전환하고 싶을 때는 동적, 모든 사용자가 공통적으로 사용하는 페이지가 정적이어서 이런 표현이 가장 적합합니다...
실제 조회
Language: SQL
DECLARE company_id INT64 DEFAULT 38;
EXECUTE IMMEDIATE format("""
SELECT
sales_results
, look_ahead_sales_results
FROM `sample-data`.test.sales_results_company_%d as src
LEFT JOIN `sample-data`.test.store_master as sm on sm.store_key = src.store_key
WHERE sm.store_id = 445 and
_PARTITIONTIME >= DATE_SUB(DATE_TRUNC(CURRENT_TIMESTAMP, DAY), INTERVAL 1 DAY)
""", company_id);
해설
DECLARE company_id INT64 DEFAULT 38;
DECLARE 지정 유형의 변수 선언을 실행합니다.conpany_id (변수) = 38 (수치형) 을 지정합니다.EXECUTE IMMEDIATE format(""" select文 """, company_id)
동적 SQL 구문을 실행합니다.format에 작성된 질의문은 STRING 형식으로 포맷됩니다.여기서%d=숫자형,%s=문자열 등의 매개변수를 지정할 수 있습니다.format의 첫 번째 매개변수에 DECLARE 변수를 대입합니다.'sample-data'.test.sales_results_company_%d as src
format 매개 변수를 대입하는 데%d를 사용합니다.프로젝트 이름입니다.데이터 세트 이름입니다.표 이름으로 호출하다._PARTITIONTIME >= DATE_SUB(DATE_TRUNC(CURRENT_TIMESTAMP, DAY), INTERVAL 1 DAY)
구역을 나누는 시간은 데이터를 만들 때마다 진행된다.CURRENT_TIMESTAMP = 2022-03-16 15:00:01
시 상술한 결과는 2022-03-15 00:00:00 UTC
로 어제의 수치를 나타냈다.metabase에서 사용하는 검색어 문장
Language: SQL
DECLARE company_id INT64 DEFAULT {{company_id}};
EXECUTE IMMEDIATE format("""
SELECT
sales_results
, look_ahead_sales_results
FROM `sample-data`.test.sales_results_company_%d as src
LEFT JOIN `sample-data`.test.store_master as sm on sm.store_key = src.store_key
WHERE sm.store_id = {{store_id}} and
_PARTITIONTIME >= DATE_SUB(DATE_TRUNC(CURRENT_TIMESTAMP, DAY), INTERVAL 1 DAY)
""", company_id);
메타베이스에 있는 변수는 {{}로 묶어서 지정할 수 있습니다.이 때 companyid、store_id는 메타베이스 측면의 필터를 통해 변수를 대입합니다.총결산
빅query가 동적 SQL을 쓸 때는 일본어 기사가 적어 기록을 남겼다.MySQL 위주로 자주 작업하기 때문에 빅query 특유의 쓰기 방식에 적응하기 위해 시간이 좀 걸렸다.다만, 그곳은 역시 구글답게 공식 페이지도 충실해 목적지를 찾을 수 있다면 문제없다.
적당히 지적해 주셨으면 좋겠어요!
문장을 인용하다
・사용자를 웃게 하는 BigQuery의 사용이 편리한 SQL의 새로운 기능
・스크립트 문
・FORMAT
・스타크래프트 모드(기본)
Reference
이 문제에 관하여([Bigquery] 파티션 테이블을 동적으로 변경하는 방법), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://zenn.dev/eugenenzv8/articles/a5e91aafe274e9텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)