首页 > 解决方案 > 在日期之间将 mdx 参数转换为 ssrs

问题描述

我在 Microsoft SQl Server Management Studio 中使用多维数据集数据创建了几段类似的 MDX 代码,现在我需要在 SSRS 分页报表中使用该代码。我收到以下错误:

"Query (4, 2) The restrictions imposed by the CONSTRAINED flag in the 
STRTOMEMBER function were violated."

此代码使用日期在 Management Studio 和 SSRS 中运行良好,但一旦我将日期更改为参数,我就会收到错误消息。

MEMBER [Measures].[Sales in Period2] AS
AGGREGATE (
{STRTOMEMBER("[Paid Date].[Date].&[2020-11-01]", CONSTRAINED) : STRTOMEMBER(" 
[Paid Date].[Date].&[2020-11-30]", CONSTRAINED) }
, [Measures].[Paid Amount]
),FORMAT_STRING = "#.00;(#.00);0;0"

我试过改变:

[2020-11-01] to [@StartDate1], 
[2020-11-01] to [" + @ParameterName + "],
STRTOMEMBER to STRTOSET, and
remove CONSTRAINED.

标签: reporting-servicesmdxreportbuilder

解决方案


一种可能的方法来解决这个问题:

此错误表示您@ParameterName的格式不正确。在您的示例中,您的日期为2020-11-30,即yyyy-MM-dd格式。因此,您的参数也应该具有相同的格式。如果格式相同,您可以&[@ParameterName]StrToMember中使用它。

为此,您可以更改参数的数据集以将其格式化为所需的格式。

由于您使用 MDX 来获取数据,因此Paid Date在您的示例中,您可以查看直接从主数据集或日期维度获取参数值的选项。

在我下面使用AdventureWorks示例的示例中,您可以看到日期格式不同。您可能希望以不同的格式向用户显示日期格式,但在内部您希望它采用与 Cube 所需的格式相同的格式。

我建议您也查看此链接以查看带有 MDX 参数的端到端流程示例: https ://blog.pragmaticworks.com/writing-parametrized-mdx-for-reporting-services

祝你好运

在此处输入图像描述

在此处输入图像描述


推荐阅读