reporting-services - 在日期之间将 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.
解决方案
一种可能的方法来解决这个问题:
此错误表示您@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
祝你好运