0

我正在寻找一种将先前检索到的列表集成为 MDX 查询中 FILTER 的输入的方法。我目前有以下代码:

segment_var = Segment,
mdxQ = "SELECT 
            NON EMPTY ( { [Measures].[AMT] * [Forecast Type].[Forecast Type].[Forecast Level 2] } ) DIMENSION PROPERTIES MEMBER_NAME ON COLUMNS, 
            NON EMPTY ( {
                [Period].[Year Month Name].[Name] *
                [PL Spec].[PL Spec].[Level 6 Code].allmembers
            } ) ON ROWS
        FROM (
            SELECT ( { [Forecast Type].[Current Indicator].&[Y] } ) ON COLUMNS 
            FROM ( 
                SELECT ( { [PL Spec].[PL Spec].[Level 1 Code].&[101] } ) ON COLUMNS
                FROM [AIR]))
        WHERE (
            FILTER([Management Structure - Segment].[Management Structure - Segment].[MS Level 5].ALLMEMBERS , [Management Structure - Segment].[Management Structure - Segment].currentmember.name=""" & segment_var & """))",

第 1 行上的段曾经是单个值参数,但我想使用段列表 (listSegment) 作为参考,以便结果过滤多个段。我已经尝试过 WHERE IN 解决方案,但我似乎无法让它工作。任何帮助,将不胜感激。

错误:

Expression.Error: We cannot apply operator & to types Text and List.
4

2 回答 2

1

尝试生成 segment_var 为

{[Management Structure - Segment].[Management Structure - Segment].[1], [Management Structure - Segment].[Management Structure - Segment].[2], ...}
于 2017-04-24T10:21:57.000 回答
0

设法通过以下方式解决了该问题:

  1. 制作要在查询中过滤的值列表
  2. 使用“,”转置和组合列表
  3. 转换为单变量

代码:

    Convert = 
    Table.ToList(
        Table.Transpose(
            Table.FromList(#"Distinct")), 
        Combiner.CombineTextByDelimiter(", ")),
    Var = List.First(Convert)
于 2017-05-03T13:19:52.683 回答