2016-11-24 3 views
0

json_data = '[ "XXXXXX"、65465464.0,2、-1,10.10]' BigQueryのテーブルのBigQueryの挿入は、タイムスタンプデータ型のために失敗した

スキーマ:

ID文字列NULLABLE
タイムスタンプ文字列NULLABLE
XID INTEGER NULLABLE
YID INTEGER NULLABLE
大きFLOATのNULLABLE

script.py:

data = json.loads(json_data) 
table.reload() 
rows = [data] 
errors = table.insert_data(rows) 

エラー:

errors = table.insert_data(rows) 
File "/usr/local/lib/python2.7/dist-  
packages/google/cloud/bigquery/table.py", line 749, in insert_data 
value = _microseconds_from_datetime(value) * 1e-6 
File "/usr/local/lib/python2.7/dist-packages/google/cloud/_helpers.py", line  
363, in _microseconds_from_datetime 
if not value.tzinfo: 
AttributeError: 'float' object has no attribute 'tzinfo' 

は、誰もがこのエラーについてどんな考えを持っていますか?

感謝!

+1

を:しかし、あなたはBQはとても挿入する前に、日時にUNIXタイムスタンプをロードタイムスタンプがdatetime.datetimeのオブジェクトのいずれかであることを期待insert_dataコマンドを使用するにはBigQueryは何かが 'datetime.datetime'オブジェクトであると予想しており、あなたはfloatを渡しています。 – fdsa

+0

@fdsa基本的には、私はUNIXのepochのタイムスタンプデータを持っています。これはjsonレコードのfloat型として見ることができます。このデータのjsonファイルをロードするためにバッチジョブをトリガすると、このフロートタイプをDatetimeに変換することなく正常に動作します。しかし、同じjsonレコードの場合、(上記のように)大きなクエリAPIを使用して一度に挿入しようとすると、上記のエラーが発生します。すべてのポインタが役立つだろう! – Revan

+0

https://docs.python.org/3/library/datetime.html#datetime.datetime.fromtimestamp – fdsa

答えて

0

@fdsaが正しいです。バッチファイルをアップロードすると、ファイルにdatetimeを格納できないため、浮動小数点数や文字列を受け入れます。それは確実に知ることは困難だが、それがどのように見えるあなたのデータを見ることなく

datetime.datetime.fromtimestamp(your_unix_timestamp) 
関連する問題