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

"""Convert values from DBAPI to output-friendly formats."""
        return [
            self.convert_type(value, col_type_dict.get(name), stringify_dict=self.stringify_dict)
            for name, value in zip(schema, row)
        ]
    def _write_local_data_files(self, cursor):
        """
        Takes a cursor, and writes results to a local file.
        :return: A dictionary where keys are filenames to be used as object
            names in GCS, and values are file handles to local files that
            contain the data for the GCS objects.
        """
        import os
        org_schema = list(map(lambda schema_tuple: schema_tuple[0], cursor.description))
        schema = [column for column in org_schema if column not in self.exclude_columns]
        col_type_dict = self._get_col_type_dict()
        file_no = 0
        tmp_file_handle = NamedTemporaryFile(delete=True)
        if self.export_format == "csv":
            file_mime_type = "text/csv"
        elif self.export_format == "parquet":
            file_mime_type = "application/octet-stream"
        else:
            file_mime_type = "application/json"