1

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

给定的是一个带有命名计算“返回”的数据源视图。其表达式为:

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是一个外键,'Returns' 的旧规则是,当它的 maxActionCode 是上述之一时,Claim(main measuregroup) 是一个Return 。新规则是,当其maxActioncode是上述之一但没有先前具有 fimaxActionCode IN (8, 10, 11, 13, 19, 23, 24, 26, 27, 28, 29, 30、33、34、36、37)。先前的声明是具有相同 SSN_Number 且 Repair_Completion_date < 此声明的 TOP(1) 声明。现在我的问题(希望有人明白我的意思):如何创建这个新维度?我的第一个想法是创建一个新的命名查询“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 中创建一个新的命名计算,检查它是否有“不规则的先前声明”。这是要走的路还是我走错了路?

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

AND (Claim.iddata=@ClaimID)

问候,蒂姆

4

1 回答 1

1

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

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

通过按照我建议的方式解决问题,您可以使用相同的维度,只需添加额外的字段来表示该项目是否为索赔,如果它不属于“新”退货标准,您只需离开单独记录。

有道理?

于 2010-07-07T13:19:12.050 回答