<SYSTEM_TASK:>
Solve the following problem using Python, implementing the functions described below, one line at a time
<END_TASK>
<USER_TASK:>
Description:
 def create_table(self, dataset, table, schema, expiration_time=None, time_partitioning=False, project_id=None):
 """Create a new table in the dataset. Parameters dataset : str The dataset to create the table in table : str The name of the table to create schema : dict The table schema expiration_time : int or double, optional The expiry time in milliseconds since the epoch. time_partitioning : bool, optional Create a time partitioning. project_id: str, optional The project to create the table in Returns ------- Union[bool, dict] If the table was successfully created, or response from BigQuery if swallow_results is set to False """

        project_id = self._get_project_id(project_id)

        body = {
            'schema': {'fields': schema},
            'tableReference': {
                'tableId': table,
                'projectId': project_id,
                'datasetId': dataset
            }
        }

        if expiration_time is not None:
            body['expirationTime'] = expiration_time

        if time_partitioning:
            body['timePartitioning'] = {'type': 'DAY'}

        try:
            table = self.bigquery.tables().insert(
                projectId=project_id,
                datasetId=dataset,
                body=body
            ).execute(num_retries=self.num_retries)
            if self.swallow_results:
                return True
            else:
                return table

        except HttpError as e:
            logger.error(('Cannot create table {0}.{1}.{2}\n'
                          'Http Error: {3}').format(project_id, dataset, table, e.content))
            if self.swallow_results:
                return False
            else:
                return {}