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,
        dataset_id: str,
        table_id: str,
        max_results: Optional[int] = None,
        selected_fields: Optional[str] = None,
        page_token: Optional[str] = None,
        start_index: Optional[int] = None,
    ) -> List[Dict]:
        """
        Get the data of a given dataset.table and optionally with selected columns.
        see https://cloud.google.com/bigquery/docs/reference/v2/tabledata/list
        :param dataset_id: the dataset ID of the requested table.
        :param table_id: the table ID of the requested table.
        :param max_results: the maximum results to return.
        :param selected_fields: List of fields to return (comma-separated). If
            unspecified, all fields are returned.
        :param page_token: page token, returned from a previous call,
            identifying the result set.
        :param start_index: zero based index of the starting row to read.
        :return: list of rows
        """
        warnings.warn("This method is deprecated. Please use `list_rows`.", DeprecationWarning)
        rows = self.list_rows(dataset_id, table_id, max_results, selected_fields, page_token, start_index)
        return [dict(r) for r in rows]
    @GoogleBaseHook.fallback_to_default_project_id
    def list_rows(