### Apache Airflow version

Other Airflow 2 version (please specify below)
Airflow 2.4.2

### What happened

BaseSQLToGCSOperator creates row group for each rows during parquet generation, which cause compression not work and increase file size.
![image](https://github.com/apache/airflow/assets/51909776/bf256065-c130-4354-81c7-8ca2ed4e8d93)


### What you think should happen instead

_No response_

### How to reproduce

OracleToGCSOperator(
        task_id='oracle_to_gcs_parquet_test',
        gcp_conn_id=GCP_CONNECTION,
        oracle_conn_id=ORACLE_CONNECTION,
        sql='',
        bucket=GCS_BUCKET_NAME,
        filename='',
        export_format='parquet',
)

### Operating System

CentOS Linux 7

### Versions of Apache Airflow Providers

apache-airflow-providers-apache-hive  2.1.0
apache-airflow-providers-apache-sqoop 2.0.2
apache-airflow-providers-celery       3.0.0
apache-airflow-providers-common-sql   1.2.0
apache-airflow-providers-ftp          3.1.0
apache-airflow-providers-google       8.4.0
apache-airflow-providers-http         4.0.0
apache-airflow-providers-imap         3.0.0
apache-airflow-providers-mysql        3.0.0
apache-airflow-providers-oracle       2.1.0
apache-airflow-providers-salesforce   5.3.0
apache-airflow-providers-sqlite       3.2.1

### Deployment

Official Apache Airflow Helm Chart

### Deployment details

_No response_

### Anything else

_No response_

### Are you willing to submit PR?

- [ ] Yes I am willing to submit a PR!

### Code of Conduct

- [X] I agree to follow this project's [Code of Conduct](https://github.com/apache/airflow/blob/main/CODE_OF_CONDUCT.md)

}
        return schema_file_to_upload
    def _upload_to_gcs(self, file_to_upload):
        """Upload a file (data split or schema .json file) to Google Cloud Storage."""
        hook = GCSHook(
            gcp_conn_id=self.gcp_conn_id,
            impersonation_chain=self.impersonation_chain,
        )
        is_data_file = file_to_upload.get("file_name") != self.schema_filename
        metadata = None
        if is_data_file and self.upload_metadata:
            metadata = {"row_count": file_to_upload["file_row_count"]}
        object_name = file_to_upload.get("file_name")
        if is_data_file and self.partition_columns:
            
            partition_values = file_to_upload.get("partition_values")
            head_path, tail_path = os.path.split(object_name)
            partition_subprefix = [
                f"{col}={val}" for col, val in zip(self.partition_columns, partition_values)
            ]
            object_name = os.path.join(head_path, *partition_subprefix, tail_path)
        hook.upload(
            self.bucket,
            object_name,
            file_to_upload.get("file_handle").name,
            mime_type=file_to_upload.get("file_mime_type"),
            gzip=self.gzip if is_data_file else False,
            metadata=metadata,
        )