MDX 按维度属性计算的成员过滤器

2024-03-07

我想创建一个计算成员并按维度过滤它。这是工作示例:

(
    [Policy].[Policy Status].&[Void], 
    [Policy].[Tran Type].&[Renewal], 
    [Measures].[FK Policy Distinct Count]
)

但如果我想像这样过滤它

(
    [Policy].[Policy Status].&[Void], 
    [Policy].[Policy Status].&[Policy],  
    [Measures].[FK Policy Distinct Count]
)

比它不起作用。它表示相同的层次结构在元组中显示多次。

另一件事是,如何排除行?这是这个想法...

(
    ![Policy].[Policy Status].&[Void], 
    ![Policy].[Policy Status].&[Policy],  
    [Measures].[FK Policy Distinct Count]
)

首先,了解 MDX 语法以及它与以下概念的关系非常重要:元组、成员和集合 http://msdn.microsoft.com/en-us/library/aa216769%28v=sql.80%29.aspx.

Tuples

使用括号表示一个元组:

(
  [Policy].[Policy Status].&[Void], 
  [Policy].[Tran Type].&[Renewal], 
  [Measures].[FK Policy Distinct Count]
)

元组只能包含来自任何层次结构的单个成员。

Sets

要从同一层次结构中的多个成员检索结果,您必须查询一个集合。 MDX 集用大括号表示:

{
  [Policy].[Policy Status].&[Void], 
  [Policy].[Policy Status].&[Policy]
}

一组是,根据定义 http://msdn.microsoft.com/en-us/library/aa216769%28v=sql.80%29.aspx,

零个、一个或多个元组的有序集合。

因此,如果您想查询[FK Policy Distinct Count]针对这两个成员的度量,该集合的元组必须各自包含度量:

{
  ( [Policy].[Policy Status].&[Void],   [Measures].[FK Policy Distinct Count] ), 
  ( [Policy].[Policy Status].&[Policy], [Measures].[FK Policy Distinct Count] )
}

为了简化这个表达式,可以交叉连接 http://msdn.microsoft.com/en-us/library/ms144816.aspx两组不同维度:

{
  [Policy].[Policy Status].&[Void],
  [Policy].[Policy Status].&[Policy], 
  [Policy].[Policy Status].&[Something], 
  [Policy].[Policy Status].&[Something else], 
  [Policy].[Policy Status].&[Yet another member]
}
*
{
  [Measures].[FK Policy Distinct Count]
}

排除行

现在我们可以定义集合了,是时候从集合中删除一些成员了。在您的示例中,听起来您想要从一个级别开始(对于 MDX 引擎来说,该级别只是多维数据集中的预定义集,其中包括层次结构中该级别的每个成员),并排除某些成员。 MDX 有很多对集合进行操作的函数,我们将使用EXCEPT.

The EXCEPT功能有两个参数 http://technet.microsoft.com/en-us/library/ms144900.aspx,第一个是要从中删除的集合,第二个是应该从第一个集合中删除的集合。它返回一个集合。

在这个例子中,我假设[Policy].[Policy Status]是一个属性层次结构,其唯一级别的唯一名称为[Policy].[Policy Status].[Policy Status].

EXCEPT(
  [Policy].[Policy Status].[Policy Status],
  {
    [Policy].[Policy Status].&[Void],
    [Policy].[Policy Status].&[Policy]
  }
)

这将返回来自[Policy].[Policy Status].[Policy Status]水平,除了[Policy].[Policy Status].&[Void] and [Policy].[Policy Status].&[Policy].

为了获得有用的结果,我们可以通过度量交叉连接结果:

EXCEPT(
  [Policy].[Policy Status].[Policy Status],
  {
    [Policy].[Policy Status].&[Void],
    [Policy].[Policy Status].&[Policy]
  }
)
*
{
  [Measures].[FK Policy Distinct Count]
}

将集合用作单个成员

集合很好,但有时我们想要的只是将它们视为单个成员,就像在您计算的成员要求中一样。为此,我们需要使用聚合函数。聚合函数接受一个集合并返回代表整个集合的成员。

其中有很多,使用正确的一种取决于存储在多维数据集中的数据:MIN, MAX, COUNT, and SUM其中一些(参见“数字函数”MDX 函数参考 http://msdn.microsoft.com/en-us/library/ms145970.aspx以获得更完整的列表)。在此示例中,我假设您的维度使用 SUM 进行聚合:

SUM(
  EXCEPT(
    [Policy].[Policy Status].[Policy Status],
    {
      [Policy].[Policy Status].&[Void],
      [Policy].[Policy Status].&[Policy]
    }
  ),
  [Measures].[FK Policy Distinct Count]
)

在这里,我将要聚合的度量作为第二个参数传递给 SUM。


MDX 是一种复杂的语言,支持许多常见和不常见的集合运算。如果您还没有阅读过,我建议您花时间阅读在线文档,或者给自己找一本好的 MDX 书籍。有很多东西需要知道:)

<3

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

MDX 按维度属性计算的成员过滤器 的相关文章

  • 我可以转换对象并访问 C++ 中的私有数据成员吗?

    我想访问类中的私有数据成员 类中没有成员函数来访问私有数据成员 这是私人的 我想上这门课 想知道如何打开它 一种方法是复制类的声明 将私有成员设为公共 然后将新类称为 some else 然后我重新解释转换并复制原始对象 这有效 但我想要一
  • 应用基于 dplyr 中的字符串(或字符串向量)的过滤器向量

    R 和 tidyverse 有一些极其强大但同样神秘的方法可以将字符串转换为可操作的表达式 我觉得一个人需要成为一名专家才能真正理解如何使用它们 NOTE 这个问题不同于this one https stackoverflow com qu
  • 通过另一个对象数组过滤对象数组

    我想通过另一个对象数组过滤对象数组 我有 2 个这样的对象数组 const array id 1 name a1 sub id 6 name a1 sub id 2 name a2 sub null id 3 name a3 sub id
  • Powershell Get-ChildItem -Filter 的操作方式与具有相同值的Where 子句不同

    我的服务器上有一个名为 MyFolder 的文件夹 还有其他文件夹称为 MyFolder 1 MyFolder 2 MyFolder 3 等 如果我运行 gci C Sample Name like MyFolder 我得到预期的输出 Di
  • 如何将多个 QualifierFilter 应用于 HBase 中的一行

    我们想使用两个 QualifierFilters 过滤 HBase 表上的扫描 意味着我们只想获取表中确实具有特定列 col A 的行AND 某个其他列 col B 我们当前的方法如下所示 FilterList filterList new
  • JAX RS,我的过滤器不起作用

    我的工作是 使用 JAX RS 和 Jersey 进行基于 REST 令牌的身份验证的最佳实践 https stackoverflow com questions 26777083 best practice for rest token
  • MySQL 日期比较过滤器

    我有一些运行良好的 SQL 代码 并从我的 Wordpress 数据库返回所需的结果 但是 我根本无法理解如何过滤以下日期之间的日期 2010 12 10 00 00 00 and 2010 12 15 00 00 00 这是我的 SQL
  • 数据表 DT[i, j, by] 不使用 i 中的条件选择组,而是尝试过滤组内唯一值的数量

    我不确定我的数据发生了什么 也许我遗漏了一些简单的东西 我的数据集有一个 id dSc 和分配给每个 id 的簇 点 我想过滤掉那些只分配了一个簇的 id e g BS 100021 has only 1 cluster point ass
  • ExpandableListView、OnChildClickListener

    我有组列表 每个组内都有填充的子项目 我已经实现了searchview with filtered ressults and myExpandableListView 可以展开和折叠 问题是 我不知道如何处理 OnChildClickLis
  • 使用 php 删除 xml 中标签值之间的空格

    我一直在搜索信息 当我将 PHP 代码导出到 XML 时 如何删除 PHP 代码留下的标记值之间的空格 我将详细解释 首先加载 XML 然后使用 xPath 对文件进行搜索 然后删除一些元素与某些品牌不匹配 最后我将其重新导出为新的 XML
  • tcpdump 过滤 src dst 端口

    我需要嗅探 5060 端口上的 voip 流量 同时我需要排除源端口 5060 和目标端口 5061 的所有数据包 我需要类似的东西 tcpdump i any vvv s0 port 5060 and not src port 5060
  • Jquery 匹配值

    您好 我正在尝试执行 if 语句来查看数组中的值是否完全匹配 然后我希望它的同级元素能够显示精确匹配的 html 有人可以帮忙吗 我使用 TWIG 作为高级自定义字段 Wordpress 插件的 HTML 我只想说一次的所有地点的图片以及它
  • Java 兼容性的公共字段

    我最近对 Kotlin 作为一种语言很感兴趣 因为我们开发的平台是基于 Java 6 的 因此缺乏近年来为 Java 带来的任何语法糖 只有一件事使得在开发中无法使用 Kotlin 而不是 Java 那就是我们开发的平台在内部使用了一些反射
  • Ruby:通过正则表达式过滤数组?

    这对我来说是一个常见的 重复的习惯用法 使用正则表达式过滤数组 然后返回子数组 我的方法看起来不太像 Ruby 我来自 Java 我最终得到了很多看起来很像这样的方法 改进此代码的惯用 Ruby 方法是什么 def get all gifs
  • Primefaces 中的过滤数据表仅有效一次

    我正在尝试使用 Primefaces 过滤数据表 就像这个例子 http www primefaces org showcase ui datatableFiltering jsf 在网络浏览器中 我输入要过滤的文本 它会工作一次 但是当我
  • php 如何使用 getimagesize() 检查上传时的图像类型[重复]

    这个问题在这里已经有答案了 可能的重复 GetImageSize 在应该返回 FALSE 时没有返回 FALSE https stackoverflow com questions 10464948 getimagesize not ret
  • 多个维度的度量总计的计算成员

    我正在尝试使用计算得出的度量 AS 计算总计度量 CALCULATE CREATE MEMBER CURRENTCUBE Measures Total On Hand Amount AS Warehouses Warehouses All
  • 删除特定值之前和之后的特定值的运行

    我有一个包含几列的数据框 基于 activity 列 我想删除特定值 pt 的整个连续运行 但前提是它们紧邻 outside 运行之前或之后发生 在下面的简化数据中 有一次运行的 activity 为 outside 并且前后都有大块 pt
  • 将“-Filter”与变量一起使用

    我尝试过滤掉这样的东西 Get ADComputer Filter name like chalmw dm and Enabled eq true 这就像一个魅力 并且得到了我想要的 现在我想要 类似名称 部分作为变量 如下所示 Get A
  • SQLAlchemy - 将文本查询与过滤器结合起来

    我在用着SA 0 6 6 Python 2 66 and Postgres 8 3 我有某些查询需要一些复杂的安全检查 可以使用WITH RECURSIVE询问 我想做的是将文本查询与查询对象结合起来 这样我就可以根据需要应用过滤器 我最初

随机推荐