Skip to content

Commit

Permalink
Support standard SQL names in to_standard_sql()
Browse files Browse the repository at this point in the history
  • Loading branch information
plamut committed Aug 2, 2019
1 parent abe939a commit 3f03054
Show file tree
Hide file tree
Showing 2 changed files with 18 additions and 7 deletions.
5 changes: 5 additions & 0 deletions bigquery/google/cloud/bigquery/schema.py
Original file line number Diff line number Diff line change
Expand Up @@ -24,10 +24,15 @@
"STRING": types.StandardSqlDataType.STRING,
"BYTES": types.StandardSqlDataType.BYTES,
"INTEGER": types.StandardSqlDataType.INT64,
"INT64": types.StandardSqlDataType.INT64,
"FLOAT": types.StandardSqlDataType.FLOAT64,
"FLOAT64": types.StandardSqlDataType.FLOAT64,
"NUMERIC": types.StandardSqlDataType.NUMERIC,
"BOOLEAN": types.StandardSqlDataType.BOOL,
"BOOL": types.StandardSqlDataType.BOOL,
"GEOGRAPHY": types.StandardSqlDataType.GEOGRAPHY,
"RECORD": types.StandardSqlDataType.STRUCT,
"STRUCT": types.StandardSqlDataType.STRUCT,
"TIMESTAMP": types.StandardSqlDataType.TIMESTAMP,
"DATE": types.StandardSqlDataType.DATE,
"TIME": types.StandardSqlDataType.TIME,
Expand Down
20 changes: 13 additions & 7 deletions bigquery/tests/unit/test_schema.py
Original file line number Diff line number Diff line change
Expand Up @@ -160,10 +160,16 @@ def test_fields_property(self):
def test_to_standard_sql_simple_type(self):
sql_type = self._get_standard_sql_data_type_class()
examples = (
# a few legacy types
("INTEGER", sql_type.INT64),
("FLOAT", sql_type.FLOAT64),
("BOOLEAN", sql_type.BOOL),
("DATETIME", sql_type.DATETIME),
# a few standard types
("INT64", sql_type.INT64),
("FLOAT64", sql_type.FLOAT64),
("BOOL", sql_type.BOOL),
("GEOGRAPHY", sql_type.GEOGRAPHY),
)
for legacy_type, standard_type in examples:
field = self._make_one("some_field", legacy_type)
Expand All @@ -172,7 +178,7 @@ def test_to_standard_sql_simple_type(self):
self.assertEqual(standard_field.type.type_kind, standard_type)
self.assertFalse(standard_field.type.HasField("sub_type"))

def test_to_standard_sql_complex_type(self):
def test_to_standard_sql_struct_type(self):
from google.cloud.bigquery_v2 import types

# Expected result object:
Expand Down Expand Up @@ -240,13 +246,13 @@ def test_to_standard_sql_complex_type(self):
"last_used", "RECORD", fields=(sub_sub_field1, sub_sub_field2)
)
sub_field_bytes = self._make_one("image_content", "BYTES")
schema_field = self._make_one(
"image_usage", "RECORD", fields=(sub_field_bytes, sub_field_record)
)

standard_field = schema_field.to_standard_sql()

self.assertEqual(standard_field, expected_result)
for type_name in ("RECORD", "STRUCT"):
schema_field = self._make_one(
"image_usage", type_name, fields=(sub_field_bytes, sub_field_record)
)
standard_field = schema_field.to_standard_sql()
self.assertEqual(standard_field, expected_result)

def test_to_standard_sql_unknown_type(self):
sql_type = self._get_standard_sql_data_type_class()
Expand Down

0 comments on commit 3f03054

Please sign in to comment.