我想写一个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
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的样本编号
感谢您的帮助
答案 0 :(得分:0)
我的方法是创建一个计算成员,每个SampleNumber
保留一些不同的非空成员。然后过滤掉上述计数不大于1的元组。
UNTESTED (不在我的系统附近)
WITH MEMBER [Measures].CntParametersPerSampleNumber as
DistinctCount(
NonEmpty(
[Dim Parameter].[IdParameter].CHILDREN,
([Dim Result].[Sample Number].CURRENTMEMBER, [Measures].[Value])
)
)
SELECT
NON EMPTY { [Measures].[Value] } ON COLUMNS,
NON EMPTY {
Filter(
(
[Dim Result].[Sample Number].[Sample Number].ALLMEMBERS
*
[Dim Parameter].[IdParameter].[IdParameter].ALLMEMBERS
), [Measures].CntParametersPerSampleNumber>1
)
} ON ROWS
FROM [Cube]
答案 1 :(得分:0)
您似乎有两个不同的问题。
第二个问题可以使用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]
)
对于您的第一个问题,您应该能够迭代地使用Filter
函数来检测样本编号是否重复:
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
多维数据集进行原型设计以进一步探索?