2014-01-17 1 views
5

Ich denke, die Methode Startlinie 200 here ist relevant (bearbeiten: Ich musste einen Parameter zur Zeile hinzufügen Insert insertReq = bigquery. jobs() einfügen (PROJECT_ID, insertJob); ) aber es funktioniert nicht. Ich erhalte „Load-Konfiguration mindestens eine Quelle URI angeben müssen“So erstellen Sie ein BigQuery-Dataset und eine Tabelle/ein Schema vom Java-Client (ohne CSV-Datei)

Ich habe versucht, die folgenden:

TableSchema schema = new TableSchema(); 
    List<TableFieldSchema> tableFieldSchema = new ArrayList<TableFieldSchema>(); 
    TableFieldSchema schemaEntry = new TableFieldSchema(); 
    schemaEntry.setName(myFirstFieldName); 
    schemaEntry.setType("STRING"); 
    tableFieldSchema.add(schemaEntry); 
    schema.setFields(tableFieldSchema); 

    Table table = new Table(); 
    table.setSchema(schema); 
    table.setId(tableName); 
    table.setCreationTime(System.currentTimeMillis()); 
    table.setKind("bigquery#table"); 
    try { 
     bigquery.tables().insert(PROJECT_ID, DATASET_ID, table).execute(); 
    } catch (IOException e) { 
    } 

aber ich erhalte eine Fehlermeldung Required parameter is missing

+0

Welche Kompilierungsfehler sehen Sie? –

+0

Bearbeitet die Frage - danke – user1176505

+0

also ist das Ziel, eine Tabelle mit 0 Zeilen zu erstellen? Was ist der Anwendungsfall? –

Antwort

5

Versuchen Sie das Projekt-ID-Einstellung und das Daten-Set-ID auf Die Tabelle (ich weiß, dass es redundant erscheint, weil Sie sie in der Operation insert() angeben, aber das ist eine Eigenart von REST ... das Projekt und das Dataset sind Teil der URL, aber sie sind auch Teil der Ressource.

Von einem rohen HTTP api Ebene, die folgenden Werke:

https://www.googleapis.com/bigquery/v2/projects/myproject/datasets/mydataset/tables?alt=json  
{"tableReference": 
    {"tableId": "dfdlkfjx", "projectId": "myproject", "datasetId": "mydataset"}, 
"schema": 
    {"fields": [{"name": "a", "type": "STRING"}]}} 
+1

Danke, dass gab mir den Schlüssel, wie man es in Java macht, siehe meine Antwort – user1176505

16

OK basiert auf der Idee von Jordan Tigani, hier ist der Java-Code, der eine leere Tabelle in BigQuery mit Google Java-API-Client erstellen funktioniert:

TableSchema schema = new TableSchema(); 
List<TableFieldSchema> tableFieldSchema = new ArrayList<TableFieldSchema>(); 
TableFieldSchema schemaEntry = new TableFieldSchema(); 
schemaEntry.setName(myFirstFieldName); 
schemaEntry.setType("STRING"); 
tableFieldSchema.add(schemaEntry); 
schema.setFields(tableFieldSchema); 

Table table = new Table(); 
table.setSchema(schema); 
TableReference tableRef = new TableReference(); 
tableRef.setDatasetId(DATASET_ID); 
tableRef.setProjectId(PROJECT_ID); 
tableRef.setTableId(tableId); 
table.setTableReference(tableRef); 
try { 
    bigquery.tables().insert(PROJECT_ID, DATASET_ID, table).execute(); 
} catch (IOException e) { 
} 

So erstellen Sie ein Dataset (vor dem Erstellen der Tabelle)

Dataset dataset = new Dataset(); 
    DatasetReference datasetRef = new DatasetReference(); 
    datasetRef.setProjectId(PROJECT_ID); 
    datasetRef.setDatasetId(DATASET_ID); 
    dataset.setDatasetReference(datasetRef); 
    try { 
     bigquery.datasets().insert(PROJECT_ID, dataset).execute(); 
    } catch (IOException e) { 
    } 
Verwandte Themen