서비스 계정을 사용하여 기본 BigQuery 테이블에서 데이터를 가져올 수 있습니다.서비스 계정을 사용하여 API를 통해 BigQuery의 Google 스프레드 시트 기반 테이블에서 데이터 쿼리
그러나 동일한 서비스 계정을 사용하는 BigQuery의 Google 스프레드 시트 기반 테이블에서 select
을 (를) 시도 할 때 오류가 발생했습니다.
from google.cloud import bigquery
client = bigquery.Client.from_service_account_json(
json_credentials_path='creds.json',
project='xxx',
)
# this works fine
print('test basic query: select 1')
job = client.run_sync_query('select 1')
job.run()
print('results:', list(job.fetch_data()))
print('-'*50)
# this breaks
print('attempting to fetch from sheets-based BQ table')
job2 = client.run_sync_query('select * from testing.asdf')
job2.run()
출력 :
⚡ ~/Desktop ⚡ python3 bq_test.py
test basic query: select 1
results: [(1,)]
--------------------------------------------------
attempting to fetch from sheets-based BQ table
Traceback (most recent call last):
File "bq_test.py", line 16, in <module>
job2.run()
File "/usr/local/lib/python3.6/site-packages/google/cloud/bigquery/query.py", line 381, in run
method='POST', path=path, data=self._build_resource())
File "/usr/local/lib/python3.6/site-packages/google/cloud/_http.py", line 293, in api_request
raise exceptions.from_http_response(response)
google.cloud.exceptions.Forbidden: 403 POST https://www.googleapis.com/bigquery/v2/projects/warby-parker-1348/queries: Access Denied: BigQuery BigQuery: No OAuth token with Google Drive scope was found.
내가 명시 적으로 drive
에 대한 범위를 포함하여, scopes
을 정의 oauth2client.service_account.ServiceAccountCredentials
를 사용하려고했지만, 그렇게 할 때 나는 다음과 같은 오류가 발생합니다 :
ValueError: This library only supports credentials from google-auth-library-python. See https://google-cloud-python.readthedocs.io/en/latest/core/auth.html for help on authentication with this library.
저는 이제 인증이 IAM을 통해 처리되지만이 서비스 계정에 적용 할 역할은 표시되지 않습니다. 드라이브와 관련된 모든 것.
BigQuery 파이썬 클라이언트를 사용하여 시트 기반 테이블에서 어떻게 선택할 수 있습니까?