5

Grundsätzlich mein Code wie folgt aussieht offiziellen Beispiel bei https://cloud.google.com/bigquery/streaming-data-into-bigqueryEinfügen von Daten in BigQuery Tabelle

Mein Code:

TableRow data = new TableRow(); 
data.set("type", eventType); 
data.set("timestamp", new Date()); 

TableDataInsertAllRequest.Rows row = new TableDataInsertAllRequest.Rows(); 
row.setInsertId(System.currentTimeMillis()); 
row.setJson(data); 
request = new TableDataInsertAllRequest(); 
request.setRows(Arrays.asList(row)); 

TableDataInsertAllResponse response = bigquery.tabledata().insertAll(projectId, datasetId, tableId, request).execute(); 
for (TableDataInsertAllResponse.InsertErrors err: response.getInsertErrors()) { 
    for (ErrorProto ep: err.getErrors()) { 
     log.error(ep.getReason() + " : " + ep.getMessage() + " at " + ep.getLocation()); 
    } 
} 

Aber ich immer Fehler:

invalid : JSON map specified for non-record field at null 

Es scheint, dass ich etwas verpasst habe , aber ich habe keine Ahnung, was mit meinem Code nicht stimmt. Ich habe zwei Felder, eine String und Date, und Fehlermeldung macht keinen Sinn für mich.

Wie Einfügen von Daten in BigQuery-Tabelle?

+0

Hallo können Sie bitte diese Frage beantworten http://stackoverflow.com/questions/40481371/io-exception-while-inserting-data-in-table-on-big-query –

Antwort

13

Nach einigen Stunden Debugging habe ich festgestellt, dass BigQuery Java Client Date Werte nicht unterstützt. Und com.google.api.client.util.DateTime Wrapper sollte verwendet werden.

Anstatt also

data.set("timestamp", new Date()); 

sollte es sein:

data.set("timestamp", new DateTime(new Date())); 

Hoffe, dass es jemand helfen.

+0

@AlexMartelli Wahrscheinlich wird er akzeptieren, aber er muss 48 Stunden warten, um dies zu tun. – Pentium10

+0

Ich habe diesen Fehler: JSON-Objekt für Nicht-Datensatzfeld angegeben: Zeitstempel ... Was ist der Typ Ihres "Zeitstempel" -Feldes? Meine ist DATE, aber wäre es DATE_TIME? – CCC