/** Creates a {@link WriteResult} in the given {@link Pipeline}. */ static WriteResult in( Pipeline pipeline, TupleTag<TableRow> failedInsertsTag, PCollection<TableRow> failedInserts) { return new WriteResult(pipeline, failedInsertsTag, failedInserts, null, null); }
p.apply("Create1", Create.<TableRow>of(row1)) .apply("Write 1", bqIoWrite) .getFailedInsertsWithErr(); fail(); } catch (IllegalArgumentException e) { p.apply("Create2", Create.<TableRow>of(row1)) .apply("Write2", bqIoWrite.withExtendedErrorInfo()) .getFailedInserts(); fail(); } catch (IllegalArgumentException e) {
.withoutValidation() .withExtendedErrorInfo()) .getFailedInsertsWithErr();
@Override public WriteResult expand(PCollection<KV<TableDestination, TableRow>> input) { if (extendedErrorInfo) { TupleTag<BigQueryInsertError> failedInsertsTag = new TupleTag<>(FAILED_INSERTS_TAG_ID); PCollection<BigQueryInsertError> failedInserts = writeAndGetErrors( input, failedInsertsTag, BigQueryInsertErrorCoder.of(), ErrorContainer.BIG_QUERY_INSERT_ERROR_ERROR_CONTAINER); return WriteResult.withExtendedErrors(input.getPipeline(), failedInsertsTag, failedInserts); } else { TupleTag<TableRow> failedInsertsTag = new TupleTag<>(FAILED_INSERTS_TAG_ID); PCollection<TableRow> failedInserts = writeAndGetErrors( input, failedInsertsTag, TableRowJsonCoder.of(), ErrorContainer.TABLE_ROW_ERROR_CONTAINER); return WriteResult.in(input.getPipeline(), failedInsertsTag, failedInserts); } }
private WriteResult writeResult(Pipeline p) { PCollection<TableRow> empty = p.apply("CreateEmptyFailedInserts", Create.empty(TypeDescriptor.of(TableRow.class))); return WriteResult.in(p, new TupleTag<>("failedInserts"), empty); }
.withTestServices(fakeBqServices) .withoutValidation()) .getFailedInserts();
.getFailedInsertsWithErr() .apply( "WrapInsertionErrors",
static WriteResult withExtendedErrors( Pipeline pipeline, TupleTag<BigQueryInsertError> failedInsertsTag, PCollection<BigQueryInsertError> failedInserts) { return new WriteResult(pipeline, null, null, failedInsertsTag, failedInserts); }