MDX:过滤重复
我想编写一个MDX查询,它只在特定的重复维度比一个维度重复时显示值 这是我的mdx查询:MDX:过滤重复,mdx,olap,olap-cube,Mdx,Olap,Olap Cube,我想编写一个MDX查询,它只在特定的重复维度比一个维度重复时显示值 这是我的mdx查询: SELECT NON EMPTY { [Measures].[Value] } ON COLUMNS, NON EMPTY { ([Dim Result].[Sample Number].[Sample Number].ALLMEMBERS * [Dim Parameter].[IdParameter].[IdParameter].ALLMEMBERS ) } ON ROWS
SELECT
NON EMPTY { [Measures].[Value] } ON COLUMNS,
NON EMPTY { ([Dim Result].[Sample Number].[Sample Number].ALLMEMBERS
* [Dim Parameter].[IdParameter].[IdParameter].ALLMEMBERS ) } ON ROWS
FROM [Cube]
结果是:
Sample Number IdParameter Value
1 3 5
1 4 6
2 3 2
3 4 0
我想要的是只获得重复的样本数值,如下所示:
Sample Number IdParameter Value
1 3 5
1 4 6
并删除其他未重复的值
Sample Number IdParameter Value
2 3 2
3 4 0
我不知道该怎么做,这是可能的吗
我编写下一个mdx:
SELECT NON EMPTY {[Measures].[Recuento Fact Result]} ON COLUMNS,
NON EMPTY { [Dim Result].[Sample Number].[Sample Number] } ON ROWS
FROM ( SELECT ({ [Dim Parameter].[IdParameter].&[420] , [Dim Parameter].[IdParameter].&[20] } ) ON COLUMNS
FROM [cube])
结果是:
Sample Number Recount Fact Result
1 1
2 2
3 2
4 1
我想要的只是重新计票大于1的样本数
感谢您的帮助我的方法是创建一个计算成员,每个
SampleNumber
可以容纳不同数量的非空成员。然后过滤掉上面计数不大于1的元组
未经测试(不在我的系统附近)
你似乎有两个不同的问题 第二个问题可以使用
HAVING
子句来回答:
SELECT
NON EMPTY
{[Measures].[Recuento Fact Result]} ON 0,
NON EMPTY
{[Dim Result].[Sample Number].[Sample Number]}
HAVING [Measures].[Recuento Fact Result] > 1
ON 1
FROM
(
SELECT
({
[Dim Parameter].[IdParameter].&[420]
, [Dim Parameter].[IdParameter].&[20]
}) ON 0
FROM [cube]
)
对于第一个问题,您应该能够反复使用过滤器
函数来检测样本号是否重复:
WITH
SET [OrderedSampleNums] AS
Order(
[Dim Result].[Sample Number].[Sample Number].ALLMEMBERS ,
[Dim Result].[Sample Number].CurrentMember.Caption,
BASC
)
SET [RepeatedSampleNums] AS
Filter(
OrderedSampleNums ,
OrderedSampleNums.Item(
OrderedSampleNums.CurrentOrdinal-1
).Caption = [Dim Result].[Sample Number].CurrentMember.Caption
)
SET [NonRepeatedSampleNums] AS
Except(
OrderedSampleNums
,RepeatedSampleNums
)
SELECT
NON EMPTY
{[Measures].[Value]} ON 0,
NON EMPTY
[NonRepeatedSampleNums]
*
[Dim Parameter].[IdParameter].[IdParameter].ALLMEMBERS
ON 1
FROM [Cube];
未测试,但我可以尝试针对
AdvWorks
多维数据集创建一些原型,以进一步探索?以何种格式?Where子句是否符合您的要求,或者这是否适用于计算过的成员?@Ibon我们的努力是否帮助了您?感谢您的帮助,但这里不仅有2个参数,还有5万个参数。这有什么区别?如果有,请编辑问题并附加详细信息。
WITH
SET [OrderedSampleNums] AS
Order(
[Dim Result].[Sample Number].[Sample Number].ALLMEMBERS ,
[Dim Result].[Sample Number].CurrentMember.Caption,
BASC
)
SET [RepeatedSampleNums] AS
Filter(
OrderedSampleNums ,
OrderedSampleNums.Item(
OrderedSampleNums.CurrentOrdinal-1
).Caption = [Dim Result].[Sample Number].CurrentMember.Caption
)
SET [NonRepeatedSampleNums] AS
Except(
OrderedSampleNums
,RepeatedSampleNums
)
SELECT
NON EMPTY
{[Measures].[Value]} ON 0,
NON EMPTY
[NonRepeatedSampleNums]
*
[Dim Parameter].[IdParameter].[IdParameter].ALLMEMBERS
ON 1
FROM [Cube];