MDX
does not have the LIKE
operator, but you can use the InStr
function to check if the check if the keywords are part of the name.
with member measures.iPhoneInName as
VBA!InStr([Product Name].CurrentMember.Name, "iPhone")
member measures.SamsungInName as
VBA!InStr([Product Name].CurrentMember.Name, "Samsung")
SELECT
NON EMPTY {[Measures].[Average Price]}
ON COLUMNS,
[Product Names].MEMBERS
HAVING
measures.iPhoneInName >= 1
OR
measures.SamsungInName >= 1
ON ROWS
FROM [Price History]
EDIT:
If you want only those members whose name end with iPhone
OR Samsung
, then a small addition to the code:
(
VBA!InStr([Product Name].CurrentMember.Name) + len("Samsung") + 1
= LEN([Product Name].CurrentMember.Name)
AND measures.SamsungInName >= 1
)
OR
(
VBA!InStr([Product Name].CurrentMember.Name) + len("iPhone") + 1
= LEN([Product Name].CurrentMember.Name)
AND measures.iPhoneInName >= 1
)
Mondrian version
with member measures.iPhoneInName as
VBA!InStr([Product Name].CurrentMember.Name, "iPhone")
member measures.SamsungInName as
VBA!InStr([Product Name].CurrentMember.Name, "Samsung")
SELECT
NON EMPTY {[Measures].[Average Price]}
ON COLUMNS,
FILTER
(
[Product Names].MEMBERS,
(
VBA!InStr([Product Name].CurrentMember.Name) + len("Samsung") + 1
= LEN([Product Name].CurrentMember.Name)
AND measures.SamsungInName >= 1
)
OR
(
VBA!InStr([Product Name].CurrentMember.Name) + len("iPhone") + 1
= LEN([Product Name].CurrentMember.Name)
AND measures.iPhoneInName >= 1
)
)
ON ROWS
FROM [Price History]