我处理MDX查询的问题。
多维数据集包含模型和序列号(单位),并且应显示每年的保修单位。
这是具有此维度/度量的多维数据集:
现在,我将选择所有特殊年份的保修期内的序列号。
问题是整个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万行)的提示?
答案 0 :(得分:0)
如果你试图将结果返回到MDXstudio或SSMS中的可见网格,那么它可能会超时,因为有很多要呈现的内容。
如果您使用emitChange()
addChangeListener()
removeChangeListener()
getAll() //returns array
areSomeLettersInFolderChecked(folderName) //returns bool
areAllLettersInFolderChecked(folderName) //returns bool
countNewLettersInAllFolders() //returns object
或CLR OLAP Extensions,请尝试以下操作:
不要将结果返回到屏幕,而是将结果插入到表格中。
通过取消自定义度量来简化您的脚本。这可以很容易地计算出来,因为它是微不足道的:我感觉它正在减慢ssas。
脚本
OPENQUERY