2017-05-01 1 views
2

Ich habe den folgenden Code in DataLab Notebook:Wie Abfragen einer BigQuery-Tabelle aus dem DataLab-Notizbuch mithilfe von google.datalab.bigquery?

import google.datalab.bigquery as bq 

%bq query 
SELECT count(id) FROM 'rtda.tweets' 

er den Fehler zurückgibt:

invalidQuery: Syntax error: Unexpected string literal 'rtda.tweets' at [1:23] 

Die BiqQuery Schema finden, das von BigQuery Schema Befehl korrekt zurückgegeben wird:

%bigquery schema --table "rtda.tweets" 

name  type  mode  description 
created_at TIMESTAMP NULLABLE  
id   INTEGER  NULLABLE  
id_str  STRING  NULLABLE  
(...) 

In der BigQuery-Konsole kann ich die Abfrage erfolgreich ausführen:

SELECT count(id) FROM [rtda.tweets]; 

Das Problem ist, dass ich diesen Befehl in DataLab Notebook nicht ausführen kann.

Antwort

3

Die oben gezeigte Abfrage wird mit Legacy-SQL definiert, jedoch ist Standard-SQL der bevorzugte SQL-Dialekt für die Abfrage von Daten, die in BigQuery gemäß BigQuery docs gespeichert sind. Gemäß der datalab to google.datalab Migration Guide wird Legacy SQL in google.datalab nicht mehr unterstützt. Können Sie Ihre Abfragen in Standard SQL konvertieren?

Für Standard-SQL, die ' Anführungszeichen ändern um den Tabellennamen Backticks

%bq query 

SELECT count(id) FROM `rtda.tweets` 

Der Grund, dies in der BigQuery Konsole funktioniert, ist, dass die Konsole noch unterstützt Legacy-SQL während google.datalab nicht der Fall ist.

+1

perfekt - mit Backticks meine Abfrage ordnungsgemäß ausgeführt - thx – Czeslaw

+1

Da dieser Tabellenname keine Sonderzeichen verwendet - Sie können Backticks fallen und verwenden Sie nur SELECT count (ID) FROM rtda.tweets –

+0

@Mosha, ja es funktioniert ohne Backticks auch - thx – Czeslaw

Verwandte Themen