隐藏Powerpivot中的层次复制(行标签)

时间:2015-09-28 00:53:44

标签: powerpivot dax

我正在从SQL活动数据库中报告法律案件的执行情况。我有一个案例主表,它有一个父/子层次结构。我正在寻找一种方法来适当地报告案例表现,只报告一次父/子组(“家庭”)。

相关表格的一个例子是:

Cases

ID  |  Client   | MatterName | ClaimAmount | ParentID | NumberOfChildren |
 1  | Mr. Smith | ABC Ltd    | $40,000     |       0  |       2          |
 2  | Mr. Smith | Jakob R    | $40,000     |       1  |       0          |
 3  | Mr. Smith | Jenny R    | $40,000     |       1  |       0          |
 4  | Mrs Bow   | JQ Public  |  $7,000     |       0  |       0          |

付款

ID  |  MatterID | DateReceived  | Amount |
 1  |      1    |    14/7/15    |   $50  |
 2  |      3    |    21/7/15    |  $100  |

我希望能够报告一个仅显示父事项的综合视图,其中包含总数(以及许多其他类似的相关事实表) - 例如

Client   | MatterName | ClaimAmount | TotalReceived |
Mr Smith | ABC Ltd    | $40,000     | $150          |
Mrs Bow  | JQ Public  |  $7,000     |   $0          |

我遇到的一个关键问题是隐藏不相关行的行标签(子事务)。我相信我需要

  • 确定当前行是否为父组
  • 合并该父组的所有度量
  • 过滤那是真的吗?将所有措施放在IF检查中?

任何帮助表示赞赏

1 个答案:

答案 0 :(得分:1)

您的层次结构有多少级别?如果它只有2个级别(父母有孩子,孩子不能成为父母),那么将你的模型非规范化。您可以为ParentMatterName添加单个列,并将其用作pivot中的rowfilter。如果数据中存在合理的最大级别数(我们通常将< = 6视为合理),那么与尝试动态汇总子度量值相比,非规范化可能更可取,当然更简单/更高性能。

编辑以解决以下评论:

在这种情况下,对数据结构进行非规范化只意味着转到下面的表结构:

Cases
ID | Client    | ParentMatterName | MatterName | ClaimAmount
1  | Mr. Smith | ABC Ltd          | ABC Ltd    | $40,000
2  | Mr. Smith | Jakob R          | ABC Ltd    |      $0
3  | Mr. Smith | Jenny R          | ABC Ltd    |      $0
4  | Mrs Bow   | JQ Public        | JQ Public  |  $7,000

关于命名法 - Excel是愚蠢的,DAX也是如此。以下是思考这些事情以帮助减少混淆的方法 - 当您在更复杂的DAX度量和查询中前进时,这些是重要的概念。

这里有一些绝对真实和准确的陈述,以显示命名法有多愚蠢:

  • FILTER()是一个表
  • 数据透视表行是过滤器上下文
  • FILTER()在用作CALCULATE()
  • 的参数时应用其他过滤器上下文
  • FILTER()在内部创建用于计算表达式的行上下文
  • FILTER()的参数受来自数据透视表行的过滤器上下文的影响
  • FILTER()的第二个参数计算在第一个参数的表中每行的行上下文中的数据透视表的rowfilter上下文中计算的表达式

等等。不要将数据透视表视为过滤器。你有过滤器,切片器,行过滤器,列过滤器。数据透视表中的所有内容都是过滤器上下文。

enter image description here

链接:

Denormalization in Power Pivot

Denormalizing Dimensions