예제 #1
0
 @Test
 public void testCreateViewTable() throws InterruptedException {
   String tableName = "test_create_view_table";
   TableId tableId = TableId.of(DATASET, tableName);
   ViewDefinition viewDefinition =
       ViewDefinition.of(
           "SELECT TimestampField, StringField, BooleanField FROM "
               + DATASET
               + "."
               + TABLE_ID.table());
   TableInfo tableInfo = TableInfo.of(tableId, viewDefinition);
   Table createdTable = bigquery.create(tableInfo);
   assertNotNull(createdTable);
   assertEquals(DATASET, createdTable.tableId().dataset());
   assertEquals(tableName, createdTable.tableId().table());
   Table remoteTable = bigquery.getTable(DATASET, tableName);
   assertNotNull(remoteTable);
   assertEquals(createdTable.tableId(), remoteTable.tableId());
   assertTrue(remoteTable.definition() instanceof ViewDefinition);
   Schema expectedSchema =
       Schema.builder()
           .addField(
               Field.builder("TimestampField", Field.Type.timestamp())
                   .mode(Field.Mode.NULLABLE)
                   .build())
           .addField(
               Field.builder("StringField", Field.Type.string()).mode(Field.Mode.NULLABLE).build())
           .addField(
               Field.builder("BooleanField", Field.Type.bool()).mode(Field.Mode.NULLABLE).build())
           .build();
   assertEquals(expectedSchema, remoteTable.definition().schema());
   QueryRequest request =
       QueryRequest.builder("SELECT * FROM " + tableName)
           .defaultDataset(DatasetId.of(DATASET))
           .maxWaitTime(60000L)
           .maxResults(1000L)
           .build();
   QueryResponse response = bigquery.query(request);
   while (!response.jobCompleted()) {
     response = bigquery.getQueryResults(response.jobId());
     Thread.sleep(1000);
   }
   int rowCount = 0;
   for (List<FieldValue> row : response.result().values()) {
     FieldValue timestampCell = row.get(0);
     FieldValue stringCell = row.get(1);
     FieldValue booleanCell = row.get(2);
     assertEquals(FieldValue.Attribute.PRIMITIVE, timestampCell.attribute());
     assertEquals(FieldValue.Attribute.PRIMITIVE, stringCell.attribute());
     assertEquals(FieldValue.Attribute.PRIMITIVE, booleanCell.attribute());
     assertEquals(1408452095220000L, timestampCell.timestampValue());
     assertEquals("stringValue", stringCell.stringValue());
     assertEquals(false, booleanCell.booleanValue());
     rowCount++;
   }
   assertEquals(2, rowCount);
   assertTrue(remoteTable.delete());
 }
예제 #2
0
 @Test
 public void testCreateExternalTable() throws InterruptedException {
   String tableName = "test_create_external_table";
   TableId tableId = TableId.of(DATASET, tableName);
   ExternalTableDefinition externalTableDefinition =
       ExternalTableDefinition.of(
           "gs://" + BUCKET + "/" + JSON_LOAD_FILE, TABLE_SCHEMA, FormatOptions.json());
   TableInfo tableInfo = TableInfo.of(tableId, externalTableDefinition);
   Table createdTable = bigquery.create(tableInfo);
   assertNotNull(createdTable);
   assertEquals(DATASET, createdTable.tableId().dataset());
   assertEquals(tableName, createdTable.tableId().table());
   Table remoteTable = bigquery.getTable(DATASET, tableName);
   assertNotNull(remoteTable);
   assertTrue(remoteTable.definition() instanceof ExternalTableDefinition);
   assertEquals(createdTable.tableId(), remoteTable.tableId());
   assertEquals(TABLE_SCHEMA, remoteTable.definition().schema());
   QueryRequest request =
       QueryRequest.builder(
               "SELECT TimestampField, StringField, IntegerField, BooleanField FROM "
                   + DATASET
                   + "."
                   + tableName)
           .defaultDataset(DatasetId.of(DATASET))
           .maxWaitTime(60000L)
           .maxResults(1000L)
           .build();
   QueryResponse response = bigquery.query(request);
   while (!response.jobCompleted()) {
     response = bigquery.getQueryResults(response.jobId());
     Thread.sleep(1000);
   }
   long integerValue = 0;
   int rowCount = 0;
   for (List<FieldValue> row : response.result().values()) {
     FieldValue timestampCell = row.get(0);
     FieldValue stringCell = row.get(1);
     FieldValue integerCell = row.get(2);
     FieldValue booleanCell = row.get(3);
     assertEquals(FieldValue.Attribute.PRIMITIVE, timestampCell.attribute());
     assertEquals(FieldValue.Attribute.PRIMITIVE, stringCell.attribute());
     assertEquals(FieldValue.Attribute.PRIMITIVE, integerCell.attribute());
     assertEquals(FieldValue.Attribute.PRIMITIVE, booleanCell.attribute());
     assertEquals(1408452095220000L, timestampCell.timestampValue());
     assertEquals("stringValue", stringCell.stringValue());
     assertEquals(integerValue, integerCell.longValue());
     assertEquals(false, booleanCell.booleanValue());
     integerValue = ~integerValue & 0x1;
     rowCount++;
   }
   assertEquals(4, rowCount);
   assertTrue(remoteTable.delete());
 }
예제 #3
0
 @Test
 public void testQuery() throws InterruptedException {
   String query =
       new StringBuilder()
           .append("SELECT TimestampField, StringField, BooleanField FROM ")
           .append(TABLE_ID.table())
           .toString();
   QueryRequest request =
       QueryRequest.builder(query)
           .defaultDataset(DatasetId.of(DATASET))
           .maxWaitTime(60000L)
           .maxResults(1000L)
           .build();
   QueryResponse response = bigquery.query(request);
   while (!response.jobCompleted()) {
     Thread.sleep(1000);
     response = bigquery.getQueryResults(response.jobId());
   }
   assertEquals(QUERY_RESULT_SCHEMA, response.result().schema());
   int rowCount = 0;
   for (List<FieldValue> row : response.result().values()) {
     FieldValue timestampCell = row.get(0);
     FieldValue stringCell = row.get(1);
     FieldValue booleanCell = row.get(2);
     assertEquals(FieldValue.Attribute.PRIMITIVE, timestampCell.attribute());
     assertEquals(FieldValue.Attribute.PRIMITIVE, stringCell.attribute());
     assertEquals(FieldValue.Attribute.PRIMITIVE, booleanCell.attribute());
     assertEquals(1408452095220000L, timestampCell.timestampValue());
     assertEquals("stringValue", stringCell.stringValue());
     assertEquals(false, booleanCell.booleanValue());
     rowCount++;
   }
   assertEquals(2, rowCount);
   Job queryJob = bigquery.getJob(response.jobId());
   JobStatistics.QueryStatistics statistics = queryJob.statistics();
   assertNotNull(statistics.queryPlan());
 }
예제 #4
0
  @Test
  public void testQueryJob() throws InterruptedException {
    String tableName = "test_query_job_table";
    String query =
        new StringBuilder()
            .append("SELECT TimestampField, StringField, BooleanField FROM ")
            .append(TABLE_ID.table())
            .toString();
    TableId destinationTable = TableId.of(DATASET, tableName);
    QueryJobConfiguration configuration =
        QueryJobConfiguration.builder(query)
            .defaultDataset(DatasetId.of(DATASET))
            .destinationTable(destinationTable)
            .build();
    Job remoteJob = bigquery.create(JobInfo.of(configuration));
    while (!remoteJob.isDone()) {
      Thread.sleep(1000);
    }
    assertNull(remoteJob.status().error());

    QueryResponse response = bigquery.getQueryResults(remoteJob.jobId());
    while (!response.jobCompleted()) {
      Thread.sleep(1000);
      response = bigquery.getQueryResults(response.jobId());
    }
    assertFalse(response.hasErrors());
    assertEquals(QUERY_RESULT_SCHEMA, response.result().schema());
    int rowCount = 0;
    for (List<FieldValue> row : response.result().values()) {
      FieldValue timestampCell = row.get(0);
      FieldValue stringCell = row.get(1);
      FieldValue booleanCell = row.get(2);
      assertEquals(FieldValue.Attribute.PRIMITIVE, timestampCell.attribute());
      assertEquals(FieldValue.Attribute.PRIMITIVE, stringCell.attribute());
      assertEquals(FieldValue.Attribute.PRIMITIVE, booleanCell.attribute());
      assertEquals(1408452095220000L, timestampCell.timestampValue());
      assertEquals("stringValue", stringCell.stringValue());
      assertEquals(false, booleanCell.booleanValue());
      rowCount++;
    }
    assertEquals(2, rowCount);
    assertTrue(bigquery.delete(DATASET, tableName));
    Job queryJob = bigquery.getJob(remoteJob.jobId());
    JobStatistics.QueryStatistics statistics = queryJob.statistics();
    assertNotNull(statistics.queryPlan());
  }