### 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)

)
                
                tmp_file_handle.write(b"\n")
            
            fppos = tmp_file_handle.tell()
            tmp_file_handle.seek(0, os.SEEK_END)
            file_size = tmp_file_handle.tell()
            tmp_file_handle.seek(fppos, os.SEEK_SET)
            if file_size >= self.approx_max_file_size_bytes:
                file_no += 1
                if self.export_format == "parquet":
                    parquet_writer.close()
                yield file_to_upload
                tmp_file_handle = NamedTemporaryFile(delete=True)
                file_to_upload = {
                    "file_name": self.filename.format(file_no),
                    "file_handle": tmp_file_handle,
                    "file_mime_type": file_mime_type,
                    "file_row_count": 0,
                }
                if self.export_format == "csv":
                    csv_writer = self._configure_csv_file(tmp_file_handle, schema)
                if self.export_format == "parquet":
                    parquet_writer = self._configure_parquet_file(tmp_file_handle, parquet_schema)
        if self.export_format == "parquet":
            parquet_writer.close()
        
        if file_to_upload["file_row_count"] > 0:
            yield file_to_upload
    def _configure_csv_file(self, file_handle, schema):