static Field fromPb(TableFieldSchema fieldSchemaPb) { Builder fieldBuilder = new Builder(); fieldBuilder.setName(fieldSchemaPb.getName()); if (fieldSchemaPb.getMode() != null) { fieldBuilder.setMode(Mode.valueOf(fieldSchemaPb.getMode())); } if (fieldSchemaPb.getDescription() != null) { fieldBuilder.setDescription(fieldSchemaPb.getDescription()); } FieldList subFields = fieldSchemaPb.getFields() != null ? FieldList.of(Lists.transform(fieldSchemaPb.getFields(), FROM_PB_FUNCTION)) : null; fieldBuilder.setType(LegacySQLTypeName.valueOf(fieldSchemaPb.getType()), subFields); return fieldBuilder.build(); } }
private static List<Field> fieldList(TableFieldSchema record) { List<Field> fieldList = new ArrayList<>(); for (TableFieldSchema field : record.getFields()) { fieldList.add(field(field)); } return fieldList; }
public void writeField(StringBuilder builder, TableFieldSchema fieldSchema) { if (fieldSchema.getMode().equals("REPEATED") && fieldSchema.getType().equals("RECORD")) { builder.append(fieldSchema.getName()+ " " + "ARRAY<STRUCT<"); writeOutputSchema(builder, fieldSchema.getFields()); builder.append(">>"); } if(fieldSchema.getMode().equals("REPEATED") && !fieldSchema.getType().equals("RECORD") ) { builder.append(fieldSchema.getName()+ " " + "ARRAY<"); builder.append(fieldSchema.getType()); builder.append(">"); } if(!fieldSchema.getMode().equals("REPEATED") && fieldSchema.getType().equals("RECORD") ) { builder.append(fieldSchema.getName()+ " " + "STRUCT<"); writeOutputSchema(builder, fieldSchema.getFields()); builder.append(">"); } if(!fieldSchema.getMode().equals("REPEATED") && !fieldSchema.getType().equals("RECORD") ) { builder.append(fieldSchema.getName() +" "+ fieldSchema.getType()); } }
@SuppressWarnings("unchecked") Map<String, Object> typedV = (Map<String, Object>) v; return getTypedTableRow(fieldSchema.getFields(), typedV);
@SuppressWarnings("unchecked") Map<String, Object> typedV = (Map<String, Object>) v; return getTypedTableRow(fieldSchema.getFields(), typedV);
case "RECORD": verify(v instanceof GenericRecord, "Expected GenericRecord, got %s", v.getClass()); return convertGenericRecordToTableRow((GenericRecord) v, fieldSchema.getFields()); case "BYTES": verify(v instanceof ByteBuffer, "Expected ByteBuffer, got %s", v.getClass());
private static Field convertField(TableFieldSchema bigQueryField) { Type avroType = BIG_QUERY_TO_AVRO_TYPES.get(bigQueryField.getType()); Schema elementSchema; if (avroType == Type.RECORD) { elementSchema = toGenericAvroSchema(bigQueryField.getName(), bigQueryField.getFields()); } else { elementSchema = Schema.create(avroType); } Schema fieldSchema; if (bigQueryField.getMode() == null || "NULLABLE".equals(bigQueryField.getMode())) { fieldSchema = Schema.createUnion(Schema.create(Type.NULL), elementSchema); } else if ("REQUIRED".equals(bigQueryField.getMode())) { fieldSchema = elementSchema; } else if ("REPEATED".equals(bigQueryField.getMode())) { fieldSchema = Schema.createArray(elementSchema); } else { throw new IllegalArgumentException( String.format("Unknown BigQuery Field Mode: %s", bigQueryField.getMode())); } return new Field( bigQueryField.getName(), fieldSchema, bigQueryField.getDescription(), (Object) null /* Cast to avoid deprecated JsonNode constructor. */); } }
static Field fromPb(TableFieldSchema fieldSchemaPb) { Builder fieldBuilder = new Builder(); fieldBuilder.setName(fieldSchemaPb.getName()); if (fieldSchemaPb.getMode() != null) { fieldBuilder.setMode(Mode.valueOf(fieldSchemaPb.getMode())); } if (fieldSchemaPb.getDescription() != null) { fieldBuilder.setDescription(fieldSchemaPb.getDescription()); } FieldList subFields = fieldSchemaPb.getFields() != null ? FieldList.of(Lists.transform(fieldSchemaPb.getFields(), FROM_PB_FUNCTION)) : null; fieldBuilder.setType(LegacySQLTypeName.valueOf(fieldSchemaPb.getType()), subFields); return fieldBuilder.build(); } }
@Test public void testToTableSchema_row() { TableSchema schema = toTableSchema(ROW_TYPE); assertThat(schema.getFields().size(), equalTo(1)); TableFieldSchema field = schema.getFields().get(0); assertThat(field.getName(), equalTo("row")); assertThat(field.getType(), equalTo(StandardSQLTypeName.STRUCT.toString())); assertThat(field.getMode(), nullValue()); assertThat(field.getFields(), containsInAnyOrder(ID, VALUE, NAME, TIMESTAMP, VALID)); }
static Field fromPb(TableFieldSchema fieldSchemaPb) { Builder fieldBuilder = new Builder(); fieldBuilder.name(fieldSchemaPb.getName()); Type.Value enumValue = Type.Value.valueOf(fieldSchemaPb.getType()); if (fieldSchemaPb.getMode() != null) { fieldBuilder.mode(Mode.valueOf(fieldSchemaPb.getMode())); } if (fieldSchemaPb.getDescription() != null) { fieldBuilder.description(fieldSchemaPb.getDescription()); } if (fieldSchemaPb.getFields() != null) { fieldBuilder.type(Type.record(Lists.transform(fieldSchemaPb.getFields(), FROM_PB_FUNCTION))); } else { fieldBuilder.type(new Type(enumValue)); } return fieldBuilder.build(); } }
static Field fromPb(TableFieldSchema fieldSchemaPb) { Builder fieldBuilder = new Builder(); fieldBuilder.name(fieldSchemaPb.getName()); Type.Value enumValue = Type.Value.valueOf(fieldSchemaPb.getType()); if (fieldSchemaPb.getMode() != null) { fieldBuilder.mode(Mode.valueOf(fieldSchemaPb.getMode())); } if (fieldSchemaPb.getDescription() != null) { fieldBuilder.description(fieldSchemaPb.getDescription()); } if (fieldSchemaPb.getFields() != null) { fieldBuilder.type(Type.record(Lists.transform(fieldSchemaPb.getFields(), FROM_PB_FUNCTION))); } else { fieldBuilder.type(new Type(enumValue)); } return fieldBuilder.build(); } }
@Test public void testToTableSchema_array_row() { TableSchema schema = toTableSchema(ARRAY_ROW_TYPE); assertThat(schema.getFields().size(), equalTo(1)); TableFieldSchema field = schema.getFields().get(0); assertThat(field.getName(), equalTo("rows")); assertThat(field.getType(), equalTo(StandardSQLTypeName.STRUCT.toString())); assertThat(field.getMode(), equalTo(Mode.REPEATED.toString())); assertThat(field.getFields(), containsInAnyOrder(ID, VALUE, NAME, TIMESTAMP, VALID)); }