public sealed class AppendRowsRequest : IMessage<AppendRowsRequest>, IEquatable<AppendRowsRequest>, IDeepCloneable<AppendRowsRequest>, IBufferMessage, IMessage
Reference documentation and code samples for the Google BigQuery Storage v1 API class AppendRowsRequest.
Request message for AppendRows.
Because AppendRows is a bidirectional streaming RPC, certain parts of the
AppendRowsRequest need only be specified for the first request before
switching table destinations. You can also switch table destinations within
the same connection for the default stream.
The size of a single AppendRowsRequest must be less than 10 MB in size.
Requests larger than this return an error, typically INVALID_ARGUMENT.
public AppendRowsRequest.Types.MissingValueInterpretation DefaultMissingValueInterpretation { get; set; }
Optional. Default missing value interpretation for all columns in the
table. When a value is specified on an AppendRowsRequest, it is applied
to all requests on the connection from that point forward, until a
subsequent AppendRowsRequest sets it to a different value.
missing_value_interpretation can override
default_missing_value_interpretation. For example, if you want to write
NULL instead of using default values for some columns, you can set
default_missing_value_interpretation to DEFAULT_VALUE and at the same
time, set missing_value_interpretations to NULL_VALUE on those columns.
public MapField<string, AppendRowsRequest.Types.MissingValueInterpretation> MissingValueInterpretations { get; }
A map to indicate how to interpret missing value for some fields. Missing
values are fields present in user schema but missing in rows. The key is
the field name. The value is the interpretation of missing values for the
field.
For example, a map {'foo': NULL_VALUE, 'bar': DEFAULT_VALUE} means all
missing values in field foo are interpreted as NULL, all missing values in
field bar are interpreted as the default value of field bar in table
schema.
If a field is not in this map and has missing values, the missing values
in this field are interpreted as NULL.
This field only applies to the current request, it won't affect other
requests on the connection.
Currently, field name can only be top-level column name, can't be a struct
field path like 'foo.bar'.
If present, the write is only performed if the next append offset is same
as the provided value. If not present, the write is performed at the
current end of stream. Specifying a value for this field is not allowed
when calling AppendRows for the '_default' stream.
Required. The write_stream identifies the append operation. It must be
provided in the following scenarios:
In the first request to an AppendRows connection.
In all subsequent requests to an AppendRows connection, if you use the
same connection to write to multiple tables or change the input schema for
default streams.
For explicitly created write streams, the format is:
[[["Easy to understand","easyToUnderstand","thumb-up"],["Solved my problem","solvedMyProblem","thumb-up"],["Other","otherUp","thumb-up"]],[["Hard to understand","hardToUnderstand","thumb-down"],["Incorrect information or sample code","incorrectInformationOrSampleCode","thumb-down"],["Missing the information/samples I need","missingTheInformationSamplesINeed","thumb-down"],["Other","otherDown","thumb-down"]],["Last updated 2025-09-04 UTC."],[[["\u003cp\u003eThis document provides reference information for the \u003ccode\u003eAppendRowsRequest\u003c/code\u003e class within the Google BigQuery Storage v1 API, detailing its usage for appending rows to BigQuery tables.\u003c/p\u003e\n"],["\u003cp\u003e\u003ccode\u003eAppendRowsRequest\u003c/code\u003e is used in a bidirectional streaming RPC, where the initial request sets the table destination, which can be changed within the same connection for default streams.\u003c/p\u003e\n"],["\u003cp\u003eThe size of a single \u003ccode\u003eAppendRowsRequest\u003c/code\u003e must be less than 10 MB, and exceeding this size will result in an \u003ccode\u003eINVALID_ARGUMENT\u003c/code\u003e error.\u003c/p\u003e\n"],["\u003cp\u003eThe class offers support for both Arrow and Proto data formats for rows, with an option to define how missing values are interpreted, either globally or per field.\u003c/p\u003e\n"],["\u003cp\u003eA \u003ccode\u003ewrite_stream\u003c/code\u003e parameter is required for the initial request and when switching table destinations within the connection, and \u003ccode\u003eoffset\u003c/code\u003e can be used to specify conditional writes based on the current stream position.\u003c/p\u003e\n"]]],[],null,["# Google BigQuery Storage v1 API - Class AppendRowsRequest (3.17.0)\n\nVersion latestkeyboard_arrow_down\n\n- [3.17.0 (latest)](/dotnet/docs/reference/Google.Cloud.BigQuery.Storage.V1/latest/Google.Cloud.BigQuery.Storage.V1.AppendRowsRequest)\n- [3.16.0](/dotnet/docs/reference/Google.Cloud.BigQuery.Storage.V1/3.16.0/Google.Cloud.BigQuery.Storage.V1.AppendRowsRequest)\n- [3.15.0](/dotnet/docs/reference/Google.Cloud.BigQuery.Storage.V1/3.15.0/Google.Cloud.BigQuery.Storage.V1.AppendRowsRequest)\n- [3.14.0](/dotnet/docs/reference/Google.Cloud.BigQuery.Storage.V1/3.14.0/Google.Cloud.BigQuery.Storage.V1.AppendRowsRequest)\n- [3.13.0](/dotnet/docs/reference/Google.Cloud.BigQuery.Storage.V1/3.13.0/Google.Cloud.BigQuery.Storage.V1.AppendRowsRequest)\n- [3.12.0](/dotnet/docs/reference/Google.Cloud.BigQuery.Storage.V1/3.12.0/Google.Cloud.BigQuery.Storage.V1.AppendRowsRequest)\n- [3.11.0](/dotnet/docs/reference/Google.Cloud.BigQuery.Storage.V1/3.11.0/Google.Cloud.BigQuery.Storage.V1.AppendRowsRequest)\n- [3.10.0](/dotnet/docs/reference/Google.Cloud.BigQuery.Storage.V1/3.10.0/Google.Cloud.BigQuery.Storage.V1.AppendRowsRequest)\n- [3.9.0](/dotnet/docs/reference/Google.Cloud.BigQuery.Storage.V1/3.9.0/Google.Cloud.BigQuery.Storage.V1.AppendRowsRequest)\n- [3.8.0](/dotnet/docs/reference/Google.Cloud.BigQuery.Storage.V1/3.8.0/Google.Cloud.BigQuery.Storage.V1.AppendRowsRequest)\n- [3.7.0](/dotnet/docs/reference/Google.Cloud.BigQuery.Storage.V1/3.7.0/Google.Cloud.BigQuery.Storage.V1.AppendRowsRequest)\n- [3.6.0](/dotnet/docs/reference/Google.Cloud.BigQuery.Storage.V1/3.6.0/Google.Cloud.BigQuery.Storage.V1.AppendRowsRequest)\n- [3.5.0](/dotnet/docs/reference/Google.Cloud.BigQuery.Storage.V1/3.5.0/Google.Cloud.BigQuery.Storage.V1.AppendRowsRequest)\n- [3.4.0](/dotnet/docs/reference/Google.Cloud.BigQuery.Storage.V1/3.4.0/Google.Cloud.BigQuery.Storage.V1.AppendRowsRequest)\n- [3.3.0](/dotnet/docs/reference/Google.Cloud.BigQuery.Storage.V1/3.3.0/Google.Cloud.BigQuery.Storage.V1.AppendRowsRequest)\n- [3.2.0](/dotnet/docs/reference/Google.Cloud.BigQuery.Storage.V1/3.2.0/Google.Cloud.BigQuery.Storage.V1.AppendRowsRequest)\n- [3.1.0](/dotnet/docs/reference/Google.Cloud.BigQuery.Storage.V1/3.1.0/Google.Cloud.BigQuery.Storage.V1.AppendRowsRequest)\n- [3.0.0](/dotnet/docs/reference/Google.Cloud.BigQuery.Storage.V1/3.0.0/Google.Cloud.BigQuery.Storage.V1.AppendRowsRequest)\n- [2.9.0](/dotnet/docs/reference/Google.Cloud.BigQuery.Storage.V1/2.9.0/Google.Cloud.BigQuery.Storage.V1.AppendRowsRequest)\n- [2.8.0](/dotnet/docs/reference/Google.Cloud.BigQuery.Storage.V1/2.8.0/Google.Cloud.BigQuery.Storage.V1.AppendRowsRequest)\n- [2.7.0](/dotnet/docs/reference/Google.Cloud.BigQuery.Storage.V1/2.7.0/Google.Cloud.BigQuery.Storage.V1.AppendRowsRequest)\n- [2.6.0](/dotnet/docs/reference/Google.Cloud.BigQuery.Storage.V1/2.6.0/Google.Cloud.BigQuery.Storage.V1.AppendRowsRequest)\n- [2.5.0](/dotnet/docs/reference/Google.Cloud.BigQuery.Storage.V1/2.5.0/Google.Cloud.BigQuery.Storage.V1.AppendRowsRequest)\n- [2.4.0](/dotnet/docs/reference/Google.Cloud.BigQuery.Storage.V1/2.4.0/Google.Cloud.BigQuery.Storage.V1.AppendRowsRequest)\n- [2.3.0](/dotnet/docs/reference/Google.Cloud.BigQuery.Storage.V1/2.3.0/Google.Cloud.BigQuery.Storage.V1.AppendRowsRequest) \n\n public sealed class AppendRowsRequest : IMessage\u003cAppendRowsRequest\u003e, IEquatable\u003cAppendRowsRequest\u003e, IDeepCloneable\u003cAppendRowsRequest\u003e, IBufferMessage, IMessage\n\nReference documentation and code samples for the Google BigQuery Storage v1 API class AppendRowsRequest.\n\nRequest message for `AppendRows`.\n\nBecause AppendRows is a bidirectional streaming RPC, certain parts of the\nAppendRowsRequest need only be specified for the first request before\nswitching table destinations. You can also switch table destinations within\nthe same connection for the default stream.\n\nThe size of a single AppendRowsRequest must be less than 10 MB in size.\nRequests larger than this return an error, typically `INVALID_ARGUMENT`. \n\nInheritance\n-----------\n\n[object](https://learn.microsoft.com/dotnet/api/system.object) \\\u003e AppendRowsRequest \n\nImplements\n----------\n\n[IMessage](https://cloud.google.com/dotnet/docs/reference/Google.Protobuf/latest/Google.Protobuf.IMessage-1.html)[AppendRowsRequest](/dotnet/docs/reference/Google.Cloud.BigQuery.Storage.V1/latest/Google.Cloud.BigQuery.Storage.V1.AppendRowsRequest), [IEquatable](https://learn.microsoft.com/dotnet/api/system.iequatable-1)[AppendRowsRequest](/dotnet/docs/reference/Google.Cloud.BigQuery.Storage.V1/latest/Google.Cloud.BigQuery.Storage.V1.AppendRowsRequest), [IDeepCloneable](https://cloud.google.com/dotnet/docs/reference/Google.Protobuf/latest/Google.Protobuf.IDeepCloneable-1.html)[AppendRowsRequest](/dotnet/docs/reference/Google.Cloud.BigQuery.Storage.V1/latest/Google.Cloud.BigQuery.Storage.V1.AppendRowsRequest), [IBufferMessage](https://cloud.google.com/dotnet/docs/reference/Google.Protobuf/latest/Google.Protobuf.IBufferMessage.html), [IMessage](https://cloud.google.com/dotnet/docs/reference/Google.Protobuf/latest/Google.Protobuf.IMessage.html) \n\nInherited Members\n-----------------\n\n[object.GetHashCode()](https://learn.microsoft.com/dotnet/api/system.object.gethashcode) \n[object.GetType()](https://learn.microsoft.com/dotnet/api/system.object.gettype) \n[object.ToString()](https://learn.microsoft.com/dotnet/api/system.object.tostring)\n\nNamespace\n---------\n\n[Google.Cloud.BigQuery.Storage.V1](/dotnet/docs/reference/Google.Cloud.BigQuery.Storage.V1/latest/Google.Cloud.BigQuery.Storage.V1)\n\nAssembly\n--------\n\nGoogle.Cloud.BigQuery.Storage.V1.dll\n\nConstructors\n------------\n\n### AppendRowsRequest()\n\n public AppendRowsRequest()\n\n### AppendRowsRequest(AppendRowsRequest)\n\n public AppendRowsRequest(AppendRowsRequest other)\n\nProperties\n----------\n\n### ArrowRows\n\n public AppendRowsRequest.Types.ArrowData ArrowRows { get; set; }\n\nRows in arrow format. This is an experimental feature only selected for\nallowlisted customers.\n\n### DefaultMissingValueInterpretation\n\n public AppendRowsRequest.Types.MissingValueInterpretation DefaultMissingValueInterpretation { get; set; }\n\nOptional. Default missing value interpretation for all columns in the\ntable. When a value is specified on an `AppendRowsRequest`, it is applied\nto all requests on the connection from that point forward, until a\nsubsequent `AppendRowsRequest` sets it to a different value.\n`missing_value_interpretation` can override\n`default_missing_value_interpretation`. For example, if you want to write\n`NULL` instead of using default values for some columns, you can set\n`default_missing_value_interpretation` to `DEFAULT_VALUE` and at the same\ntime, set `missing_value_interpretations` to `NULL_VALUE` on those columns.\n\n### MissingValueInterpretations\n\n public MapField\u003cstring, AppendRowsRequest.Types.MissingValueInterpretation\u003e MissingValueInterpretations { get; }\n\nA map to indicate how to interpret missing value for some fields. Missing\nvalues are fields present in user schema but missing in rows. The key is\nthe field name. The value is the interpretation of missing values for the\nfield.\n\nFor example, a map {'foo': NULL_VALUE, 'bar': DEFAULT_VALUE} means all\nmissing values in field foo are interpreted as NULL, all missing values in\nfield bar are interpreted as the default value of field bar in table\nschema.\n\nIf a field is not in this map and has missing values, the missing values\nin this field are interpreted as NULL.\n\nThis field only applies to the current request, it won't affect other\nrequests on the connection.\n\nCurrently, field name can only be top-level column name, can't be a struct\nfield path like 'foo.bar'.\n\n### Offset\n\n public long? Offset { get; set; }\n\nIf present, the write is only performed if the next append offset is same\nas the provided value. If not present, the write is performed at the\ncurrent end of stream. Specifying a value for this field is not allowed\nwhen calling AppendRows for the '_default' stream.\n\n### ProtoRows\n\n public AppendRowsRequest.Types.ProtoData ProtoRows { get; set; }\n\nRows in proto format.\n\n### RowsCase\n\n public AppendRowsRequest.RowsOneofCase RowsCase { get; }\n\n### TraceId\n\n public string TraceId { get; set; }\n\nId set by client to annotate its identity. Only initial request setting is\nrespected.\n\n### WriteStream\n\n public string WriteStream { get; set; }\n\nRequired. The write_stream identifies the append operation. It must be\nprovided in the following scenarios:\n\n- In the first request to an AppendRows connection.\n\n- In all subsequent requests to an AppendRows connection, if you use the\n same connection to write to multiple tables or change the input schema for\n default streams.\n\nFor explicitly created write streams, the format is:\n\n- `projects/{project}/datasets/{dataset}/tables/{table}/streams/{id}`\n\nFor the special default stream, the format is:\n\n- `projects/{project}/datasets/{dataset}/tables/{table}/streams/_default`.\n\nAn example of a possible sequence of requests with write_stream fields\nwithin a single connection:\n\n- r1: {write_stream: stream_name_1}\n\n- r2: {write_stream: /*omit*/}\n\n- r3: {write_stream: /*omit*/}\n\n- r4: {write_stream: stream_name_2}\n\n- r5: {write_stream: stream_name_2}\n\nThe destination changed in request_4, so the write_stream field must be\npopulated in all subsequent requests in this stream.\n\n### WriteStreamAsWriteStreamName\n\n public WriteStreamName WriteStreamAsWriteStreamName { get; set; }\n\n[WriteStreamName](/dotnet/docs/reference/Google.Cloud.BigQuery.Storage.V1/latest/Google.Cloud.BigQuery.Storage.V1.WriteStreamName)-typed view over the [WriteStream](/dotnet/docs/reference/Google.Cloud.BigQuery.Storage.V1/latest/Google.Cloud.BigQuery.Storage.V1.AppendRowsRequest#Google_Cloud_BigQuery_Storage_V1_AppendRowsRequest_WriteStream) resource name property."]]