将列表解析为MDX查询(MDX M Power BI中的列表)

时间:2017-04-24 09:50:14

标签: mdx powerbi m

我正在寻找一种方法来将先前检索到的列表集成为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.

2 个答案:

答案 0 :(得分:1)

尝试将segment_var生成为

{[Management Structure - Segment].[Management Structure - Segment].[1], [Management Structure - Segment].[Management Structure - Segment].[2], ...}

答案 1 :(得分:0)

管理以下列方式解决问题:

  1. 在查询中创建要过滤的值列表
  2. 使用“,”
  3. 转置并合并列表
  4. 转换为单变量
  5. 代码:

        Convert = 
        Table.ToList(
            Table.Transpose(
                Table.FromList(#"Distinct")), 
            Combiner.CombineTextByDelimiter(", ")),
        Var = List.First(Convert)