### Description

Add the ability to partition parquet files by columns. Right now you can partition files only by size.

### Use case/motivation

_No response_

### Related issues

_No response_

### Are you willing to submit a PR?

- [X] 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)

files = []
        total_row_count = 0
        total_files = 0
        self.log.info("Writing local data files")
        for file_to_upload in self._write_local_data_files(cursor):
            
            file_to_upload["file_handle"].flush()
            self.log.info("Uploading chunk file #%d to GCS.", counter)
            self._upload_to_gcs(file_to_upload)
            self.log.info("Removing local file")
            file_to_upload["file_handle"].close()
            
            total_row_count += file_to_upload["file_row_count"]
            total_files += 1
            files.append(
                {
                    "file_name": file_to_upload["file_name"],
                    "file_mime_type": file_to_upload["file_mime_type"],
                    "file_row_count": file_to_upload["file_row_count"],
                }
            )
            counter += 1
        file_meta = {
            "bucket": self.bucket,
            "total_row_count": total_row_count,
            "total_files": total_files,
            "files": files,
        }
        return file_meta
    def convert_types(self, schema, col_type_dict, row) -> list: