如何在MDX中使用从两个关键字返回匹配项的搜索
我是mdx新手 是否有任何方法可以使用MDX从两个关键字中搜索和返回匹配项,就像我们在MySQL中使用的“%iphone”和“%samsung”一样 我的MDXcode是:如何在MDX中使用从两个关键字返回匹配项的搜索,mdx,pentaho,olap,olap-cube,mondrian,Mdx,Pentaho,Olap,Olap Cube,Mondrian,我是mdx新手 是否有任何方法可以使用MDX从两个关键字中搜索和返回匹配项,就像我们在MySQL中使用的“%iphone”和“%samsung”一样 我的MDXcode是: SELECT NON EMPTY {[Measures].[Average Price]} ON COLUMNS, Filter({[Product Names].MEMBERS}, [Product Name].CurrentMember.Name MATCHES '(?i)apple.*' or [Product Nam
SELECT
NON EMPTY {[Measures].[Average Price]} ON COLUMNS,
Filter({[Product Names].MEMBERS},
[Product Name].CurrentMember.Name MATCHES '(?i)apple.*' or [Product Name].CurrentMember.Name MATCHES '(?i)screen.*') ON ROWS
FROM [Price History]
在我的代码中,任何搜索都得到满足,但我希望这两个条件都得到满足
有什么办法,请帮助吗?
MDX
没有LIKE
操作符,但是您可以使用InStr
功能检查关键字是否是名称的一部分
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]
编辑:
如果您只想要那些名称以iPhone
或Samsung
结尾的成员,那么在代码中添加一点:
(
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
)
蒙德里安版本
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]
您好,谢谢您的回复,我尝试了您的代码,但它显示:MondrianException:Mondrian错误:第11行第1列的语法错误,标记'HAVING'So
Mondrian
没有HAVING
子句!等等,我会再加一种味道。@MidhunKrishna-补充道。请检查。@SouravA-Hi,谢谢您的编辑,我再试了一次,但仍然显示MondrianException:Mondrian错误:没有函数与签名“InStr()”匹配。这里的错误是什么,我不明白。从您的问题来看,您只需要在过滤器
条件下用和
替换或
。