mdx - 从 MDX 输出返回 'n' 行
问题描述
如何使用以下示例过滤前“n”行的 MDX 输出,然后遍历下一个“n”行,依此类推。
SELECT
{ [Measures1].members, [Measures2].members } ON COLUMNS,
{ [Date].members } ON ROWS
FROM [cube]
我正在尝试这个,因为我想循环遍历 MDX 输出的每 'n' 行并将结果导出到 excel。
原始查询返回大量记录。这就是我打算遍历记录的原因。
解决方案
你可以这样做:首先,只取前 N 名(比如说前 5 名成员),然后取前 10 名成员,前五名除外。之后,除前 10 名外,获得前 15 名成员,依此类推...
这是前 5 个的公式,按 [SomeAmount] 排序,这是多维数据集的度量之一
SELECT
{ [Measures].[SomeAmount] } ON COLUMNS,
EXCEPT(TopCount([Date].members, 5,[Measures].[SomeAmount] ),TopCount([Date].members, 0,[Measures].[SomeAmount] )) ON ROWS
FROM [cube]
以及接下来的五个(跳过前五个):
SELECT
{ [Measures].[SomeAmount] } ON COLUMNS,
EXCEPT(TopCount([Date].members, 10,[Measures].[SomeAmount] ),TopCount([Date].members, 5,[Measures].[SomeAmount] )) ON ROWS
FROM [cube]
等等...
如果你有 AdventureWorks 多维数据集,你可以在那里尝试这个查询:
SELECT
{ [Measures].[Internet Order Count] } ON COLUMNS,
EXCEPT(TopCount([Date].[Calendar].members, 10, [Measures].[Internet Order Count]),
TopCount([Date].[Calendar].members, 5,[Measures].[Internet Order Count] )) ON ROWS
FROM [Adventure Works]
而且,对于您的评论中的示例,您有交叉加入:
SELECT
{Department.members} on COLUMNS,
EXCEPT(TopCount({[Product].[Status].members}*{Date.[Calendar].members}, 10),
TopCount({[Product].[Status].members}*{Date.[Calendar].members}, 5)) on ROWS
FROM [Adventure Works]
你也可以在 Adventure Works 上试试这个。
以及评论中的示例:
SELECT EXCEPT(TopCount({dim1.members}*{dim2.members},10),
TopCount({dim1.members}*{dim2.members},5)) on ROWS,
{dim3.members} on COLUMNS
FROM [cube]
希望能帮助到你。
推荐阅读
- angular - 从Angular 7中的API获得响应后如何将一个组件传递给另一个组件
- php - 检查纬度和经度是否在我的谷歌地图起点和终点范围内
- python - 如何使用来自 s3 的预训练模型来预测一些数据?
- haskell - 使用 Haskell 的随机元素网格
- mybatis-generator - 如何使用 ignoreQualifiersAtRuntime="true" 删除 auto sql 中的前缀?
- sql - 使用无界前面计算运行总计
- angular - ngFor 在具有不同属性的列中
- android - 我想在我的应用程序中添加一个共享按钮,但我不明白如何实现它,我在我的应用程序中显示来自 firebase 存储的图像
- javascript - 为什么after方法在jQuery中不起作用?
- spring-boot - 如何使用 Mockito 模拟实例化类的方法?