MDX查询返回空值求助:Report Builder中列无数据显示
MDX查询返回空值排查方案
我用Report Builder创建MDX查询时,[Measures].[Premium LCL]列始终显示空值,但确认数据源中存在对应数据,以下是我的查询语句:
SELECT NON EMPTY { [Measures].[Premium LCL] } ON COLUMNS, NON EMPTY { ( [D_BU].[Business Unit Number].[Business Unit Number].ALLMEMBERS * [D_Policy].[OriginalPolicyID].[OriginalPolicyID].ALLMEMBERS * [D_Revenue_Attribute].[InsurerName].[InsurerName].ALLMEMBERS * [D_Client].[ClientName].[ClientName].ALLMEMBERS * [D_TransactionDate].[Accounting Month Number].[Accounting Month Number].ALLMEMBERS * [D_TransactionDate].[Accounting Year].[Accounting Year].ALLMEMBERS * [D_TransactionDate].[Accounting Month Year].[Accounting Month Year].ALLMEMBERS * [D_PolicyExpirationDate].[Expiration Month Year].[Expiration Month Year].ALLMEMBERS * [D_Policy].[InceptionDate].[InceptionDate].ALLMEMBERS * [D_Product].[Product Line].[Product Line].ALLMEMBERS * [D_Product].[Product Coverage].[Product Coverage].ALLMEMBERS * [D_BU].[Region Name].[Region Name].ALLMEMBERS * [D_BU].[Branch Name].[Branch Name].ALLMEMBERS * [D_CarrierPayee].[Placement Market Group].[Placement Market Group].ALLMEMBERS * [D_Industry_SIC].[SIC Level 2 Name].[SIC Level 2 Name].ALLMEMBERS * [D_Industry_SIC].[SIC Level 3 Name].[SIC Level 3 Name].ALLMEMBERS ) } DIMENSION PROPERTIES MEMBER_CAPTION ON ROWS FROM ( SELECT ( {[D_BU].[RegionName].&[GGB UK - Underwriting], [D_BU].[RegionName].&[GGB UK - Specialty], [D_BU].[RegionName].&[GGB(UK & Ireland)] } ) ON COLUMNS FROM ( SELECT ( -{ [D_BU].[BranchName].&[Re Centre], [D_BU].[BranchName].&[UK&Ireland] } ) ON COLUMNS FROM ( SELECT ( { [D_TransactionDate].[Accounting Year].&[2019] : null} ) ON COLUMNS FROM [Model] ))) WHERE ( [D_BU].[RegionName].CurrentMember ) CELL PROPERTIES VALUE
排查方向
- 检查维度筛选逻辑冲突:查询嵌套了多层子查询,先排除特定BranchName,又筛选RegionName,最后WHERE子句还加了[D_BU].[RegionName].CurrentMember,多重过滤可能误删有效数据。可以先移除WHERE子句,或者改成
WHERE ( [Measures].[Premium LCL] )试试。 - 去掉NON EMPTY看是否有数据:行集加了NON EMPTY,但多维度笛卡尔积会生成大量无数据组合,可能把有效数据也过滤掉。先删掉行集的NON EMPTY,观察是否出现数据。
- 核对维度属性拼写:子查询用的是[D_BU].[RegionName],行集里是[D_BU].[Region Name](多了空格),这是两个不同属性,可能导致筛选的Region没关联到行集维度上,统一拼写后再试。
- 确认时间范围筛选是否正确:子查询里
{ [D_TransactionDate].[Accounting Year].&[2019] : null}是选2019年及以后的年份,如果数据只有2019年之前的,或者时间成员格式不匹配,就查不到数据。改成明确选2019年{ [D_TransactionDate].[Accounting Year].&[2019] }试试。 - 检查度量值聚合逻辑:确认[Measures].[Premium LCL]的聚合方式(比如SUM、COUNT)是否正确,会不会当前维度组合下没有符合聚合条件的数据,比如这个度量只关联部分维度,现在的行集维度组合超出了它的关联范围。
- 减少冗余维度组合:行集同时放了多个时间维度属性(Accounting Month Number、Accounting Year、Accounting Month Year等),这些属于同一维度的不同层级,笛卡尔积会产生大量重复无效组合,先只留一个时间属性(比如Accounting Month Year),减少维度数量再看。
内容的提问来源于stack exchange,提问作者Jeevan
相关产品推荐
相关产品推荐

