def parquet_options(self) -> Optional[ParquetOptions]: """Additional properties to set if ``sourceFormat`` is set to PARQUET. See: https://cloud.google.com/bigquery/docs/reference/rest/v2/tables#ExternalDataConfiguration.FIELDS.parquet_options """ if self.source_format == ExternalSourceFormat.PARQUET: self._properties.setdefault(ParquetOptions._RESOURCE_NAME, {}) resource = self._properties.get(ParquetOptions._RESOURCE_NAME) if resource is None: return None options = ParquetOptions() options._properties = resource return options
def parquet_options(self): """Optional[google.cloud.bigquery.format_options.ParquetOptions]: Additional properties to set if ``sourceFormat`` is set to PARQUET. See: https://cloud.google.com/bigquery/docs/reference/rest/v2/Job#JobConfigurationLoad.FIELDS.parquet_options """ prop = self._get_sub_prop("parquetOptions") if prop is not None: prop = ParquetOptions.from_api_repr(prop) return prop
def test_parquet_options_setter(self): from google.cloud.bigquery.format_options import ParquetOptions parquet_options = ParquetOptions.from_api_repr( dict(enumAsString=False, enableListInference=True)) config = self._get_target_class()() config.parquet_options = parquet_options self.assertEqual( config._properties["load"]["parquetOptions"], { "enumAsString": False, "enableListInference": True }, )
def test_parquet_options_setter_non_parquet_format(self): from google.cloud.bigquery.format_options import ParquetOptions parquet_options = ParquetOptions.from_api_repr({ "enumAsString": False, "enableListInference": True }) ec = external_config.ExternalConfig( external_config.ExternalSourceFormat.CSV) with self.assertRaisesRegex(TypeError, "Cannot set.*source format is CSV"): ec.parquet_options = parquet_options
def test_parquet_options_setter(self): from google.cloud.bigquery.format_options import ParquetOptions parquet_options = ParquetOptions.from_api_repr({ "enumAsString": False, "enableListInference": True }) ec = external_config.ExternalConfig( external_config.ExternalSourceFormat.PARQUET) ec.parquet_options = parquet_options # Setting Parquet options should be reflected in the generic options attribute. self.assertFalse(ec.options.enum_as_string) self.assertTrue(ec.options.enable_list_inference)
def test_to_api_repr_parquet(self): from google.cloud.bigquery.format_options import ParquetOptions ec = external_config.ExternalConfig( external_config.ExternalSourceFormat.PARQUET) options = ParquetOptions.from_api_repr( dict(enumAsString=False, enableListInference=True)) ec._options = options exp_resource = { "sourceFormat": external_config.ExternalSourceFormat.PARQUET, "parquetOptions": { "enumAsString": False, "enableListInference": True }, } got_resource = ec.to_api_repr() self.assertEqual(got_resource, exp_resource)
def test_parquet_options_getter(self): from google.cloud.bigquery.format_options import ParquetOptions parquet_options = ParquetOptions.from_api_repr({ "enumAsString": True, "enableListInference": False }) ec = external_config.ExternalConfig( external_config.ExternalSourceFormat.PARQUET) self.assertIsNone(ec.parquet_options.enum_as_string) self.assertIsNone(ec.parquet_options.enable_list_inference) ec._options = parquet_options self.assertTrue(ec.parquet_options.enum_as_string) self.assertFalse(ec.parquet_options.enable_list_inference) self.assertIs(ec.parquet_options, ec.options)