def to_table(dataset_ref, model):
     schema = model.schema
     if schema:
         schema = tuple(
             BigQuerySchemaField.to_schema_field(s) for s in schema)
     else:
         schema = None
     table_ref = TableReference(dataset_ref, model.table_id)
     table = Table(table_ref, schema)
     table.friendly_name = model.friendly_name
     table.description = model.description
     table.expires = model.expires
     table.partitioning_type = model.partitioning_type
     if model.view_use_legacy_sql is not None:
         table.view_use_legacy_sql = model.view_use_legacy_sql
     if model.view_query is not None:
         table.view_query = model.view_query
     table.labels = model.labels if model.labels is not None else dict()
     return table
    def create_table(self, is_temporary=False):
        stream_schema_message = self.stream_schema_message

        client = self.open_connection()
        project_id = self.connection_config['project_id']
        dataset_id = self.schema_name
        table_name = self.table_name(stream_schema_message['stream'],
                                     is_temporary,
                                     without_schema=True)

        schema = [
            column_type(name, schema)
            for (name, schema) in self.flatten_schema.items()
        ]

        table = Table('{}.{}.{}'.format(project_id, dataset_id, table_name),
                      schema)
        if is_temporary:
            table.expires = datetime.datetime.now() + datetime.timedelta(
                days=1)

        client.create_table(table, schema)