Forum Discussion
saturated_snail
4 years agoFrequent Visitor
Extracting all related materials from description strings
Sample File PBIX file: Sample File Overview I have 1 table (50k rows) with [Material], [Description] and [Creation Date]. I need to: 1) Extract the related materials from the description ...
- Anonymous4 years ago
Hi saturated_snail ,
Here are the steps you can follow:
1. Create calculated column.
Step1 = var _search1= SEARCH("(",'Material Master'[Description],1,BLANK()) var _search2= SEARCH("[",'Material Master'[Description],1,BLANK()) var _if1= IF( _search1=BLANK(),BLANK(), MID('Material Master'[Description],_search1+1,7)) var _if2= IF( _search2=BLANK(),BLANK(), MID('Material Master'[Description],_search2+1,7)) var _switch= SWITCH( TRUE(), _if1= BLANK() ,_if2, _if2=BLANK(), _if1, CONCATENATE(_if2, CONCATENATE("、", _if1)) ) return _switchRank123 = VAR __Item =[Description] VAR __Text = CONCATENATEX('Material Master',[Description],"|") VAR __Count = PATHLENGTH(__Text) VAR __Table = ADDCOLUMNS( GENERATESERIES(1,__Count,1), "__Item",PATHITEM(__Text,[Value]) ) VAR __TableFinal = SUMMARIZE(__Table,[__Item],"Index",MINX(FILTER(__Table,[__Item]=EARLIER([__Item])),[Value])) RETURN MINX(FILTER(__TableFinal,[__Item] = __Item),[Index])group = LEFT( 'Material Master'[Material],2)Step2.1 = CONCATENATEX( FILTER(ALL('Material Master'),'Material Master'[Rank123]<=EARLIER('Material Master'[Rank123])+1&&'Material Master'[group]=EARLIER('Material Master'[group])), [Material], CONCATENATE("、", " "))Step2.2 = CALCULATE(MAX('Material Master'[Step2.1]),FILTER(ALL('Material Master'), 'Material Master'[group]=EARLIER('Material Master'[group])&&'Material Master'[Rank123]=MAXX(FILTER(ALL('Material Master'),'Material Master'[group]=EARLIER('Material Master'[group])),[Rank123])))2. Result:
Best Regards,
Liu Yang
If this post helps, then please consider Accept it as the solution to help the other members find it more quickly
Anonymous
4 years agoNot applicable
Hi saturated_snail ,
Here are the steps you can follow:
1. Create calculated column.
Step1 =
var _search1=
SEARCH("(",'Material Master'[Description],1,BLANK())
var _search2=
SEARCH("[",'Material Master'[Description],1,BLANK())
var _if1=
IF(
_search1=BLANK(),BLANK(),
MID('Material Master'[Description],_search1+1,7))
var _if2=
IF(
_search2=BLANK(),BLANK(),
MID('Material Master'[Description],_search2+1,7))
var _switch=
SWITCH(
TRUE(),
_if1= BLANK() ,_if2,
_if2=BLANK(), _if1,
CONCATENATE(_if2, CONCATENATE("、", _if1))
)
return
_switchRank123 =
VAR __Item =[Description]
VAR __Text = CONCATENATEX('Material Master',[Description],"|")
VAR __Count = PATHLENGTH(__Text)
VAR __Table =
ADDCOLUMNS(
GENERATESERIES(1,__Count,1),
"__Item",PATHITEM(__Text,[Value])
)
VAR __TableFinal =
SUMMARIZE(__Table,[__Item],"Index",MINX(FILTER(__Table,[__Item]=EARLIER([__Item])),[Value]))
RETURN
MINX(FILTER(__TableFinal,[__Item] = __Item),[Index])group =
LEFT(
'Material Master'[Material],2)Step2.1 =
CONCATENATEX(
FILTER(ALL('Material Master'),'Material Master'[Rank123]<=EARLIER('Material Master'[Rank123])+1&&'Material Master'[group]=EARLIER('Material Master'[group])),
[Material],
CONCATENATE("、", " "))Step2.2 =
CALCULATE(MAX('Material Master'[Step2.1]),FILTER(ALL('Material Master'),
'Material Master'[group]=EARLIER('Material Master'[group])&&'Material Master'[Rank123]=MAXX(FILTER(ALL('Material Master'),'Material Master'[group]=EARLIER('Material Master'[group])),[Rank123])))
2. Result:
Best Regards,
Liu Yang
If this post helps, then please consider Accept it as the solution to help the other members find it more quickly