MDX-Query - 查询多行。设置正确的过滤器

时间:2016-02-19 09:30:59

标签: ssas mdx

我处理MDX查询的问题。

多维数据集包含模型和序列号(单位),并且应显示每年的保修单位。

这是具有此维度/度量的多维数据集:

CubeOverview

现在,我将选择所有特殊年份的保修期内的序列号。

问题是整个Table v Dim Unit Model 4IB Test包含超过50个Mio行,这些行会导致QueryTimeout或者有时会导致MemoryException。

目前我有一个MDX查询(见下文),如果我选择特殊模型,它就有效。但是我需要对所有模型进行过滤。

WITH 
  MEMBER [Measures].[QtyTotal] AS 
    [Measures].[QtyInWarranty] + [Measures].[QtyInExtension] 
SELECT 
  NON EMPTY 
    {
      [Measures].[QtyStdOut] ,[Measures].[QtyInExtension] ,[Measures].[QtyStdIn]
     ,[Measures].[QtyInWarranty] ,[Measures].[QtyTotal] ,[Measures].[SumStartWarranty]
    } ON COLUMNS
 ,NON EMPTY 
    {
        crossjoin(
          [v Dim Unit Model 4IB Test].[ModelUnitMapping].[Id Unit].Members
          ,[Dim Country].[Id Country].[Id Country].members
         ,[Dim Calendar].[Calendar].[Month Name4report].members
         )
    } ON ROWS
FROM 
(
  SELECT 
    {   
            [v Dim Unit Model 4IB Test].[model no short].[Model No Short].&[SampleModel]
    } ON COLUMNS
  FROM 
  (
    SELECT 
    {
        [Dim Calendar].[Calendar].[Year].&[2015]
    } ON COLUMNS
    FROM [InstalledBaseCS_Serial]
  )
)

有没有人知道更新查询以获取所有单位一年(周围约400万行)的提示?

1 个答案:

答案 0 :(得分:0)

如果你试图将结果返回到MDXstudio或SSMS中的可见网格,那么它可能会超时,因为有很多要呈现的内容。

如果您使用emitChange() addChangeListener() removeChangeListener() getAll() //returns array areSomeLettersInFolderChecked(folderName) //returns bool areAllLettersInFolderChecked(folderName) //returns bool countNewLettersInAllFolders() //returns object 或CLR OLAP Extensions,请尝试以下操作:

  1. 不要将结果返回到屏幕,而是将结果插入到表格中。

  2. 通过取消自定义度量来简化您的脚本。这可以很容易地计算出来,因为它是微不足道的:我感觉它正在减慢ssas。

  3. 脚本

    OPENQUERY