Запуск клиентского запроса bigquery to_dataframe () не работает в компоновщике воздушного потока в GCP и выдает ошибку разрешения «bigquery.readsessions.create»

Я пытаюсь выполнить запрос клиента bigquery к кадру данных, используя композитор воздушного потока в GCP. Это хорошо работает в локальной системе без воздушного потока. Даже в воздушном потоке client.query(query) работает хорошо, но не client.query(query).to_dataframe() и я не могу понять, почему, если это была проблема с разрешением, то client.query(query) это тоже не должно было работать. Я пытался дать все возможные разрешения, и я не думаю, что это проблема с разрешениями.

Ниже код, который работает локально, а не в воздушном потоке в gcp,

from google.cloud import bigquery

client = bigquery.Client(project = "GCP PROJECT NAME")


#get Brand image score for all interview IDs
query = """SELECT * from Table LIMIT 10"""

df_bi=client.query(query).to_dataframe()

print("Success")

Ожидаемые результаты: Успех

Фактический результат

[2023-04-20, 12:47:25 UTC] {taskinstance.py:1853} ERROR - Task failed with exception
Traceback (most recent call last):
  File "/opt/python3.8/lib/python3.8/site-packages/google/api_core/grpc_helpers.py", line 57, in error_remapped_callable
    return callable_(*args, **kwargs)
  File "/opt/python3.8/lib/python3.8/site-packages/grpc/_channel.py", line 946, in __call__
    return _end_unary_response_blocking(state, call, False, None)
  File "/opt/python3.8/lib/python3.8/site-packages/grpc/_channel.py", line 849, in _end_unary_response_blocking
    raise _InactiveRpcError(state)
grpc._channel._InactiveRpcError: <_InactiveRpcError of RPC that terminated with:
    status = StatusCode.PERMISSION_DENIED
    details = "request failed: the user does not have 'bigquery.readsessions.create' permission for 'projects/projectname'"

Почему в Python есть оператор "pass"?
Почему в Python есть оператор "pass"?
Оператор pass в Python - это простая концепция, которую могут быстро освоить даже новички без опыта программирования.
Некоторые методы, о которых вы не знали, что они существуют в Python
Некоторые методы, о которых вы не знали, что они существуют в Python
Python - самый известный и самый простой в изучении язык в наши дни. Имея широкий спектр применения в области машинного обучения, Data Science,...
Основы Python Часть I
Основы Python Часть I
Вы когда-нибудь задумывались, почему в программах на Python вы видите приведенный ниже код?
LeetCode - 1579. Удаление максимального числа ребер для сохранения полной проходимости графа
LeetCode - 1579. Удаление максимального числа ребер для сохранения полной проходимости графа
Алиса и Боб имеют неориентированный граф из n узлов и трех типов ребер:
Оптимизация кода с помощью тернарного оператора Python
Оптимизация кода с помощью тернарного оператора Python
И последнее, что мы хотели бы показать вам, прежде чем двигаться дальше, это
Советы по эффективной веб-разработке с помощью Python
Советы по эффективной веб-разработке с помощью Python
Как веб-разработчик, Python может стать мощным инструментом для создания эффективных и масштабируемых веб-приложений.
0
0
91
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

Не могли бы вы попробовать сначала получить результаты, используя метод result() от клиента, а затем преобразовать его в фрейм данных?

from google.cloud import bigquery

client = bigquery.Client(project = "GCP PROJECT NAME")

query = """
    SELECT * from Table LIMIT 10
"""

table = client.query(query).result()
df = table.to_dataframe()
print(df)

Я нашел другую ветку, в которой была та же проблема, в ней было решение, которое вы предоставили, и оно сработало. Отметить это здесь ссылка Спасибо за решение, это работает!

VIJU 20.04.2023 17:08

Другие вопросы по теме