SSAS:命名查询

时间:2010-07-07 13:09:01

标签: sql-server-2005 cube ssas

我必须首先承认我是Analysis Services的新手,但现在必须使用新维度扩展现有的复杂多维数据集。因此,甚至很难说我的问题在哪里,而且我甚至没有计划如何开始。好的,我会尝试告诉我想要实现的目标。

给定是具有named calculation'返回'的数据源视图。它的表达是:

CASE WHEN fimaxActionCode IN (1, 2, 3, 4, 5, 8, 9, 12, 14, 17, 18, 20, 21, 22, 23, 24, 25, 30, 31, 32, 35) THEN
 'yes'
ELSE
 'no'
END

fiMaxActionCode 是一个外键,而'返回'的旧规则是,当其maxActionCode是上述之一时,Claim(主测量组)是 Return 。 新规则是声明是返回,当其maxActioncode是上述之一但没有先前声明时使用fimaxActionCode IN(8,10,11,13,19,23,24,26) ,27,28,29,30,33,34,36,37)。先前的权利要求是TOP(1)权利要求,其具有相同的SSN_Number并具有Repair_Completion_date<这个说法。 现在我的问题(希望有人理解我的意思): 如何创建这个新的Dimension?我的第一个想法是创建一个新的命名查询'PreviousClaim':

  SELECT     TOP (1) claim.iddata as ClaimID,PreviousClaim.idData as prevClaimID, PreviousClaim.fimaxActionCode, Claim.Repair_Completion_Date as ClaimRepDate, PreviousClaim.Repair_Completion_Date as PrevClaimRepDate
FROM         tabData AS PreviousClaim LEFT OUTER JOIN
                      tabData AS Claim ON PreviousClaim.idData <> Claim.idData
WHERE     (PreviousClaim.fimaxActionCode IN (8, 10, 11, 13, 19, 23, 24, 26, 27, 28, 29, 30, 33, 34, 36, 37)) AND (PreviousClaim.fiClaimStatus IN (1, 4, 254, 255, 6)) 
                      AND (PreviousClaim.SSN_Number = Claim.SSN_Number) AND (PreviousClaim.Repair_Completion_Date < Claim.Repair_Completion_Date)
ORDER BY PreviousClaim.Repair_Completion_Date DESC;

然后我想在Claim-Table-Datasourceview中创建一个新的Named Calculation,检查它是否有“不规则的先前声明”。这是走的路还是我在完全错误的轨道上?

编辑:另一个问题:我如何查询这个命名查询?我可以定义参数变量f.e。:

AND (Claim.iddata=@ClaimID)

此致 添

1 个答案:

答案 0 :(得分:1)

这些数据如何加载到实际的Claim维度(或者其名称可能是什么)?我问的原因是,通过在加载过程中添加此规则而不是编写MDX计算成员,可以更好地解决此任务。

由于您必须返回数据以确定该单元是否曾使用fimaxActionCode进行过声明,这可能会因MDX而变得令人讨厌,您可以在加载时轻松将它们分开并相应地拆分(即如果它有先前的索赔或者没有先前的索赔并且属于以下列出的代码之一:8,10,11,13,19,23,24,26,27,28,29,30,33, 34,36,37)。从本质上讲,你会创建一些缓慢变化的维度,因为我可能认为这些声明也有某种时间关系,如果它发生了这种声明,等等。

通过我建议的方式解决问题,你可以使用相同的维度,只需添加额外的字段,表示该项目是否是一个声明,如果它不符合“新”返回标准,你会只留下记录。

有意义吗?