Forum Discussion
Measure 'Contains' multiple.
Hello all, Have another question regarding one of my formula's. Am sure the solution is easy!
How to write the following Measure easier.
- Anonymous1 year ago
Hi JimmyBos,
The issue with SUMX(SearchTerms) was that SearchTerms was defined as a list instead of a table, and DAX functions like SUMX require a table as the first argument. To fix this, SELECTCOLUMNS was used to convert SearchTerms into a one-column table. Additionally, the expression CONTAINSSTRING(Description, SearchTerms) was incorrect because SearchTerms was not a column reference. The fix involved changing SearchTerms to [Term], which correctly references the column from the newly created table.
Here is the code that worked for me with the sample data I have takenBoutenMoerenTest = VAR SearchTerms = ADDCOLUMNS( DATATABLE("Term", STRING, { {"Tapbout"}, {"Moer, zeskant"}, {"Moer, zelfborgend"}, {"Carosseriering"}, {"Stafstaal"}, {"Sluitring"}, {"Onderlegring"}, {"Draadstang"}, {"Lasstiftbout"}, {"Assemblage"}, {"Dummy"}, {"Slotbout"}, {"Stelschroef"} } ), "Match", IF(CONTAINSSTRING(SELECTEDVALUE('Table'[description]), [Term]), 1, 0) ) VAR escription = SELECTEDVALUE('Table'[description]) RETURN IF( NOT ISBLANK(escription) && SUMX(SearchTerms, [Match]) > 0, TRUE(), FALSE() )
If you find this post helpful, please mark it as an "Accept as Solution" and consider giving a KUDOS. Feel free to reach out if you need further assistance.
Thanks and Regards - Anonymous1 year ago
Hi JimmyBos,
Please use a different variable name instead of "Description" in your DAX code, as it may conflict with a reserved keyword or cause syntax issues. I encountered the same error previously, which is why I changed the variable name in the DAX code I shared with you.
If you find this post helpful, please mark it as an "Accept as Solution" and consider giving a KUDOS. Feel free to reach out if you need further assistance.
Thanks and Regards
11 Replies
- pankajnamekar25
Super User
Hello Jimmy,
You can try below measure
Bouten&Moeren =
VAR SearchTerms =
{"Tapbout", "Moer, zeskant", "Moer, zelfborgend", "Carosseriering",
"Stafstaal", "Sluitring", "Onderlegring", "Draadstang",
"Lasstiftbout", "Assemblage", "Dummy", "Slotbout", "Stelschroef"}
VAR Description = SELECTEDVALUE(POStuklijst[description])
RETURN
IF(
NOT ISBLANK(Description) &&
SUMX(SearchTerms, CONTAINSSTRING(Description, [Value])) > 0,
TRUE(),
FALSE()
)Thanks,
PankajIf this solution helps, please accept it and give a kudos, it would be greatly appreciated.
- JimmyBos
Helper II
Hello pankajnamekar25 , Thanks you for the reply. This is what i am looking for but there is an error left.
The syntaxis for Description is incorrect. (DAX(VAR SearchTerms={"Tapbout"............} VAR Description = SELECTEDVALUE(POStuklijst[Description])RETURNIF(NOT ISBLANK(Description)&&SUMX(SearchTerms, CONTAINSSTRING(Description, [Value]...
Any idea how to fix this one?
- pankajnamekar25
Super User
Bouten&Moeren =
VAR SearchTerms =
SELECTCOLUMNS(
{"Tapbout", "Moer, zeskant", "Moer, zelfborgend", "Carosseriering",
"Stafstaal", "Sluitring", "Onderlegring", "Draadstang",
"Lasstiftbout", "Assemblage", "Dummy", "Slotbout", "Stelschroef"},
"Term"
)
VAR Description = SELECTEDVALUE(POStuklijst[description])
RETURN
IF(
NOT ISBLANK(Description) &&
SUMX(SearchTerms, CONTAINSSTRING(Description, [Term])) > 0,
TRUE(),
FALSE()
)try this
Thanks,
PankajIf this solution helps, please accept it and give a kudos, it would be greatly appreciated.
- JimmyBos
Helper II
Hello Anonymous , Great, that was the issue. Thank for helping me out!
- TomMartens
Super User
Hey JimmyBos ,
The measure can be simplified by creating a table that contains all the "searchphrase", in the example below I only use four because I'm lazy.
Then I use the COUNTX iterator to iterate across the table of searchphrases. If the selected value contains one or more of the searchphrases countx returns a value greater than 0.Bouten&Moeren = var _selectecdValue = SELECTEDVALUE(POStuklijst[description]) var searchphrasetable = DATATABLE("searchphrase", STRING ,{ {"Tapbout"},{"Moer"}, {"zeskant"},{"Moer"}, {"zelfborgend"} }) var result = if(countx( searchphrasetable, var searchphrase = [searchprhase] return if(containsstring(_selectecdValue , searchphrase ), 1, blank()) ) > 0, "containssearchstring", "doesnotcontainsearchstring")Hopefully, this provides what you need to tackle your challenge.
Regards,
Tom