Class RowMutationInformation
java.lang.Object
org.apache.beam.sdk.io.gcp.bigquery.RowMutationInformation
This class indicates how to apply a row update to BigQuery. A sequence number must always be
supplied to order the updates. Incorrect sequence numbers will result in unexpected state in the
BigQuery table.
-
Nested Class Summary
Nested Classes -
Constructor Summary
Constructors -
Method Summary
Modifier and TypeMethodDescriptionabstract String
The value supplied to the BigQuery_CHANGE_SEQUENCE_NUMBER
pseudo-column.abstract RowMutationInformation.MutationType
Deprecated.static RowMutationInformation
of
(RowMutationInformation.MutationType mutationType, long sequenceNumber) Deprecated.static RowMutationInformation
of
(RowMutationInformation.MutationType mutationType, String changeSequenceNumber) InstantiateRowMutationInformation
withRowMutationInformation.MutationType
and the , which sets the BigQuery API_CHANGE_SEQUENCE_NUMBER
pseudo column, enabling custom user-supplied ordering ofRowMutation
s.
-
Constructor Details
-
RowMutationInformation
public RowMutationInformation()
-
-
Method Details
-
getMutationType
-
getSequenceNumber
Deprecated.The sequence number used to drive the order of applied row mutations. @deprecatedgetChangeSequenceNumber()
replaces this field as the BigQuery API instead supports the use of a string. -
getChangeSequenceNumber
The value supplied to the BigQuery_CHANGE_SEQUENCE_NUMBER
pseudo-column. Seeof(MutationType, String)
for more details. -
of
@Deprecated public static RowMutationInformation of(RowMutationInformation.MutationType mutationType, long sequenceNumber) Deprecated.InstantiateRowMutationInformation
withRowMutationInformation.MutationType
and the . @deprecated - instantiatesRowMutationInformation
viaof(MutationType, String)
forwarding the value usingLong.toHexString(long)
. values< 0
will throw an error. -
of
public static RowMutationInformation of(RowMutationInformation.MutationType mutationType, String changeSequenceNumber) InstantiateRowMutationInformation
withRowMutationInformation.MutationType
and the , which sets the BigQuery API_CHANGE_SEQUENCE_NUMBER
pseudo column, enabling custom user-supplied ordering ofRowMutation
s.Requirements for the :
- fixed format
String
in hexadecimal format - do not use hexadecimals encoded from negative numbers
- each hexadecimal string separated into sections by forward slash:
/
- up to four sections allowed
- each section is limited to
16
hexadecimal characters:0-9
,A-F
, ora-f
- The allowable range supported are values between
0/0/0/0
andFFFFFFFFFFFFFFFF/FFFFFFFFFFFFFFFF/FFFFFFFFFFFFFFFF/FFFFFFFFFFFFFFFF
Below are some scenarios:
Record #1: Record #2: BigQuery API compares as "B"
"ABC"
Record #2 is considered the latest record: 'ABC' > 'B' (i.e. '2748' > '11')
"FFF/B"
"FFF/ABC"
Record #2 is considered the latest record: "FFF/B" > "FFF/ABC" (i.e. "4095/2748" > "4095/11")
"BA/FFFFFFFF"
"ABC"
Record #2 is considered the latest record: "ABC" > "BA/FFFFFFFF" (i.e. "2748" > "186/4294967295")
"FFF/ABC"
"ABC"
Record #1 is considered the latest record: "FFF/ABC" > "ABC" (i.e. "4095/2748" > "2748")
"FFF"
"FFF"
Record #1 and #2 change sequence number identical; BigQuery uses system ingestion time to take precedence over previously ingested records. Below are some code examples.
RowMutationInformation.of(UPSERT, "FFF/ABC")
- Using Apache Commons
Hex.encodeHexString(byte[])
(Java 17+ users can useHexFormat
)RowMutationInformation.of(UPSERT, Hex.encodeHexString("2024-04-30 11:19:44 UTC".getBytes(StandardCharsets.UTF_8)))
- Using
Long.toHexString(long)
:RowMutationInformation.of(DELETE, Long.toHexString(123L))
- fixed format
-