Sharepoint 来自数据库查询的MDX多值参数
这是我的第一个问题,所以我非常感谢你能给予我的帮助 当前情况我们有一系列SSRS报告部署到SharePoint,以SharePoint集成模式运行。我正在尝试使用Oracle数据库中的数据创建数据驱动的SharePoint订阅,该数据库将报表参数传递给针对analysis server多维数据集运行的SSRS报表 问题是,除了需要为报表提供多值参数外,我的一切都正常工作 以下是报告的基本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
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]}包括双引号发送到参数。谢谢