示例#1
0
    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
示例#2
0
    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
示例#3
0
    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)