BigQuery ↔ Pandas 간 읽기/쓰기

소개



BigQuery 클라이언트 라이브러리 google-cloud-bigquery그 래퍼의 pandas-gbq 를 사용하는 방법을 씁니다.

※ Google은 google-cloud-bigquery 를 사용하고 싶다.
h tps : // c ぉ d. 오, ぇ. 코 m/비g 쿠에 ry/도cs/판다 s-gbq-미g라치온? hl = 그럼

환경


  • MacOS X 10.14.5 (Mojave)
  • Homebrew 2.2.5
  • Google Cloud SDK 281.0.0
  • bq 2.0.53

  • GCP 계정 등록



    【이미지로 설명】 Google Cloud Platform (GCP) 무료 평가판으로 계정 등록

    Google Cloud SDK 설치



    Google Cloud SDK 설치 ~ 초기화

    프로젝트 만들기



    Google Cloud SDK로 프로젝트 만들기

    서비스 계정 / 서비스 계정 키 만들기



    Python에서 GCS에 액세스할 수 있도록 서비스 계정/서비스 계정 키를 만듭니다.

    서비스 계정 생성


    gcloud iam service-accounts create サービスアカウントネーム \
                                       --display-name サービスアカウントディスプレイネーム \
    



    지금 프로젝트에 연결되어 있는 권한 확인


    gcloud projects get-iam-policy mypj-id
    
    # bindings:
    # - members:
    #   - user:[email protected]
    #   role: roles/owner
    # etag: BwWeTrntoao=
    # version: 1
    

    서비스 계정에 권한 부여



    BigQuery 관리자 권한 부여
    gcloud projects add-iam-policy-binding プロジェクトID \
    --member serviceAccount:サービスアカウントネーム@プロジェクトID.iam.gserviceaccount.com \
    --role roles/bigquery.admin
    



    role 목록



    다시 권한 확인


    gcloud projects get-iam-policy mypj-id
    
    # bindings:
    # - members:
    #   - user:[email protected]
    #   role: roles/owner
    # - members:
    #   - serviceAccount:[email protected]
    #   role: roles/bigquery.admin
    # etag: BwWeTz6vIBY=
    # version: 1
    

    서비스 계정 키 생성


    $ gcloud iam service-accounts keys create ./anata_no_key.json \
    --iam-account サービスアカウントネーム@プロジェクトID.iam.gserviceaccount.com
    

    디렉토리 구성


    .
    ├── anata_no_key.json
    └── working/
            └── main.py
    

    google-cloud-bigquery를 사용하는 경우


    google-cloud-bigquery를 pip로 설치
    $ pip install google-cloud-bigquery
    

    쿼리 결과를 DataFrame에서 가져오기



    main.py
    import os
    
    from google.cloud import bigquery
    from IPython.display import display
    
    
    # 自ファイルのディレクトリを取得
    cwd = os.path.dirname(os.path.abspath(__file__))
    # 環境変数に設定
    key_path = '{}/../credentials.json'.format(cwd)
    os.environ['GOOGLE_APPLICATION_CREDENTIALS'] = key_path
    
    project_id = 'project_id'
    dataset_id = 'dataset_id'
    table_id = 'table_id'
    
    client = bigquery.Client(project=project_id)
    
    sql = f"""
    select col1, col2, col3
    from {dataset_id}.{table_id}
    limit 100
    """
    
    df = client.query(sql).to_dataframe()
    display(df)
    

    pandas-gbq를 사용하는 경우


    pandas-gbq를 pip로 설치
    $ pip install pandas-gbq
    

    쿼리 결과를 DataFrame에서 가져오기


    import pandas as pd
    
    
    # BigQueryからDataFrame形式でロード
    project_id = 'project_id'
    dataset_id = 'dataset_id'
    table_id = 'table_id'
    query = f"""
    SELECT *
    FROM {dataset_id}.{table_id}
    LIMIT 10
    """
    
    # dialect='standard' で標準SQLを使用
    df = pd.read_gbq(query, project_id, dialect='standard')
    display(df)
    

    DataFrame을 BigQuery의 테이블에 씁니다.


    import pandas as pd
    
    
    # DataFrameをBigQueryへインポート
    df = pd.read_csv('path/to/dir/file.csv')
    dataset_id = 'dataset_id'
    table_id = 'table_id'
    df.to_gbq(f'{dataset_id}.{table_id}')
    

    좋은 웹페이지 즐겨찾기