MDX 处理负值
Posted
技术标签:
【中文标题】MDX 处理负值【英文标题】:MDX Handling Negative Values 【发布时间】:2017-01-03 18:46:49 【问题描述】:MDX 查询不能很好地处理负值吗?不是性能明智,但你会得到奇怪的结果吗?
我有一个奇怪的结果。在我的事实表的第一列中,我有一些表示空键值的负值。
我没有创建 MDX 查询。我只是拖放,软件正在创建 MDX。
编辑第 1 部分: 我使用的软件是 Pentaho 用户控制台。为了将其放入用户控制台,我必须使用架构工作台设置架构和多维数据集。
实际数据本身是准确的。
通常,当我向下钻取时,我会返回结果以显示用户控制台正在向下钻取的内容。带有负值;但是,我没有得到任何值。我认为 MDX 对负值的处理方式不同,但我是 MDX 的初学者,我只是基于我 10-15 分钟的 Google 搜索。
样本数据: 维度 id 值:
business_id, carrier_id, at_id, as_id, device_id, created_date_id, created_for_id, cancel_date_id, completed_date_id
度量:activity_count
每列的示例值:
-1, 100, 29, 1, 300, 4269, 500, 1020, -1, 1134
活动计数 = 1
编辑第 2 部分:
我正在努力获取 MDX 日志。
为了简单起见,我现在把 行上的“business_id”, 我唯一的衡量标准是“activity_count” 我正在尝试过滤 business_id = -1。
我对 MDX 没有经验,但我想 MDX 应该是这样的:
select [measures] on columns
from [cube_name]
where [business_filters].[business_id] = -1
现在我收到一条错误消息,因为它说
Mondrian Error:No function matches signature '<Level> = <Numeric Expression>'
但我认为这就是 MDX 的样子,有点。大家觉得呢?
编辑第 3 部分:
有趣的事实:如果我转到数据库表,我的 business_id = -1 的度量值对于任何行都不为空。
如果我生成一些 MDX,则值为 Null。如果我将 -1 值替换为正值,则返回的度量是准确的。为什么是这样 。 . .
select
non empty [Measures]
on columns,
[business_filters].[business_id].[-1]
on rows
from
[activities_fact_01]
【问题讨论】:
什么软件?能否提供:样本值、预期输出和实际输出? 我编辑了我上面的帖子来回答你的问题。 在 excel 和金字塔中,我们没有注意到负数被“区别对待” - 不过我不明白你的问题:什么时候被区别对待?跨度> 我终其一生都无法弄清楚为什么该度量显示我的值为 32,但是当我尝试向下钻取时,我没有返回任何数据(这只发生在负键值上)。我的理论是 MDX 不适用于负数。但是我不太了解 MDX,所以我可能是错的。 你需要找出当你向下钻取时正在生成什么 mdx - 它可能只是返回 null 【参考方案1】:我知道出了什么问题。
这与具有不在维度中的外键值有关。我去 Pentaho 下钻的时候,这些结果都没有回来,因为外键没有对应的主键值。
我花了 1.25 天试图解决这个问题,但你可以打赌我永远不会再犯这个错误 :)
【讨论】:
以上是关于MDX 处理负值的主要内容,如果未能解决你的问题,请参考以下文章
Microsoft SQL Server 2008 MDX Step by Step中关于MDX Step-by-Step.abf损坏文件的处理