2016-10-05 18 views
2

私は...それが何であるかを把握するように見えるGoogleのクラウドdatalabからGoogleクラウドdatalabエラーが

クエリのBigQuery日パーティション表ができない、ここで基本的な何かをしないのですね。ほとんどの他のクエリはデータを期待どおりにフェッチしますが、なぜこの特定のテーブルでselectが機能しないのかわかりませんが、count(1)クエリが機能します。

%%sql 
select * from Mydataset.sample_sales_yearly_part limit 10 

私はエラーの下に取得する:

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 

答えて

3

あなただけhttps://github.com/googledatalab/pydatalab/pull/68で固定し(まだDatalabリリースに含まれていない)された問題を打つことができます。

BigQueryの新しい「標準SQL」サポートが、結果スキーマに表示される新しいデータ型を追加し、Datalabがそれを処理するためにまだ更新されていないという背景があります。

Datalabの次のリリースではこの問題を修正する必要がありますが、クエリの一部としてTIMESTAMPへの明示的なキャストで日付フィールドをラップすることで回避できます。

次のコードセルとそのエラーを参照してくださいたとえば、:

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

(「d」が型「DATE」のフィールドです)、その後、あなたがいることをキャスティングすることにより問題を回避することができますがこのようなTIMESTAMPのフィールド:あなたの特定のクエリに対する

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

、あなたはタイムスタンプに日付と1を投じることができるように、フィールドのリストに「*」に変更する必要があります。

+0

ありがとうOmar、私は日付フィールドの文字列をキャストすることでこれを克服することができました。私はクラウドデータラブの新しいリリースを探します。 –

+1

標準のsqlを使用するように設定を変更するには、クラウドデータラップでデフォルトにするにはどうすればよいですか? –

+1

新しいリリースがリリースされました。標準SQLを選択するには、%% sqlセルのマジックに追加できる "-d標準"フラグがあります。例については、バンドルされたチュートリアルの "BigQuery Standard SQL.ipynb"ノートブックを参照してください。 –

関連する問題