Sharepoint 来自数据库查询的MDX多值参数

Sharepoint 来自数据库查询的MDX多值参数,sharepoint,reporting-services,mdx,Sharepoint,Reporting Services,Mdx,这是我的第一个问题,所以我非常感谢你能给予我的帮助 当前情况我们有一系列SSRS报告部署到SharePoint,以SharePoint集成模式运行。我正在尝试使用Oracle数据库中的数据创建数据驱动的SharePoint订阅,该数据库将报表参数传递给针对analysis server多维数据集运行的SSRS报表 问题是,除了需要为报表提供多值参数外,我的一切都正常工作 以下是报告的基本MDX: SELECT NON EMPTY {[Measures].[Units Sold]} ON COLU

这是我的第一个问题,所以我非常感谢你能给予我的帮助

当前情况我们有一系列SSRS报告部署到SharePoint,以SharePoint集成模式运行。我正在尝试使用Oracle数据库中的数据创建数据驱动的SharePoint订阅,该数据库将报表参数传递给针对analysis server多维数据集运行的SSRS报表

问题是,除了需要为报表提供多值参数外,我的一切都正常工作

以下是报告的基本MDX:

SELECT NON EMPTY {[Measures].[Units Sold]} ON COLUMNS, 
NON EMPTY { (
[PTOC Dates].[Broadcast Dates].[Bcst Week].ALLMEMBERS * 
[Price Type Groups].[Price Group ID].[Price Group ID].ALLMEMBERS * 
[Price Type Groups].[Price Type Group].[Price Type Group].ALLMEMBERS * 
[Dayparts].[Network].[Network].ALLMEMBERS ) } 
ON ROWS 
FROM ( SELECT ( STRTOSET(@DaypartsNetworkDayparts, CONSTRAINED) ) ON COLUMNS 
FROM ( SELECT ( STRTOSET(@NetworkNetwork, CONSTRAINED) ) ON COLUMNS 
FROM ( SELECT ( STRTOSET(@AirDatesBroadcastYrQtr, CONSTRAINED) ) ON COLUMNS 
FROM [Inventory])))
WHERE ( 
[Air Dates].[Broadcast Yr Qtr].currentmember, 
[Network].[Network].currentmember, 
[Dayparts].[Network Dayparts].currentmember )
有问题的多值参数是@DaypartsNetworkDayparts

来自数据库的查询返回两种变体,单值和多值。请注意,它们是完全限定的MDX语法,我使用逗号分隔多值参数。为了清楚起见,我省略了其他字段

DaypartsNetworkDayparts Parameter
---------------------------------
[Dayparts].[Network Dayparts].[Daypart Listname].&[3]&[25]

[Dayparts].[Network Dayparts].[Daypart Listname].&[3]&[25],[Dayparts].[Network Dayparts].[Daypart Listname].&[3]&[26]
接下来,我创建了一个SharePoint数据驱动订阅,该订阅使用此数据生成报告。第一行工作正常-使用正确的参数生成报告。第二个失败,出现以下错误:

为报表参数“DaypartsNetworkDayparts”提供的默认值或值无效

使用SSMS,我手动将参数行替换为:

FROM ( SELECT ({[Dayparts].[Network Dayparts].[Daypart Listname].&[3]&[25],
[Dayparts].[Network Dayparts].[Daypart Listname].&[3]&[26]} ) ON COLUMNS 
它非常有效,因为它是一个定义良好的集合

因此,问题在于将逗号分隔的列表传递到@DaypartsNetworkDayparts参数的语法


有谁能帮我找到让MDX查询接受多个值的正确语法吗?谢谢

您不能使用逗号分隔的值,您需要创建要与整个层次结构一起传递的每个值。 例子: 您的值是:{1,2,3} 要在mdx中正常工作,您需要将其作为:

[Dayparts].[Network Dayparts].[Daypart Listname].[1],
[Dayparts].[Network Dayparts].[Daypart Listname].[2], [Dayparts].[Network Dayparts].[Daypart Listname].[3]

传递给stroset@的值需要具有上述格式-这是MDX world中的CSV

为此,您需要: 创建默认值为的隐藏参数: =[Dayparts].[Network Dayparts].[Daypart Listname].&@DaypartsNetworkDayparts&] 根据@DaypartsNetworkDayparts的格式,您可能需要使用转换函数来匹配格式。 然后在mdx中插入该隐藏参数strtoset@yourhiddenparameter
如果您需要更多帮助,请告诉我。

Daniel-我认为您的答案有两个部分。第一个是[Dayparts].[Network Dayparts].[Daypart Listname].&[3]&[25]我对你的评论有点困惑:-你的问题现在解决了吗?仍然是个困惑。带&[3]&[25]的参数是复合键。考虑到这可能是个问题,我创建了一个更简单的版本,但也有同样的问题。Ne版本:在列上选择非空的{[Measures].[Potential Units salled]},在列上选择非空的{[Air Dates].[Bcst-Qtr].[Bcst-Qtr].[Bcst-Qtr].[Bcst-Qtr].[2014]},在列上选择{[Air Dates].[Bcst-Qtr].[2014]}STRTOSET@NetworkNetwork,[Inventory]参数行中的列上的约束来自SELECTSTRTOSET@NetworkNetwork,约束在列上。在SSMS中,我将其替换为FROM SELECT STROSET{[Network].[Network].&[3],[Network].[Network].&[4]},受列约束,它可以工作。所以我需要弄清楚如何将字符串{[Network].[Network].&[3],[Network].[Network].&[4]}包括双引号发送到参数。谢谢