[英]MDX Range with non existing members
我有一个MDX
查询,其中从带有表单的前端应用程序解析字符串。 最终用户可以基于自由文本字段来限制查询,在该文本字段中,他们可以输入从发票编号到发票编号的范围。 查询基于以下两个参数构建:
SELECT
{[Measures].[Amount]} ON COLUMNS,
NON EMPTY
(
(
[Invoices].[Invoice Number].[Invoice Number].[100000000]:[Invoices].[Invoice Number].[Invoice Number].[222222222])
) ON ROWS
FROM [MyCube]
但是,如果最终用户键入不存在的成员,则范围运算符将失败。 我认为我需要将这些字段以某种方式转换为十进制数字,然后使用>和<进行检查。
我已经有了一些想法。 但是,我无法使其正常工作。 在这里,我尝试仅过滤> 0的数字(如果可行,我可以填写>的参数并为<添加一个。
SELECT
{[Measures].[Amount]} ON COLUMNS,
(
FILTER(
[Invoices].[Invoice Number].[Invoice Number].members
, Cdec([Invoices].[Invoice Number].Currentmember.Properties("Key")) > 0
)
) ON ROWS
FROM [MyCybe]
但是5分钟后,我仍然没有响应..因此取消了查询。
我已经用这种方式计算了(用于日期,但是想法是一样的):
with
member [Measures].[RD_Key] as CDec([Report Date].[Report Date ID].Currentmember.Member_Key)
member [Measures].[ResultFilter] as [RD_Key]>20130801 and [RD_Key]<20131013
select {[Measures].[Count],[Measures].[RD_Key]} on 0
,Filter([Report Date].[Report Date ID].members,[Measures].[ResultFilter]) on 1
FROM [DATA]
如果FILTER
缓慢,请尝试使用HAVING
子句。 我假设不需要对Member_Key
转换,因为键通常是数字:
WITH
MEMBER [Measures].[Inv_Key] as
[Invoices].[Invoice Number].Currentmember.Member_Key
SELECT
{
[Measures].[Amount]
,[Measures].[Inv_Key]
} ON COLUMNS
,[Invoices].[Invoice Number].[Invoice Number].members
HAVING
[Measures].[Inv_Key] > 100000000
AND
[Measures].[Inv_Key] < 222222222
ON ROWS
FROM [DATA]
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.