BigQuery에서 쿼리 실행(쿼리 요금 청구) 프로젝트 아이디어

5469 단어 gcpBigQuery
이 기사는 "Google Cloud Platform Advent Calendar 2020"의 8일째 기사입니다.

소개



BigQuery를 사용하기 시작한 사람들로부터 자주 쿼리 결제 질문을 받을 수 있습니다.
이번에는 쿼리 과금에 대한 생각을 정리해 보았습니다.

BigQuery 요금(스토리지 요금, 쿼리 요금)의 아이디어는 다음과 같습니다.
  • BigQuery는 데이터를 저장할 때 '저장된 데이터의 양'을 기준으로 청구됩니다.
  • BigQuery는 쿼리를 실행할 때 '처리된 바이트 수'를 기준으로 청구됩니다.

  • 공식 문서 요금 페이지
    htps : // c ぉ d. 오, ぇ. 코 m / 비 g 쿠에 ry / p 리신 g

    데이터를 포함하는 프로젝트와 쿼리를 실행하는 프로젝트가 동일하다면, 둘 다 동일한 프로젝트에 요금이 부과되므로 이해하기 쉽습니다.

    그러면 한 프로젝트에 있는 데이터를 다른 부서나 타사에 공유하거나 공유하여 해당 데이터에 대해 쿼리를 실행한 경우에는 어떻게 됩니까?

    결론은 쿼리를 실행한 프로젝트에 따라 달라집니다. 처음 작성한 쿼리 수수료 설명에 추가하면 다음과 같습니다.
  • BigQuery는 쿼리를 실행할 때 "처리된 바이트 수"를 기반으로 쿼리를 실행한 프로젝트에 청구됩니다.

  • 이미지 다이어그램





    쿼리를 실행하는 프로젝트를 구분하는 방법과 전환하는 방법



    BigQuery 콘솔 화면



    현재 프로젝트가 쿼리를 실행하는 프로젝트가 됩니다.

    현재 PREVIEW의 새로운 UI에서도 마찬가지입니다.


    프로젝트를 전환하려면 프로젝트 풀다운에서 다른 프로젝트를 선택합니다.

    bq 명령


    # プロジェクトが定まらない場合は、クエリが実行できない。
    $ bq query --use_legacy_sql=false 'SELECT * FROM `sandbox-suzutatsu-bq.test.sample1_20190103`'
    BigQuery error in query operation: Cannot start a job without a project id.
    
    # --project_id でプロジェクトを指定していたら、そのプロジェクトでクエリを実行する。
    $ bq query --use_legacy_sql=false --project_id=sandbox-suzutatsu-bill 'SELECT * FROM `sandbox-suzutatsu-bq.test.sample1_20190103`'
    BigQuery error in query operation: Access Denied: Project sandbox-suzutatsu-bill: User does not have bigquery.jobs.create permission in project
    sandbox-suzutatsu-bill.
    
    # gcloud config set project でプロジェクトを指定していたら、--project_id が無くてもそのプロジェクトでクエリを実行する。
    $ gcloud config set project sandbox-suzutatsu-bill
    $ bq query --use_legacy_sql=false 'SELECT * FROM `sandbox-suzutatsu-bq.test.sample1_20190103`'
    BigQuery error in query operation: Access Denied: Project sandbox-suzutatsu-bill: User does not have bigquery.jobs.create permission in project
    sandbox-suzutatsu-bill.
    
    
    # あくまでデフォルトのプロジェクトを指定するだけなので、--project_id も指定していたら、そちらが優先される。
    $ gcloud config set project sandbox-suzutatsu-bill
    $ bq query --use_legacy_sql=false --project_id=sandbox-suzutatsu-bill2 'SELECT * FROM `sandbox-suzutatsu-bq.test.sample1_20190103`'
    BigQuery error in query operation: Access Denied: Project sandbox-suzutatsu-bill2: User does not have bigquery.jobs.create permission in project
    sandbox-suzutatsu-bill2.
    

    ※어떤 프로젝트에서 쿼리를 실행했는지 알 수 있도록 위에서는 의도적으로 해당 프로젝트에서 쿼리를 실행할 권한 bigquery.jobs.create를 제외하고 있습니다.

    프로젝트를 전환하려면 bq 명령으로 --project_id를 지정하거나 gcloud config set project에서 gcloud 명령의 기본값 설정을 변경합니다.

    데이터 포털



    데이터 소스를 만들 때 지정합니다.

    내 프로젝트의 경우



    결제 프로젝트를 지정할 곳이 없습니다.
    선택한 프로젝트가 쿼리를 실행하는 프로젝트가 됩니다.


    공유 프로젝트의 경우



    결제 프로젝트를 지정하는 설정이 있습니다.
    여기에서 선택한 프로젝트가 쿼리를 실행하는 프로젝트가 됩니다.


    맞춤 검색어의 경우



    결제 프로젝트를 지정하는 설정이 있습니다.
    고급 옵션에는 결제 프로젝트 ID를 재정의하는 필드가 있습니다. (편리함을 모르기 때문에 누군가를 가르쳐주세요)

    프로젝트를 전환하려면 데이터 소스 편집 화면의 결제 프로젝트에서 다른 프로젝트를 선택합니다.

    결론



    이번에는 쿼리 요금의 관점이었지만 쿼리를 실행하는 프로젝트는 쿼리 실행 권한과 관련된 이야기입니다.
    예상하지 않은 결제가 발생했을뿐만 아니라 쿼리 실행 권한 오류가 발생했을 때 쿼리를 실행하는 프로젝트가 무엇인지 확인하십시오.

    좋은 웹페이지 즐겨찾기