MDX 处理负值

MDX Handling Negative Values

MDX 查询不能很好地处理负值吗?不是性能明智的,但你会得到奇怪的结果吗?

我有一个奇怪的结果。在我的事实 table 的第一列中,我有一些表示空键值的负值。

我没有创建 MDX 查询。我只是简单地拖放,软件正在创建 MDX。

编辑第 1 部分: 我使用的软件是Pentaho User Console。为了将其放入用户控制台,我必须使用架构 workbench.

设置架构和多维数据集

实际数据本身是准确的。

通常,当我向下钻取时,我会返回结果以显示向下钻取的用户控制台。具有负值;但是,我没有得到任何值。我 认为 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

Activity 计数 = 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 部分:

有趣的事实:如果我访问数据库 table,我的 business_id = -1 的度量值对于任何行都不为空。

如果我生成一些 MDX,则值为 Null。如果我将 -1 值替换为正值,则返回的度量是准确的。为什么是这样 。 . .

select
    non empty {[Measures]}
on  columns,
    [business_filters].[business_id].[-1]
on  rows
from
    [activities_fact_01]

我知道哪里出了问题。

这与具有不在维度中的外键值有关。我去Pentaho下钻的时候,这些结果都没有回来,因为外键没有对应的主键值

我花了 1.25 天的时间来解决这个问题,但你可以打赌我再也不会犯同样的错误了:)