def get_tables_from_mapping(source_table, dest_fields, source_dest_map):
    """
    Obtain a petl tables from a source petl table and some mappings
    source_table: petl table
    dest_fields: list
    source_dest_map: dict
    
    Returns
    dest_table: petl table
    
    """
    source_fields = list(source_table.header())

    # Build up trns_table and spl_table from the source_table
    dest_table = source_table.addrownumbers()

    # Add the new fields one at a time.  There might be a better 
    # way to do this.
    for field in dest_fields:
        if field in source_dest_map:
            dest_table = dest_table.addfield(field, source_dest_map[field])
        else:
            dest_table = dest_table.addfield(field, '')

    # Cut out the original columns from the source_table to obtain
    # the destination tables, trns_table and spl_table
    dest_table = dest_table.cutout(*source_fields)
    dest_table = dest_table.cutout('row')

    return dest_table