我想写一个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的样本数量
谢谢你的帮忙
发布于 2015-06-16 22:24:42
我的方法是创建一个计算成员,它将在每个SampleNumber中包含许多不同的非空成员。然后过滤掉上面计数不大于1的元组。
未经测试的(不在我的系统附近)
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]发布于 2015-06-18 03:56:29
你似乎有两个不同的问题。
第二个问题可以用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多维数据集创建一些原型,以便进一步探索?
https://stackoverflow.com/questions/30863730
复制相似问题