2

从 powerpivot 连接到 SSAS 时,我遇到了以下问题 - 如果由于某种原因 mdx 查询没有返回任何行,则也没有返回列名,并且 powerpivot 给出了错误。在 SSMS 中执行这样的查询时,如果 mdx 什么都不返回,我得到 0 行,如果 mdx 返回 1 行(列名和行本身),我得到 2 行。那么 - 我可以以某种方式强制 SSAS 返回列名吗?查询目前看起来有点像这样:

SELECT NON EMPTY {[Measures].[Measure1]} ON COLUMNS,
NON EMPTY {Filter([DimLocalDate].[Date].&[20110101]:[DimLocalDate].[Date].&[20120101],
[JobStatus].[JobStatus].&[1] } ON ROWS
FROM [TheCube]

在我的应用程序中,客户可以指定日期和状态值。如果没有找到结果,我会期待一个空的结果集,但我得到了一个错误。谢谢。

4

2 回答 2

3

重新 SSIS 错误:在数据源中找不到 [MEMBER_CAPTION]。

谢谢你的解决方案帮助了我。我在使用 SSIS、SSAS 输出平面文件报告时遇到了同样的问题

我将发布一个扩展示例以帮助其他人定义虚拟集。请注意,日期是动态插入到 MDX 脚本中的。

当该日期不存在数据时,SSIS 会引发异常,因此不会返回任何结果。这弄乱了列顺序

--create a blank set so that data is still returned when there are no results for that date
set [BlankRowSet] as 
([Activity Period].[Days].[Day].&[2014-02-02T00:00:00], [Well].[Location].[Location].&[])

--create the active set as the crossjoin between Days, Wells
set [ActiveSet] as 
nonempty([Activity Period].[Days].[Day].members * [Well].[Location].[Location].members )

SET [RealSet] as IIF(COUNT([ActiveSet]) > 0, [ActiveSet], {[BlankRowSet]}) 


select {[Measures].[Total boe]} ON COLUMNS 
,[RealSet] ON ROWS 
FROM 
(select {[Activity Period].[Days].[Day].&[2014-02-02T00:00:00]:[Activity Period].[Days].[Day].&    [2014-02-02T00:00:00]} on 0 from [Volumes] )

where 
[Scenario].[All Scenarios].[Category].&[PVR Sales Estimates] 
于 2014-02-05T21:46:05.587 回答
1

我将在选择之前检查您的 NonEmpty 子句是否会返回一个 void 集,在这种情况下,将一个虚拟集放在行上,该虚拟集将返回到 powerpivot 至少 1 行。就像是:

WITH 
SET [mySet] as NON EMPTY ({Filter([DimLocalDate].[Date].&[20110101]:[DimLocalDate].[Date].&[20120101], [JobStatus].[JobStatus].&[1] })
SET [myRealSet] as IIF(COUNT([mySet]) > 0, [mySet], {[DummySet]}) 
SELECT NON EMPTY {[Measures].[Measure1]} ON COLUMNS,
[myRealSet] ON ROWS
FROM [TheCube]

有助于?

于 2013-06-06T10:46:19.167 回答