2016-10-05 4 views
2

Ich glaube, ich bin etwas fehlt hier einfach, kann nicht scheinen, um herauszufinden, was es ist ..Google Cloud datalab Fehler Abfrage BigQuery Tabellen

Querying BigQuery Datum partitionierten Tabelle von Google Cloud datalab. Die meisten anderen Abfragen rufen Daten wie erwartet ab, nicht sicher, warum in dieser bestimmten Tabelle select nicht funktioniert, jedoch funktioniert die Abfrage von count (1).

%%sql 
select * from Mydataset.sample_sales_yearly_part limit 10 

ich unten Fehlermeldung erhalten:

KeyErrorTraceback (most recent call last) /usr/local/lib/python2.7/dist-packages/IPython/core/formatters.pyc in 
__call__(self, obj) 
    305     pass 
    306    else: 
--> 307     return printer(obj) 
    308    # Finally look for special method names 
    309    method = get_real_method(obj, self.print_method) 

/usr/local/lib/python2.7/dist-packages/datalab/bigquery/commands/_bigquery.pyc in _repr_html_query_results_table(results) 
    999  1000 def _repr_html_query_results_table(results): 
-> 1001 return _table_viewer(results) 1002  1003 

/usr/local/lib/python2.7/dist-packages/datalab/bigquery/commands/_bigquery.pyc in _table_viewer(table, rows_per_page, fields) 
    969  meta_time = '' 
    970 
--> 971 data, total_count = datalab.utils.commands.get_data(table, fields, first_row=0, count=rows_per_page) 
    972 
    973 if total_count < 0: 

/usr/local/lib/python2.7/dist-packages/datalab/utils/commands/_utils.pyc in get_data(source, fields, env, first_row, count, schema) 
    226  return _get_data_from_table(source.results(), fields, first_row, count, schema) 
    227 elif isinstance(source, datalab.bigquery.Table): 
--> 228  return _get_data_from_table(source, fields, first_row, count, schema) 
    229 else: 
    230  raise Exception("Cannot chart %s; unsupported object type" % source) 

/usr/local/lib/python2.7/dist-packages/datalab/utils/commands/_utils.pyc in _get_data_from_table(source, fields, first_row, count, schema) 
    174 gen = source.range(first_row, count) if count >= 0 else source 
    175 rows = [{'c': [{'v': row[c]} if c in row else {} for c in fields]} for row in gen] 
--> 176 return {'cols': _get_cols(fields, schema), 'rows': rows}, source.length 
    177 
    178 

/usr/local/lib/python2.7/dist-packages/datalab/utils/commands/_utils.pyc in _get_cols(fields, schema) 
    108  if schema: 
    109  f = schema[col] 
--> 110  cols.append({'id': f.name, 'label': f.name, 'type': typemap[f.data_type]}) 
    111  else: 
    112  # This will only happen if we had no rows to infer a schema from, so the type 

KeyError: u'DATE' 

QueryResultsTable job_Ckq91E5HuI8GAMPteXKeHYWMwMo 

Antwort

3

Sie können ein Problem sein, schlagen die gerade in https://github.com/googledatalab/pydatalab/pull/68 fixiert wurde (aber noch nicht in einer Datalab Version enthalten).

Der Hintergrund ist, dass die neue "Standard SQL" Unterstützung in BigQuery neue Datentypen hinzugefügt, die im Ergebnisschema angezeigt werden können, und Datalab wurde noch nicht aktualisiert, um diese zu behandeln.

Die nächste Version von Datalab sollte dies beheben, aber in der Zwischenzeit können Sie umgehen, indem Sie Ihre Datumsfelder in einer expliziten Umwandlung in TIMESTAMP als Teil Ihrer Abfrage einschließen.

Zum Beispiel, wenn Sie sehen, dass Fehler mit der folgenden Code Zelle:

%%sql SELECT COUNT(*) as count, d FROM <mytable> 

(wobei ‚d‘ ein Feld vom Typ ‚Datum‘ ist), dann können Sie das Problem umgehen, durch Gießen, dass Feld zu einem TIMESTAMP wie folgt aus:

%%sql SELECT COUNT(*) as count, TIMESTAMP(d) FROM <mytable> 

Für Ihre spezielle Abfrage, musst du ‚*‘ in die Liste der Felder ändern, so dass Sie das mit einem Datum zu einem Zeitstempel umwandeln können.

+0

Dank Omar, konnte ich dies überwinden, indem ich Datum Feld Zeichenfolge warf. Ich werde nach der neuen Version von Cloud Datalab suchen. –

+1

Wie kann ich die Einstellungen für die Verwendung von standard-sql als Standard im Cloud Datalab ändern? –

+1

Die neue Version ist jetzt verfügbar. Wie bei der Auswahl von Standard-SQL gibt es nun ein Flag "-d Standard", das Sie der %% sql-Zellenmagie hinzufügen können ... Suchen Sie in den mitgelieferten Tutorials nach dem Beispiel "BigQuery Standard SQL.ipynb". –

Verwandte Themen