2017-03-03 93 views
1

我希望能够获得SSRS报告,我可以查询并找到占总销售额80%以上的产品组,其中三天销售额为,销售额为SSRS中的参数问题

为此,我在SSRS中创建了一个参数StoreKey。此密钥从Query生成值,并且它包含我想从中导入值的多维数据集中存在的所有StoreKeys(测试时只有四个StoreKeys)。

具有StoreKey一个参数,我创建此计算成员在SSRS:

With Member [Measures].[Top_80] AS 
select {[Measures].[Quantity]} on COLUMNS, 
TopPercent([Dim Product2].[Product Group].Members, 80, 
([Dim Store2].[Store Key].&[@StoreKey],[Measures].[Quantity])) on ROWS 
from 
(
    select 
    { 
     [Dim Date].[Calender].[Date].[2014-11-24], 
     [Dim Date].[Calender].[Date].[2014-11-25], 
     [Dim Date].[Calender].[Date].[2011-11-22] 
    } 
ON columns 
from [Cube]) 

但是这会产生其中显示ProductGroup,数量和Top_80,其中Top_80的价值是我作为字符串的单元格集一个输入,即整个上面的整个查询,甚至包括@StoreKey,而没有用预览时选择的值替换它的变量名。

select {[Measures].[Quantity]} on COLUMNS, 
TopPercent([Dim Product2].[Product Group].Members, 80, 
([Dim Store2].[Store Key].&[103],[Measures].[Quantity])) on ROWS 
from 
(
    select 
    { 
     [Dim Date].[Calender].[Date].[2014-11-24], 
     [Dim Date].[Calender].[Date].[2014-11-25], 
     [Dim Date].[Calender].[Date].[2011-11-22] 
    } 
ON columns 
from [Cube]) 

按预期工作在管理工作室,在那里我有StoreKey的“硬编码”的实际值,并在那里我省略With Member ..... AS条款。

我已经在日期集中映射了参数StoreKey,其中我有表达式给它的变量。当我创建我的数据集时,我将它制作成了一个SSAS多维数据集的文本,我选择了其中包含所有ProductGroups, StoreKeys, Date, Quantity

有没有人有任何想法,为什么查询作为一个整体成为输出,而不是它的价值?从我搜索的查询中,我找不到我的语法错在哪里(尽管这是我在SSRS中的第一个计算字段,所以我应该相信有一些语法错误等)。

+1

这个语法是错误的'经会员[措施]。[Top_80] AS 选择'...'select'是不允许进来AS' – whytheq

+1

这是错误的'[昏暗的商店2]。['后存储密钥]。[&StoreKey]'你需要使用函数'strToMember':https://msdn.microsoft.com/en-us/library/ms146022.aspx – whytheq

回答

1

像这样的东西应该创建一个双列表 - 我有点不确定你在用什么WITH条款?

SELECT 
    [Measures].[Quantity] ON COLUMNS, 
    TopPercent(
     [Dim Product2].[Product Group].Members, 80, 
     (
     [Dim Store2].[Store Key].&[@StoreKey] 
     StrToMember('[Dim Store2].[Store Key].&[' + @StoreKey + ']', CONSTRAINED) 
     ,[Measures].[Quantity] 
    ) 
    ) ON ROWS 
FROM 
(
    SELECT 
    { 
     [Dim Date].[Calender].[Date].[2014-11-24], 
     [Dim Date].[Calender].[Date].[2014-11-25], 
     [Dim Date].[Calender].[Date].[2011-11-22] 
    } 
    ON COLUMNS 
    FROM [Cube] 
); 
+0

@whyteq我试图插入这个查询在我的计算列作为表达式,但它再次返回字符串,而不是实际计算结果。我想要实现的是创建一个表,其中包含每个商店每周最多售出80%的商品的所有ProductGroups,StoreKeys,Date,Quantity,并且在报表中本身只需更改StoreKey以查看其他商店的相应值。有没有比我尝试的方法更可行的方法? – Cenderze

+0

@Cenderze你尝试插入作为SSRS表达 - 不,它绝对不会工作! - 以上是用于创建数据集的查询 - 数据集需要使用多维数据集的数据源 – whytheq

+0

啊当然,我尝试在“添加新数据集”之前尝试过,但之后我没有选择当我选择数据源时创建一个查询。但是,现在我注意到可以创建Query * Before *连接到数据源。这给了我一个奇怪的错误,但是当我试图解析它。它说“无法解析查询来检测它是MDX还是DMX,StrToMemeber的语法不正确”。我正在使用一个多维数据集作为我的数据源。 – Cenderze