Мы создали вид на двух таблицах в наборе данных. Мы можем запросить представление из веб-интерфейса консоли. Но когда мы пытаемся запросить представление из кода клиента Python с помощью ключа учетной записи службы, мы получаем код ошибки: 200, Bad Request, Invalid tablename. Мы можем запросить базовую таблицу с использованием того же кода. Когда мы попытались заменить имя таблицы именем вида, код перестает работать.Bigquery view get error from code python
from google.cloud import bigquery
def test():
client = bigquery.Client(project='project-name')
query_results = client.run_sync_query("""
SELECT column-names
FROM `dataset.viewname`
WHERE conditions
;""")
query_results.use_legacy_sql = False
query_results.run()
page_token = None
while True:
rows, total_rows, page_token = query_results.fetch_data(
max_results=1,
page_token=page_token)
for row in rows:
print row
if not page_token:
break
if __name__ == '__main__':
test()
Кроме того, когда мы устанавливаем query_results.use_legacy_sql = False
, мы получаем ниже ошибки:
BadRequest: 400 Cannot reference a Legacy SQL view in a SQL query
Когда мы query_results.use_legacy_sql = True
, мы получаем другую ошибку:
BadRequest: 400 Invalid table name: 'dataset.viewname'
Спасибо .. Перейдя на стандартный SQL и используя #standard sql-тег в запросе вида, вы помогли использовать стандартный язык запросов. Код python начал работать –