diff --git a/samples/snippets/append_rows_proto2.py b/samples/snippets/append_rows_proto2.py index 73ad221a..7f3d88a7 100644 --- a/samples/snippets/append_rows_proto2.py +++ b/samples/snippets/append_rows_proto2.py @@ -214,6 +214,14 @@ def append_rows_proto2(project_id: str, dataset_id: str, table_id: str): row.struct_list.append(sub_message) proto_rows.serialized_rows.append(row.SerializeToString()) + row = sample_data_pb2.SampleData() + row.row_num = 16 + date_value = datetime.date(2021, 8, 8) + epoch_value = datetime.date(1970, 1, 1) + delta = date_value - epoch_value + row.range_date.start = delta.days + proto_rows.serialized_rows.append(row.SerializeToString()) + request = types.AppendRowsRequest() request.offset = 12 proto_data = types.AppendRowsRequest.ProtoData() diff --git a/samples/snippets/sample_data.proto b/samples/snippets/sample_data.proto index 3e9f19ce..6f0bb93a 100644 --- a/samples/snippets/sample_data.proto +++ b/samples/snippets/sample_data.proto @@ -29,6 +29,11 @@ message SampleData { optional int64 sub_int_col = 1; } + message RangeValue { + optional int32 start = 1; + optional int32 end = 2; + } + // The following types map directly between protocol buffers and their // corresponding BigQuery data types. optional bool bool_col = 1; @@ -55,7 +60,11 @@ message SampleData { optional SampleStruct struct_col = 14; repeated SampleStruct struct_list = 15; + // Range types, see: + // https://cloud.google.com/bigquery/docs/reference/standard-sql/data-types#range_type + optional RangeValue range_date = 16; + // Use the required keyword for client-side validation of required fields. - required int64 row_num = 16; + required int64 row_num = 17; } // [END bigquerystorage_append_rows_raw_proto2_definition] diff --git a/samples/snippets/sample_data_pb2.py b/samples/snippets/sample_data_pb2.py index 4e73f1dd..19707cf0 100644 --- a/samples/snippets/sample_data_pb2.py +++ b/samples/snippets/sample_data_pb2.py @@ -2,10 +2,9 @@ # Generated by the protocol buffer compiler. DO NOT EDIT! # source: sample_data.proto """Generated protocol buffer code.""" +from google.protobuf.internal import builder as _builder from google.protobuf import descriptor as _descriptor from google.protobuf import descriptor_pool as _descriptor_pool -from google.protobuf import message as _message -from google.protobuf import reflection as _reflection from google.protobuf import symbol_database as _symbol_database # @@protoc_insertion_point(imports) @@ -14,37 +13,17 @@ DESCRIPTOR = _descriptor_pool.Default().AddSerializedFile( - b'\n\x11sample_data.proto"\xa9\x03\n\nSampleData\x12\x10\n\x08\x62ool_col\x18\x01 \x01(\x08\x12\x11\n\tbytes_col\x18\x02 \x01(\x0c\x12\x13\n\x0b\x66loat64_col\x18\x03 \x01(\x01\x12\x11\n\tint64_col\x18\x04 \x01(\x03\x12\x12\n\nstring_col\x18\x05 \x01(\t\x12\x10\n\x08\x64\x61te_col\x18\x06 \x01(\x05\x12\x14\n\x0c\x64\x61tetime_col\x18\x07 \x01(\t\x12\x15\n\rgeography_col\x18\x08 \x01(\t\x12\x13\n\x0bnumeric_col\x18\t \x01(\t\x12\x16\n\x0e\x62ignumeric_col\x18\n \x01(\t\x12\x10\n\x08time_col\x18\x0b \x01(\t\x12\x15\n\rtimestamp_col\x18\x0c \x01(\x03\x12\x12\n\nint64_list\x18\r \x03(\x03\x12,\n\nstruct_col\x18\x0e \x01(\x0b\x32\x18.SampleData.SampleStruct\x12-\n\x0bstruct_list\x18\x0f \x03(\x0b\x32\x18.SampleData.SampleStruct\x12\x0f\n\x07row_num\x18\x10 \x02(\x03\x1a#\n\x0cSampleStruct\x12\x13\n\x0bsub_int_col\x18\x01 \x01(\x03' + b'\n\x11sample_data.proto"\xff\x03\n\nSampleData\x12\x10\n\x08\x62ool_col\x18\x01 \x01(\x08\x12\x11\n\tbytes_col\x18\x02 \x01(\x0c\x12\x13\n\x0b\x66loat64_col\x18\x03 \x01(\x01\x12\x11\n\tint64_col\x18\x04 \x01(\x03\x12\x12\n\nstring_col\x18\x05 \x01(\t\x12\x10\n\x08\x64\x61te_col\x18\x06 \x01(\x05\x12\x14\n\x0c\x64\x61tetime_col\x18\x07 \x01(\t\x12\x15\n\rgeography_col\x18\x08 \x01(\t\x12\x13\n\x0bnumeric_col\x18\t \x01(\t\x12\x16\n\x0e\x62ignumeric_col\x18\n \x01(\t\x12\x10\n\x08time_col\x18\x0b \x01(\t\x12\x15\n\rtimestamp_col\x18\x0c \x01(\x03\x12\x12\n\nint64_list\x18\r \x03(\x03\x12,\n\nstruct_col\x18\x0e \x01(\x0b\x32\x18.SampleData.SampleStruct\x12-\n\x0bstruct_list\x18\x0f \x03(\x0b\x32\x18.SampleData.SampleStruct\x12*\n\nrange_date\x18\x10 \x01(\x0b\x32\x16.SampleData.RangeValue\x12\x0f\n\x07row_num\x18\x11 \x02(\x03\x1a#\n\x0cSampleStruct\x12\x13\n\x0bsub_int_col\x18\x01 \x01(\x03\x1a(\n\nRangeValue\x12\r\n\x05start\x18\x01 \x01(\x05\x12\x0b\n\x03\x65nd\x18\x02 \x01(\x05' ) - -_SAMPLEDATA = DESCRIPTOR.message_types_by_name["SampleData"] -_SAMPLEDATA_SAMPLESTRUCT = _SAMPLEDATA.nested_types_by_name["SampleStruct"] -SampleData = _reflection.GeneratedProtocolMessageType( - "SampleData", - (_message.Message,), - { - "SampleStruct": _reflection.GeneratedProtocolMessageType( - "SampleStruct", - (_message.Message,), - { - "DESCRIPTOR": _SAMPLEDATA_SAMPLESTRUCT, - "__module__": "sample_data_pb2" - # @@protoc_insertion_point(class_scope:SampleData.SampleStruct) - }, - ), - "DESCRIPTOR": _SAMPLEDATA, - "__module__": "sample_data_pb2" - # @@protoc_insertion_point(class_scope:SampleData) - }, -) -_sym_db.RegisterMessage(SampleData) -_sym_db.RegisterMessage(SampleData.SampleStruct) - +_builder.BuildMessageAndEnumDescriptors(DESCRIPTOR, globals()) +_builder.BuildTopDescriptorsAndMessages(DESCRIPTOR, "sample_data_pb2", globals()) if _descriptor._USE_C_DESCRIPTORS == False: DESCRIPTOR._options = None _SAMPLEDATA._serialized_start = 22 - _SAMPLEDATA._serialized_end = 447 - _SAMPLEDATA_SAMPLESTRUCT._serialized_start = 412 - _SAMPLEDATA_SAMPLESTRUCT._serialized_end = 447 + _SAMPLEDATA._serialized_end = 533 + _SAMPLEDATA_SAMPLESTRUCT._serialized_start = 456 + _SAMPLEDATA_SAMPLESTRUCT._serialized_end = 491 + _SAMPLEDATA_RANGEVALUE._serialized_start = 493 + _SAMPLEDATA_RANGEVALUE._serialized_end = 533 # @@protoc_insertion_point(module_scope) diff --git a/samples/snippets/sample_data_schema.json b/samples/snippets/sample_data_schema.json index ba6ba102..40efb712 100644 --- a/samples/snippets/sample_data_schema.json +++ b/samples/snippets/sample_data_schema.json @@ -72,5 +72,10 @@ {"name": "sub_int_col", "type": "INTEGER"} ], "mode": "REPEATED" + }, + { + "name": "range_date", + "type": "RANGE", + "rangeElementType": {"type": "DATE"} } ]