当从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]
在我的应用中,客户可以指定日期和状态值。如果没有找到结果,我会期望一个空的结果集,但我得到一个错误。 感谢。
答案 0 :(得分: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]
答案 1 :(得分:1)
我将在select之前检查你的NonEmpty子句是否会返回一个void set,并且在这种情况下,将一个虚拟集放在行上,该set将返回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]
会有帮助吗?