Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/powerbi/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Excel 多维SSA的DAX查询工作不正确_Excel_Powerbi_Ssas_Mdx_Dax - Fatal编程技术网

Excel 多维SSA的DAX查询工作不正确

Excel 多维SSA的DAX查询工作不正确,excel,powerbi,ssas,mdx,dax,Excel,Powerbi,Ssas,Mdx,Dax,当Excel连接到SSAS时,Excel会对多维数据集进行mdx查询,并且工作正常 当PowerBI连接到SSAS(实时连接)时,PowerBI会对多维数据集进行DAX查询,但其工作不正确,因为“CurrenteMember”不起作用 我在SSAS中有一个衡量标准: CREATE MEMBER CURRENTCUBE.[Measures].[Cumulative amount] AS sum( YTD([Time].[Year - Quarter - Month].Curren

当Excel连接到SSAS时,Excel会对多维数据集进行mdx查询,并且工作正常

当PowerBI连接到SSAS(实时连接)时,PowerBI会对多维数据集进行DAX查询,但其工作不正确,因为“CurrenteMember”不起作用

我在SSAS中有一个衡量标准:

CREATE MEMBER CURRENTCUBE.[Measures].[Cumulative amount]
 AS sum(
        YTD([Time].[Year - Quarter - Month].CurrentMember)
        , [Measures].[Fact]
    )
当我从Excel连接到OLAP并在Pivot表中选择八月和九月时,Excel对ssas进行mdx正确的查询,我看到了正确的值

在PowerBI中,我有层次过滤器(年-季度-月)和带有列:[月],[累计金额]的网格。 当我从PowerBI连接到OLAP并在层次结构中选择八月和九月时,PowerBI进行DAX查询:

  EVALUATE 
  ....
  KEEPFILTERS(
    FILTER(
      KEEPFILTERS(
        SUMMARIZE(
          VALUES('Time'),
          'Time'[Year.Key0],
          'Time'[Year],
          'Time'[Quarter.Key0],
          'Time'[Quarter],
          'Time'[Month.Key0],
          'Time'[Month]
        )
      ),
      AND(
        'Time'[Year.Key0] IN {DATE(2019, 1, 1)},
        ('Time'[Year], 'Time'[Quarter], 'Time'[Month]) IN {("y.2019", "3q 2019", "August 2019"),
          ("y.2019", "3q 2019", "September 2019")}
      )
    )
  ),
  ....
在这种情况下,它不起作用:表中的值为空,因此表为空。 如果我在层次结构中只选择一个项目(一个月或一个季度),效果很好


PowerBI是否无法进行mdx查询?必须采取哪些措施才能正确执行对多维SSA的DAX请求?

感谢您提出的问题

您应该知道问题不在Power BI生成的查询中

你说:

当我从Excel连接到OLAP并在Pivot表中选择八月和九月时,Excel对ssas进行mdx正确的查询,我看到了正确的值

您的最终用户会感到困惑,结果显示今年到8月还是9月。这就是问题所在

我们需要知道,YTD()函数只接受一个指定的成员,并且只接受一个。(九月或八月)这是事物的逻辑方式

Ytd( [ Member_Expression ] ) 
返回一组与给定成员级别相同的同级成员,从第一个同级成员开始,以给定成员结束,受时间维度中的年份级别约束

但有一种方法可以解决这个问题,我不推荐

假设我们想显示最近一个月的YTD结果,如果用户选择了多个月(9月、8月、1月),我们会选择9月来计算outed,因为它是最近的一个月

这可以通过使用两个函数来完成:Order和Item

CREATE MEMBER CURRENTCUBE.[Measures].[Cumulative amount]
AS sum(
       YTD(
           ORDER(
                 [Time].[Year - Quarter - Month],[Time].[Year - Quarter -Month].MEMBER_KEY,BDESC
                ).ITEM(0)
          ) ,
          [Measures].[Fact] 
       )

如果在VisualStudio中打开时间维度设计器并单击“年-季度-月”层次结构的“月”级别,然后告诉我生成该级别的属性的名称。层次结构上是否有一个黄色的小警告标志,表明这不是自然现象?