diff --git a/bigquery/google/cloud/bigquery/table.py b/bigquery/google/cloud/bigquery/table.py index c145d6a9dc1c..cb72dde189b2 100644 --- a/bigquery/google/cloud/bigquery/table.py +++ b/bigquery/google/cloud/bigquery/table.py @@ -1335,7 +1335,10 @@ def expiration_ms(self): @expiration_ms.setter def expiration_ms(self, value): - self._properties["expirationMs"] = str(value) + if value is not None: + # Allow explicitly setting the expiration to None. + value = str(value) + self._properties["expirationMs"] = value @property def require_partition_filter(self): diff --git a/bigquery/tests/unit/test_table.py b/bigquery/tests/unit/test_table.py index 04a67c603ba9..d84fa6e4b1c8 100644 --- a/bigquery/tests/unit/test_table.py +++ b/bigquery/tests/unit/test_table.py @@ -1683,3 +1683,8 @@ def test___repr___explicit(self): "type=DAY)" ) self.assertEqual(repr(time_partitioning), expected) + + def test_set_expiration_w_none(self): + time_partitioning = self._make_one() + time_partitioning.expiration_ms = None + assert time_partitioning._properties["expirationMs"] is None