Problem converting multi-delimited kv string

You can use a ruby filter to do the splits. I haven't tested it, but something like

ruby {
    code => '
        event.get("profile2").each { |k, v|
            event.remove("[profile2][#{k}]") # Not sure if this is needed
            event.set("[profile2][#{k}]", v.split(";"))
        }
    '
}