【问题标题】:Filtering MDX query with current year & month using Now()使用 Now() 过滤当前年份和月份的 MDX 查询
【发布时间】:2014-04-25 09:33:29
【问题描述】:

如何使用当前年份和月份过滤 MDX 中的数据?

到目前为止我所做的是:

WHERE strtomember{ [Time Dim].[FSCL YEAR].&["+Format(now(), "yyyy")+"], [Time Dim].[FSCL MONTH].&["+Format(now(), "m")+"] }

但它不起作用。

【问题讨论】:

  • 第一次查询的结果是什么?第二个查询的结果是什么? [Measures].[Measure] 是经过计算的度量吗?如果是这样,你能分享一下它的定义吗?
  • 这里没有计算任何东西。都是简单的度量和维度。抱歉,我不能在这里分享实际的 MDX。
  • @Adita 当您使用[Dimension].[Dim].[Dim].ALLMEMBERS 而不是[Dimension].[Dim].[Dim].MEMBERS 时,我会假设差异在于此层次结构的计算度量?否则,如果不涉及计算成员,则结果应该匹配。
  • 等等,我再试试,谢谢建议
  • 是的,你是对的。它现在工作得更好了。

标签: ssas mdx olap-cube ssas-2008


【解决方案1】:

StrToMember 是一个接受一个参数的函数,它是一个字符串。您似乎试图将其传递给一组,因为您使用的是花括号。正确的语法是:

WHERE ( 
      strtomember("[Time Dim].[FSCL YEAR].&[" + Format(now(), "yyyy") + "]"),
      strtomember("[Time Dim].[FSCL MONTH].&[" + Format(now(), "m") + "]")
      )

StrToMember 的参数在这两种情况下都是一个字符串,该字符串由"[Time Dim].[FSCL YEAR].&[" 和"]" 等固定字符串以及Format 函数的结果连接而成。

【讨论】:

  • 元组或集合必须在 where 子句的函数错误中使用相同的层次结构。
  • @Aditya 哦,我明白了。他们来自不同的层次结构。因此,您必须将它们放入 WHERE 条件中的元组中,而不是放在集合中。我更正了。
  • 我看不出有什么意义。 Generate 在一个集合上循环并返回一个字符串,该字符串包含从每个循环迭代返回的字符串的串联,或者从每个循环迭代返回的集合的并集。你在哪里看到要循环的集合?您在哪里看到字符串或设置结果?我只看到一个元组结果。
  • 您的错误消息指出“在 where 子句的函数错误中”。我在我的代码中没有看到对函数“错误”的调用。您将我的代码改编为您的情况可能有问题。
  • 嘿真的很抱歉,我用的是旧的,它现在可以工作但没有显示任何措施,只有空值。可能是月份格式我必须检查。
猜你喜欢
  • 1970-01-01
  • 2017-07-01
  • 2022-01-22
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-05-18
  • 2016-04-05
相关资源
最近更新 更多