【问题标题】:MDX query performance: inconsistent processing timesMDX 查询性能:处理时间不一致
【发布时间】:2015-10-26 15:36:34
【问题描述】:

当我运行某些 MDX 查询时,我对奇怪的行为/性能不一致感到困惑。

当我为单个成员或“行上”的两个成员运行查询时,处理时间非常不一致:

层次结构有 7 个级别:例如,“A”是第 6 级的成员。“A”有 2 个子级:“X”和“Y”。

当我使用成员“X”‘On Rows’运行 MDX 时,需要两秒钟。

当我为成员“Y”“On Rows”运行相同的 MDX 时,也需要 2 秒。 如果我为两个成员运行相同的 MDX 查询:{member "X", member "Y"} ‘On Rows’
……处理这个MDX突然需要2-3分钟!!

对这种奇怪的行为有什么可能的解释吗?

MDX 查询如下所示:

WITH 
  SET [XL3WithSet0] AS 
    {
      (
        [Measures].[Original Exposure Amount - Drilldown]
       ,[ExpPortfolioType].[ExposurePortfolioType].[All].[COREP - CRD IV].[Standardised]
       ,[PortfolioType].[PortfolioType].[All]
       ,[CRMGroup].[CRMGroup].[All]
       ,[CCFBand].[Hierarchy].[All]
       ,[DrilldownCreditRisk].[InflowOutflowFlag].[All]
      )
    } 
...**********another 25 sets combining [Measures] AND selected dimensions*****
SELECT 
  {
    [XL3WithSet0]
   ,[XL3WithSet1]
   ,[XL3WithSet2]
   ,[XL3WithSet3]
   ,[XL3WithSet4]
   ,[XL3WithSet5]
   ,[XL3WithSet6]
   ,[XL3WithSet7]
   ,[XL3WithSet8]
   ,[XL3WithSet9]
   ,[XL3WithSet10]
   ,[XL3WithSet11]
   ,[XL3WithSet12]
   ,[XL3WithSet13]
   ,[XL3WithSet14]
   ,[XL3WithSet15]
   ,[XL3WithSet16]
   ,[XL3WithSet17]
   ,[XL3WithSet18]
   ,[XL3WithSet19]
   ,[XL3WithSet20]
   ,[XL3WithSet21]
   ,[XL3WithSet22]
   ,[XL3WithSet23]
   ,[XL3WithSet24]
   ,[XL3WithSet25]
  } ON COLUMNS
  --Non Empty   
 ,{
    [DrilldownCreditRisk].[ExposureDrilldown].[All].[Legal Entity 2].[CBRC Repo style MarketParticipant  40089].[Exp No. 14660042].[UNSECURED].[Unsecured - Undrawn Tranche]
   ,[DrilldownCreditRisk].[ExposureDrilldown].[All].[Legal Entity 2].[CBRC Repo style MarketParticipant  40089].[Exp No. 14660042].[UNSECURED].[Unsecured - Drawn Tranche]
  } ON ROWS
FROM [COREP Credit Risk]
WHERE 
  (
    [Time].[Time].[All]
   ,[Scenario].[Scenario].[All]
   ,[ConsolidationProfile].[ConsolidationProfile].[All]
   ,[ExposureType].[ExposureType].[All].[COREP Reporting - CRD IV]
   ,[IntragroupFlag].[IntragroupFlag].[All]
  )
CELL PROPERTIES VALUE;

【问题讨论】:

  • 如果您在行上使用 [DrilldownCreditRisk].[Level 6] 属性层次结构成员 X 和 Y 而不是 [DrilldownCreditRisk].[ExposureDrilldown] 层次结构,它是否很快(无论查询是否返回相同的数字)?你的等级制度是自然的吗? (级别之间是否存在属性关系?您是否在设计时收到有关该层次结构的属性关系的警告?)
  • 这是可能,因为成员 X 和成员 Y 的组合创建了很多 空 单元格。尝试使用 NonEmpty 和 THEN 将语句包装在行上 NON EMPTY。
  • 感谢您的提示!
  • 我确实测试了您的建议。问题在于层次结构的设计——经过一些研究,我发现层次结构不是自然的,我重新设计了属性并正确定义了关系。现在谜团解开了,我在层次结构的较低级别上获得了一致的处理时间。再次感谢您!
  • 也许复选标记不直观?以下是关于accepting an answer@letecmig 的一些说明

标签: ssas mdx


【解决方案1】:

如果您在行上使用 [DrilldownCreditRisk].[Level 6] 属性层次结构成员 X 和 Y 而不是 [DrilldownCreditRisk].[ExposureDrilldown] 层次结构,它是否很快(无论查询是否返回相同的数字)?你的等级制度是自然的吗? (级别之间是否存在属性关系?您是否在设计时收到有关该层次结构的属性关系的警告?)如果您的层次结构不自然,则转到“属性关系”选项卡并定义一个反映您的层次结构的属性关系chain,直到层次结构上的警告图标消失。

自然层次结构的性能总是比不自然的要好。

【讨论】:

  • 自然层次结构和用户层次结构一样吗?
  • 用户层次结构是我在中间窗格中定义的多层次层次结构的意思。与具有一个级别的属性层次结构相比,它具有多个级别。用户层次结构可以是自然的或不自然的,这取决于属性关系是否从一个级别到另一个级别。如果不自然,您会收到一个警告图标。
  • 谢谢 Greg - 所以用户层次结构是不是属性层次结构的任何层次结构,即用户层次结构是一个多层次的层次结构,可以是自然的或非自然的?
  • 你提到的很好的参考@GregGalloway!
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2014-12-25
  • 1970-01-01
  • 2021-12-11
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多