Я подозреваю, что вы выбрали неправильный "ключ". 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