2016-11-24 57 views
0

json_data = '[ 「XXXXXX」,65465464.0,2,-1,10.10]'大量查詢插入失敗爲timestamp數據類型

架構大量查詢表的:

ID STRING NULLABLE
時間戳STRING 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

沒有看到您的資料,很難確切地知道,但它看起來像BigQuery期待某件事是'datetime.datetime'對象,並且你傳遞一個float。 – fdsa

+0

@fdsa基本上,我在UNIX紀元中有一個時間戳數據,你可以在json記錄中看到浮點數類型。當我觸發批處理作業加載此數據的json文件時,它工作正常,無需將此浮點類型轉換爲Datetime。但對於相同的json記錄,當我試圖插入一次使用大查詢API(如上所示)時,它會拋出上述錯誤。任何指針都會有幫助! – Revan

+0

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

回答

0

@fdsa是正確的。當您上傳批處理文件時,它將接受浮動和字符串,因爲您無法在文件中存儲日期時間。但使用insert_data命令你BQ預計時間戳是任何一個datetime.datetime對象,以便在UNIX時間戳加載到日期時間插入前:

datetime.datetime.fromtimestamp(your_unix_timestamp)