1

我正在使用 Visual Studios BIDS 来修改现有的 OLAP 多维数据集。

SSMS:有一个基础事实表 (FactTableMain),其粒度非常细,其中包含 10 种不同的措施来跟踪应用程序的状态(它们几乎就像一个标志)。这些度量要么具有个人的 ID 值,要么是NULL.

SSASVisual Studio中OLAP

  1. 有 10 个测量组。每个度量值组都基于一个 DSV 命名查询,该查询选择 1 个 FactTableMain 度量值,其中 MeasureName IS NOT NULL
  2. 每个度量值组的钻取操作,仅返回 PersonName 和 PersonID 列。

每个度量值组的练习:

  1. 显示重复项(因为并非所有事实表列都是演习的返回列)
  2. 不返回度量计数显示的预期行数

我试过了:

  1. 在钻取操作中使用 filter 和 distinct 的多个MDX条件,但它们要么没有区别,要么操作完全消失
  2. 创建一个垃圾钻取维度,从 FactTableMain 中选择不同的 ID,并将其设置为钻取操作的唯一返回列(钻取返回行没有区别)
  3. MDX使用动作表达式将新(标准)动作创建为行集和数据集

我想我需要一个MDX带有以下属性的动作表达式的新(标准)动作:

  • 目标类型 = 细胞
  • 目标对象 = 所有单元格
  • 操作内容类型 = 行集

我当前的 MDX 查询确实返回了结果,但仅针对第一个度量的总体总数,而且它的格式根本不正确。如果我在客户端应用程序中选择不同的度量,重新运行查询并再次钻取,它将不起作用。我找了又找,但我没有想法,坐在一个厄运的黑坑里。:(

我目前的MDX查询是:

WITH 
  SET [person] AS 
    NonEmpty([person].[person].[person]) 
  MEMBER CurrentMeasure AS 
    [Measures].CurrentMember 
SELECT 
  NonEmpty
  (
    Filter
    (
      [Quarter].[Quarter].[Quarter].MEMBERS
     ,[Quarter].[Quarter].CurrentMember
    )
  ) ON COLUMNS
 ,(
    [person]
   ,NonEmpty([person].[person ID].[ID])
  ) ON ROWS
FROM [Applications];

目标:我最终希望钻取动作足够动态,以了解用户正在选择的当前度量,并通过用户对行/列的维度选择进行过滤。

问题:

  1. 有没有办法使用原始钻取操作的条件来过滤不同的或非空的行?我知道有演习限制,但是有什么可以解决演习限制的方法吗?
    1. 如何创建一个针对用户选择(我的目标)动态的标准行集操作。
    2. 有任何想法吗?

URL 操作类型不能满足我们的业务需求。

编辑:我从 DSV 中删除了所有不必要的内容,并且只选择了不同的行。每个 ID 可以有超过 1 个应用程序,一个应用程序可以有超过 1 个感兴趣的区域。现在,演习返回每个 ID、应用程序和感兴趣区域的 1 行。我们只希望演习返回不同的 ID,无论应用程序的数量或感兴趣的领域如何。我不知道从这里去哪里。我可以在演练中过滤我们的应用程序编号和/或感兴趣的领域维度吗?

4

2 回答 2

0

我相信你走得太快太快了。DSV 应该在浏览器中显示没有重复的数据。如果不是,请返回 DSV 并检查它是什么。也许在事实表之上创建一个视图(索引视图),这样您就可以确保只查询您想要的数据。另外:您确定您的尺寸链接正确吗?有时,由于未使用错误的链接键正确设置尺寸,会出现重复。

在 MDX 中:如果您在“计算”选项卡中创建了一个计算,则可以在其中进行钻取。否则,您必须每次都编写正确的 MDX 查询。

HTH。

于 2015-07-08T03:24:00.417 回答
0

请参阅最后一个示例: http ://asstoredprocedures.codeplex.com/wikipage?title=Drillthrough&referringTitle=Home

You have to deploy that ASSP assembly to SSAS. It is used to pickup the current context on all attributes during execution of the action. But it will return totals by employee for whatever measure the user launched the action from.

"select {[Measures].CurrentMember} on 0, NON EMPTY [person].[person].[person].Members on 1 from (select (" + ASSP.CurrentCellAttributes([Measures].CurrentMember) + ") on 0 from [Application])"
于 2015-07-19T14:51:29.867 回答