def METHOD_NAME(self) -> Iterator[TableMetadata]:
    """
    Using itertools.groupby and raw level iterator, it groups to table and yields TableMetadata
    :return:
    """
    for key, group in groupby(self._get_raw_extract_iter(), self._get_table_key):
        columns = []
        # no table description and column description
        for row in group:
            last_row = row
            columns.append(ColumnMetadata(name=row['col_name'],
                                          description='',
                                          col_type=row['col_type'],
                                          sort_order=row['col_sort_order']))
        yield TableMetadata(database='druid',
                            cluster=self._cluster,
                            schema=last_row['schema'],
                            name=last_row['name'],
                            description='',
                            columns=columns)