โ12-13-2017 11:41 AM
Hiโฆ
We have below requirment:
Original data from data soure(e.g. database)
Hereโs what we need to transform to:
Appreciate any kind of suggestions.
Thanks
Han
โ12-13-2017 06:21 PM
Thereโs got to be an easier way, but I succeeded with a Mapper containing the following expression and then a Splitter following the Mapper.
$Errors.replace(/\d+. /g,โ|โ).split(โ|โ).map(x => {โNameโ:$Name,โFMNOโ:$FMNO,โPhone #1โ:$[โPhone #1โ],โPhone #2โ:$[โPhone #2โ],โEmailโ:$Email,โErrorโ:x}).filter((v,k)=>v.Error!=โโ)
โ12-13-2017 07:26 PM
LOL, I challenged myself to make it better. Itโs not prettier, but youโre not stuck to hard-coding column names.
$Errors.replace(/ *\d+. /g,โ|โ).split(โ|โ).map(x => $.mapValues((v1,k1)=>k1 == โErrorsโ ? x : v1).mapKeys((v2,k2)=>k2 == โErrorsโ ? โErrorโ : k2)).splice(1)
Surely, someone can improve on this evenโฆ
โ12-14-2017 05:23 AM
Thanks so much, it really helps.
The only thing is that the result comes into different groups by ppl name.
How to flat the result so everything goes into one structure(no group)
Thanks
โ12-14-2017 09:11 AM
Adding a splitter snap after the mapper flattened the data for me.
Also, thereโs a dozen ways to do this I think. The expression I provided keeps the pipeline short, but itโs hard to interpret if you need to debug. You can simplify the expression and use additional snaps. Attached is a pipeline with just two possible options that achieve the same results.
community-1794_2017_12_14.slp (10.7 KB)