BigQuery GCP Python Интеграция - PullRequest
0 голосов
/ 21 марта 2020

Я пытаюсь написать все свои скрипты в Python вместо BigQuery. Я установил свой активный проект, используя 'glcoud config set project', но все равно получаю эту ОШИБКУ 403 POST https://bigquery.googleapis.com/bigquery/v2/projects/analytics-supplychain-thd/jobs: вызывающей стороне не требуется разрешение на использование проекта analytics-supplychain-thd. Предоставьте вызывающей стороне роль владельца или редактора или пользовательскую роль с разрешением serviceusage.services.use, посетив https://console.developers.google.com/iam-admin/iam/project?project=analytics-supplychain-thd, а затем повторите попытку (распространение нового разрешения может занять несколько минут).

Как мне это исправить?

1 Ответ

0 голосов
/ 23 марта 2020

Я подозреваю, что вы выбрали неправильный "ключ". json, по крайней мере, с точки зрения разрешений для одной из операций, которые вы пытаетесь выполнить. Ключ, определенный в настоящее время [1] в GOOGLE_APPLICATION_CREDENTIALS, похоже, не имеет прав доступа. Список ролей, которые вы должны предоставить учетной записи службы, можно найти здесь [2]. В любом случае, из-за вашей ошибки вам понадобится хотя бы примитивная роль владельца или редактора. Последнее зависит от ваших потребностей и целей (операция, которую вы выполняете через такой скрипт).

Вы должны выбрать правильную роль для своей операции и связать ее с учетной записью службы, которую вы хотите использовать, определив, таким образом, идентификацию для нее через пользовательский интерфейс портала IAM, также выполнимый также через вызовы CLI или API.

После этого убедитесь, что используемый вами клиент вошел в систему с правильной учетной записью службы (правильный json путь к ключу).

В частности, я использовал код, который вы дали мне для тестирования, и я смог загрузить данные:

import pandas_gbq 
import google.oauth2.service_account as service_account
# TODO: Set project_id to your Google Cloud Platform project ID 
project_id = "xxx-xxxx-xxxxx" 
sql = """SELECT * FROM xxx-xxxx-xxxxx.fourth_dataset.2test LIMIT 100""" 
credentials = service_account.Credentials.from_service_account_file('/home/myself/key.json')
df = pandas_gbq.read_gbq(sql, project_id=project_id, dialect="standard", credentials=credentials)

Надеюсь, это поможет !!

[1 ] https://cloud.google.com/docs/authentication/getting-started#setting_the_environment_variable

[2] https://cloud.google.com/iam/docs/understanding-roles#primitive_roles

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...