Как запросить представление BigQuery через Datalab? - PullRequest
0 голосов
/ 10 мая 2018

В моем BigQuery сохранено представление SQL.Я хотел запустить SQL-запросы в этом представлении.Мы можем запустить SQL-запрос к таблицам следующим образом:

%%bq query
SELECT * 
FROM tablename
WHERE condition

Но я получаю ошибку при запуске того же самого для представления:

%%bq query
SELECT * FROM viewname

Ошибка:

invalidQuery: невозможно сослаться на устаревшее представление SQL в стандартном запросе SQL.

ИЛИ

import google.datalab.bigquery as bq
c = bq.View.query(sql='SELECT * From viewname').execute().result().to_dataframe()    

Ошибка:

NameErrorTraceback (самый последний вызовlast) in () 1 импортирует google.datalab.bigquery как bq ----> 2 c = View.query (sql = 'SELECT * From namename'). execute (). result (). to_dataframe ()
Ошибка типа: объект 'свойство' не вызывается

1 Ответ

0 голосов
/ 10 мая 2018

Как вы уже определили, есть два способа работы с BigQuery в Datalab:

  • Использование %% bq , как представлено в в этом примере ноутбука .
  • Использование библиотек Datalab's BigQuery API ( образец блокнота ).В настоящее время поддерживается и обновляется версия google.datalab.bigquery, однако устаревшая версия datalab.bigquery по-прежнему доступна по причинам обратной совместимости.

Согласно полученному сообщению об ошибке (Cannot reference a legacy SQL view in a standard SQL query)Я понимаю, что запрашиваемое вами представление было создано с помощью устаревшего SQL-запроса.Как объясняется в этом посте, Datalab переходит на стандартный SQL , и поэтому его поддержка Legacy SQL прекращается.По этой причине и %%bq, и google.datalab.bigquery не поддерживают устаревший SQL и работают только со стандартным SQL.

Если вам действительно нужно представление, как оно есть сейчас (т.е. создано с помощью Legacy SQL)В качестве временного решения вы можете вместо этого использовать старую библиотеку (которая все еще доступна), datalab.bigquery, как показано ниже:

import datalab.bigquery as bq
bq.Query("SELECT * FROM dataset.legacy_sql_view;").results()

Однако я настоятельно рекомендую начать , переходя на стандартнуюSQL , учитывая, что это предпочтительный язык запросов для BigQuery, и он имеет несколько преимуществ, среди которых вы можете сосчитать официальную поддержку в Datalab.

...