def key_by_tollbooth_month(element):
    """
    Beam works with (key, value) tuples as rows.
    tuple's first element is treated as the key; while second element is the value

    both key and value can be any type; but typically they are constructed of tuples themselves
    if multiple keys or values are needed. for example:
    ( (key1, key2, ...) , (value1, value2, ....) )
    """
    # we're creating a multiple key (tollbooth, month) key with single value (total) tuple
    return (element['tollbooth'], element['month']), element['total']