gpt4 book ai didi

mdx - 蒙德里安:如何将连续值变成N个波段

转载 作者:行者123 更新时间:2023-12-02 10:45:40 25 4
gpt4 key购买 nike

所以我有一个值表示事实表上的天数长度。我想创建按年份将该值分解为 N 个带(例如 4 个带)的查询。有没有办法用CalculatedMembers 做到这一点?例如,我想要的乐队:< 1 年、1-3 年、3-5 年、5 年以上。我可以用这样的日子来做到这一点:

0 - 365
365 - 1095
1096 - 1825
1826 - infinity

知道如何做到这一点吗?我用的是蒙德里安。我想即时计算它,而不是添加字段和更改 ETL 脚本等。

我使用聚合函数定义了一个度量,该度量表示以天为单位的平均长度(显示为 2.4 年)。但实际上我想定义一个全新的度量,它是同一列上的计算度量,其中函数返回它所属的带,如上所述,然后汇总每个带中有多少个带。

我开始怀疑我必须在 ETL 中执行此操作并创建一个新列将它们放入一个带中。我怀疑这确实是一个新维度(与其说是计算出来的衡量标准)。

最佳答案

从你的问题中我了解到,你希望将乐队作为类别,这意味着你需要它们作为某个层次结构的成员。您可以在 MDX 中动态创建成员,但仅限于现有层次结构。您没有说明,因此我只是假设您有一个事件层次结构,您希望为其种子集群持续时间,此外,我假设包含维度键的层次结构名为 [Event].[Event Id].您也没有说明“平均持续时间”度量的名称。因此我只是假设它被称为Duration

然后您可以使用以下 MDX:

WITH Member [Event].[Event Id].[< 1 year] AS
Aggregate(Filter([Event].[Event Id].[Event Id].Members,
[Measures].[Duration] < 1.0
)
)
Member [Event].[Event Id].[1-3 years] AS
Aggregate(Filter([Event].[Event Id].[Event Id].Members,
[Measures].[Duration] >= 1.0 AND [Measures].[Duration] < 3.0
)
)
Member [Event].[Event Id].[3-5 years] AS
Aggregate(Filter([Event].[Event Id].[Event Id].Members,
[Measures].[Duration] >= 3.0 AND [Measures].[Duration] < 5.0
)
)
Member [Event].[Event Id].[5+ years] AS
Aggregate(Filter([Event].[Event Id].[Event Id].Members,
[Measures].[Duration] >= 5.0
)
)
SELECT ... // whatever you want to see
ON COLUMNS,
{
[Event].[Event Id].[< 1 year],
[Event].[Event Id].[1-3 years],
[Event].[Event Id].[3-5 years],
[Event].[Event Id].[5+ years]
}
ON ROWS
FROM [YourCube]

根据需要向行或列添加 WHERE 条件、其他层次结构、子选择。

我不确定这是否真的很快,但它解决了问题。

关于mdx - 蒙德里安:如何将连续值变成N个波段,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21437731/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com