BigQuery supports clustering for both partitioned and non-partitioned tables.

Reference: [https://cloud.google.com/bigquery/docs/clustered-tables](https://cloud.google.com/bigquery/docs/clustered-tables)
airflow/providers/google/cloud/hooks/bigquery.py
self,
        sql: str,
        destination_dataset_table: Optional[str] = None,
        write_disposition: str = 'WRITE_EMPTY',
        allow_large_results: bool = False,
        flatten_results: Optional[bool] = None,
        udf_config: Optional[List] = None,
        use_legacy_sql: Optional[bool] = None,
        maximum_billing_tier: Optional[int] = None,
        maximum_bytes_billed: Optional[float] = None,
        create_disposition: str = 'CREATE_IF_NEEDED',
        query_params: Optional[List] = None,
        labels: Optional[Dict] = None,
        schema_update_options: Optional[Iterable] = None,
        priority: str = 'INTERACTIVE',
        time_partitioning: Optional[Dict] = None,
        api_resource_configs: Optional[Dict] = None,
        cluster_fields: Optional[List[str]] = None,
        location: Optional[str] = None,
        encryption_configuration: Optional[Dict] = None,
    ) -> str:
        """
        Executes a BigQuery SQL query. Optionally persists results in a BigQuery
        table. See here:
        https://cloud.google.com/bigquery/docs/reference/v2/jobs
        For more details about these parameters.
        :param sql: The BigQuery SQL to execute.