use of com.google.cloud.datacatalog.v1beta1.ColumnSchema in project DataflowTemplates by GoogleCloudPlatform.
the class SchemaUtils method fromBeamField.
private static ColumnSchema fromBeamField(org.apache.beam.sdk.schemas.Schema.Field beamField) {
ColumnSchema.Builder columnBuilder = ColumnSchema.newBuilder();
if (beamField.getType().getNullable()) {
columnBuilder.setMode("NULLABLE");
} else {
columnBuilder.setMode("REQUIRED");
}
if (beamField.getType().getTypeName() == TypeName.ROW) {
String columnType = "STRUCT";
Schema subSchema = fromBeamSchema(beamField.getType().getRowSchema());
return columnBuilder.setColumn(beamField.getName()).setType(columnType).addAllSubcolumns(subSchema.getColumnsList()).build();
} else if (LOGICAL_FIELD_TYPES.inverse().containsKey(beamField.getType())) {
String columnType = LOGICAL_FIELD_TYPES.inverse().get(beamField.getType());
return columnBuilder.setColumn(beamField.getName()).setType(columnType).build();
} else {
String columnType = FIELD_TYPE_NAMES.inverse().get(beamField.getType().getTypeName());
// TODO(pabloem): Include other characteristics of the field (e.g. required/nullable/etc).
return columnBuilder.setColumn(beamField.getName()).setType(columnType).build();
}
}
Aggregations