본문 바로가기

SQL - Mysql & Oracle/SQL 실무에 적용하기

Python과 Bigquery 1분만에 연동하기

반응형

파이썬과 Biquery를 연동하는 방법은 크게 두 가지가 있다. 하나는 pandas의 read_gbq 함수이고, 두번째는 client 패키지를 이용하는 것이다.

 

목차

1. Google Cloud PlatformConsole 기본 준비하기

2. Pandas의 read_gbq 방법으로 통해 연동하기

3. bigquery의 client 함수를 통해 연동하기

 

     

    1. Google Cloud Platform 기본 준비하기

     

    이번 포스팅은 Google Cloud Console에 자기의 프로젝트가 준비가 되어있어야 한다. 프로젝트 기본 설정하는 방법은 이전 포스팅인 "Big Query로 SQL 마스터 - 1. 프로젝트 설정하기"에 있으니 참고하길 바란다. 

     

    다음에 준비해야 하는 것은 서비스 계정 생성 및 JSON 파일을 출하는 작업을 진행해야 한다. 

    • 서비스 계정 만들기
      • 메뉴 경로: 메인 메뉴 → API 및 서비스 → 사용자 인증 정보 → 서비스 계정
      • 서비스 계정 세부 정보에서는 간단하게 자신의 이메일 정보를 입력하면 쉽게 만들 수 있다. 
    • 키에서 Json 파일 추출하기
      • 서비스 계정 관리에서 작업 → 키 관리를 클릭한다.
      • 새로운 키를 만들 때는 키 유형은 JSON으로 만들고 다운로드해야 한다.

     

     

     

    2. Pandas의 read_gbq 방법으로 통해 연동하기

     

    • 코드 주석 설명
      • Part1. 필요한 패키지 설정해주기
        • 패키지가 설치가 되어있지 않다면, 콘솔로 이동하여 pip install {{package}}를 통해서 준비를 하면 된다.
      • Part2. Bigquery에 날릴 Query 작성해주기
      • Part3. 키 - Json 파일의 업로드
        • 이것이 있어야 빅쿼리에서 접근권한을 열어준다. 이 파일은 외부에 공개되면 안 되기 때문에 사용에 주의가 필요하다. 
      • Part3. read_gbq를 사용해서 데이터셋 불러오기
        • 여기에서 반드시 들어가야 할 파라미터는 query, project_id 그리고 credentials 정보이다. 

    참고로 Query를 짤 때 조심해야 할 것은 Python의 램 성능에 따라 데리고 올 수 있는 사이즈가 천차만별로 달라진다. 하나의 데이터셋이 너무 무겁다면, SQL에서는 문제가 없으나 파이썬 인스턴스가 터질 수도 있으니 주의하길 바란다. 

     

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
     
    ## Part1. 필요한 패키지 모음
    import numpy as np
    import pandas as pd
    from google.oauth2 import service_account
     
    from google.cloud import bigquery
    import pydata_google_auth
     
     
     
     
    ## Part2. Query Information
    query1 = '''
        select a.*
        FROM `my_project.my_dataset.t_ga_sample` as a
        limit 10
    '''
     
    ## Part3. 키에서 자신의 권한 정보 업로드해주기
    credentials = service_account.Credentials.from_service_account_file('경로\\키_정보.json')

    ## Pandas Read Google Bigquery 함수 사용
    df = pd.read_gbq(query=query1, project_id = 'my_project_id', credentials=credentials, dialect='standard')
    cs

     

     

     

     

     

    3. bigquery의 client 함수를 통해 연동하기

     

    • 코드 주석 설명
      • client 함수를 통해서 연동하는 방법도 크게 다르지는 않다. 다만 마지막에 데이터 프레임 형태로 변환해줘야 하는 작업이 반드시 필요하다. 
    1
    2
    3
    4
    5
    6
    7
    8
    9
     
    ## 키 정보 입력하기
    credentials = service_account.Credentials.from_service_account_file('경로\\키_정보.json')
     
    ## client를 사용한 연동 방법
    client = bigquery.Client(project = 'my_project_id' , credentials = credentials) 
     
    ## 데이터셋 
    df = client.query(query1).to_dataframe()
    cs

     

     

    이 모든 과정을 마무리하게 되면 주피터 노트북에서 자유롭게 SQL 데이터를 정제하고 분석할 수 있다. 

     

     

    반응형