维度属性介于两个值和另一个维度属性等于另一个值的 MDX 查询

标签 mdx pentaho olap mondrian

我正在尝试构建一个查询,以选择 2014 年年龄在 1 到 20 岁之间的用户制作的前 10 名产品(最喜欢的产品)。我正在尝试使用以下查询:

WITH SET [TopProducts] AS TOPCOUNT([Products].[Name].Members,10,[Measures].[Likes])
SELECT {[Measures].[Likes]}
ON COLUMNS, {[TopProducts]}
ON ROWS FROM [Likes]
WHERE (
  {[Ages].[Age].[1]:[Ages].[Age].[24]},
  [Date].[Year].[2014]
)

此查询返回错误:No function matches signature '(<Set>, <Member>)'

如果我删除 [Date.Date].[Year].[2014]从查询来看,它运行顺利,所以我认为问题出在 where 子句的表述上。我在这里做错了什么?这是执行此查询的方式吗?

谢谢

最佳答案

在 WHERE 子句上,您需要指定一个元组。元组是来自一个或多个维度的一组无序成员。

试试这个:

WITH 
  SET [TopProducts] AS TOPCOUNT([Products].[Name].Members,10,[Measures].[Likes])
  MEMBER [Ages].[Range] as Aggregate( [Ages].[Age].[1]:[Ages].[Age].[24] )
SELECT {[Measures].[Likes]}
  ON COLUMNS, {[TopProducts]}
  ON ROWS FROM [Likes]
WHERE ( [Ages].[Range], [Date].[Year].[2014] )

聚合函数接受一个集合并返回一个成员,该成员是集合中所有元素的聚合。现在 WHERE 子句中的元组是正确的,因为它引用了两个不同维度的两个成员。

关于维度属性介于两个值和另一个维度属性等于另一个值的 MDX 查询,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23566741/

相关文章:

sql - where 子句中的 MDX 计算成员

c# - 从 C# 代码调用 Tomcat 服务器

pentaho - 从 SQL Server 存储过程获取字段

java - 将 MS OLAP 与 Java 连接

reporting-services - 不同维度之间的mdx并集

olap - MDXWhere 子句中的 except 函数

pentaho - 如何在 Pentaho Mondrian 模式 XML 中使用公式

olap - 在 Snowflake 中构建 OLAP 多维数据集

ms-access - 微软 Access + OLAP

java - 在 Java 应用程序中包含哪个 pentaho mondrian 库以将 MDX 映射到 SQL