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.log.info('Start patching dataset: %s:%s', dataset_project_id, dataset_id)
        dataset = (
            service.datasets()  # 
            .patch(
                datasetId=dataset_id,
                projectId=dataset_project_id,
                body=dataset_resource,
            )
            .execute(num_retries=self.num_retries)
        )
        self.log.info("Dataset successfully patched: %s", dataset)
        return dataset
    def get_dataset_tables_list(
        self,
        dataset_id: str,
        project_id: Optional[str] = None,
        table_prefix: Optional[str] = None,
        max_results: Optional[int] = None,
    ) -> List[Dict[str, Any]]:
        """
        Method returns tables list of a BigQuery tables. If table prefix is specified,
        only tables beginning by it are returned.
        For more information, see:
        https://cloud.google.com/bigquery/docs/reference/rest/v2/tables/list
        :param dataset_id: The BigQuery Dataset ID
        :type dataset_id: str
        :param project_id: The Google Cloud Project ID
        :type project_id: str
        :param table_prefix: Tables must begin by this prefix to be returned (case sensitive)
        :type table_prefix: str