Reporting services 在SSAS MDX查询中包含空值以在SSRS中使用
我有一个从三维表和事实表派生的立方体 事件日期、地点、类型 调光位置、调光类型和调光时间 我想使用reporting services创建具有以下布局的报告Reporting services 在SSAS MDX查询中包含空值以在SSRS中使用,reporting-services,mdx,ssas,Reporting Services,Mdx,Ssas,我有一个从三维表和事实表派生的立方体 事件日期、地点、类型 调光位置、调光类型和调光时间 我想使用reporting services创建具有以下布局的报告 SELECT [Location].Members ON COLUMNS, [Type].Members ON ROWS, [Time].[Hierarchy].[Month] ON PAGES FROM [Events] WHERE [Measures].[Event Count] Report
SELECT
[Location].Members ON COLUMNS,
[Type].Members ON ROWS,
[Time].[Hierarchy].[Month] ON PAGES
FROM [Events]
WHERE
[Measures].[Event Count]
Reporting Services显然喜欢查询和列中的度量,例如
SELECT
[Measures].[Event Count] ON COLUMNS
{
[Location].Members *
[Type].Members *
[Time].[Hierarchy].[Month]
} ON ROWS
FROM [Events]
但是,像这样执行时,不包含值的行和列将被删除。
所以一月份我可能会去纽约、伦敦、悉尼
但是二月我只有纽约,悉尼
我想要一个MDX查询,该查询将返回该月伦敦的0
事件类型也是如此,因为某些事件类型在特定月份可能不会发生,但我希望该月份出现一行零
我可以通过还原回sql来获得所需的数据,但使用多维数据集会更好。得到我想要的一切的SQL查询是
SELECT d.[Month], t.[Type], l.[Location], COALESCE(es.EVENT_COUNT, 0) AS EVENT_COUNT
FROM
(
SELECT DISTINCT [Month]
FROM @Dim_Time
) d
CROSS JOIN @Dim_Type t
CROSS JOIN @Dim_Location l
LEFT JOIN
(
SELECT [Month], [Type], [Location],
COUNT(*) AS EVENT_COUNT
FROM @Fact_Event
GROUP BY [Month], [Type], [Location]
) es ON (d.[Month] = es.[Month] AND t.[Type] = es.[Type] AND
l.[Location] = es.[Location])
我包含了一个脚本,用适当的数据填充一些临时表,以演示上述查询
declare @Dim_Time table ([Month] datetime)
declare @Dim_Location table ([Location] varchar(10))
declare @Dim_Type table ([Type] varchar(10))
declare @Fact_Event table ([Month] datetime, [Location] varchar(10), [Type] varchar(10))
insert into @Dim_Time values ('1 Jan 2011')
insert into @Dim_Time values ('1 Feb 2011')
insert into @Dim_Location values ('New York')
insert into @Dim_Location values ('Sydney')
insert into @Dim_Location values ('London')
insert into @Dim_Type values ('Good')
insert into @Dim_Type values ('Bad')
insert into @Fact_Event values ('1 Jan 2011', 'New York', 'Good')
insert into @Fact_Event values ('1 Jan 2011', 'New York', 'Good')
insert into @Fact_Event values ('1 Jan 2011', 'New York', 'Bad')
insert into @Fact_Event values ('1 Jan 2011', 'Sydney', 'Good')
insert into @Fact_Event values ('1 Jan 2011', 'Sydney', 'Good')
insert into @Fact_Event values ('1 Jan 2011', 'Sydney', 'Good')
insert into @Fact_Event values ('1 Jan 2011', 'Sydney', 'Bad')
insert into @Fact_Event values ('1 Jan 2011', 'London', 'Good')
insert into @Fact_Event values ('1 Jan 2011', 'London', 'Bad')
insert into @Fact_Event values ('1 Jan 2011', 'London', 'Bad')
insert into @Fact_Event values ('1 Feb 2011', 'New York', 'Bad')
insert into @Fact_Event values ('1 Feb 2011', 'New York', 'Bad')
insert into @Fact_Event values ('1 Feb 2011', 'Sydney', 'Good')
insert into @Fact_Event values ('1 Feb 2011', 'Sydney', 'Good')
insert into @Fact_Event values ('1 Feb 2011', 'Sydney', 'Good')
insert into @Fact_Event values ('1 Feb 2011', 'Sydney', 'Bad')
insert into @Fact_Event values ('1 Feb 2011', 'Sydney', 'Good')
感谢您的帮助。使用SSRS查询设计器中的“切换非空”按钮 看起来像一个下面有绿色漏斗的数据集 在显示和不显示之间切换 数据窗格中的空单元格。这是 等效于使用非空 MDX中的子句
谢谢你,梅夫。你的答案就是我所问问题的答案。通常,为了简化问题,我排除了问题的根源。为什么它在你的情况下有效,而不是在我的情况下,让我找到了解决办法。问题的一个关键部分应该是,我正在按事实维度的属性进行切片。一旦我把它们提升到完全成熟的维度,它就如你所描述的那样工作了