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

csv_calls = []
        for i in range(0, 3):
            csv_calls.append(
                mock.call(
                    BUCKET,
                    FILENAME.format(i),
                    TMP_FILE_NAME,
                    mime_type="text/csv",
                    gzip=True,
                    metadata={"row_count": 1},
                )
            )
        json_call = mock.call(
            BUCKET, SCHEMA_FILE, TMP_FILE_NAME, mime_type=APP_JSON, gzip=False, metadata=None
        )
        upload_calls = [json_call, csv_calls[0], csv_calls[1], csv_calls[2]]
        mock_upload.assert_has_calls(upload_calls)
        mock_close.assert_has_calls([mock.call(), mock.call(), mock.call(), mock.call()])
        mock_query.reset_mock()
        mock_flush.reset_mock()
        mock_upload.reset_mock()
        mock_close.reset_mock()
        cursor_mock.reset_mock()
        cursor_mock.__iter__ = Mock(return_value=iter(INPUT_DATA))
        
        operator = DummySQLToGCSOperator(
            sql=SQL, bucket=BUCKET, filename=FILENAME, task_id=TASK_ID, export_format="json", schema=SCHEMA
        )
        result = operator.execute(context=dict())
        assert result == {