繁体   English   中英

没有现有成员的MDX范围

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM