基于事实表列创建新的计算度量

Posted

技术标签:

【中文标题】基于事实表列创建新的计算度量【英文标题】:Create new calculated measure based on fact table column 【发布时间】:2020-11-27 10:15:16 【问题描述】:

我被分配在我们的立方体中计算 NPS(净推荐值)。 原来我不完全确定如何处理它。 在我们的事实表中,我们有每个售出商品的 NPS 答案(范围从 0 到 10,没有答案时为 NULL)。公式为:支持者百分比 (>=8) - 批评者百分​​比 (

我想创建计算成员,但在我看来,它只能在现有度量上创建。并且在进一步计算之前不能以任何方式预先汇总 NPS,因为必须可以访问详细数据以进行计算。此外,与任何其他常规度量一样,此度量必须跨越所有维度。

我应该从哪里开始?所有答案似乎都是在指定的层次结构/维度上创建度量,或者基于已经存在的度量。我需要的是如下内容:

CREATE MEMBER CURRENTCUBE.Measures.NPS_score AS 

(COUNT(CASE WHEN [Product].[nps_rating] >= 9 THEN [Product].[nps_rating] ELSE NULL END)/COUNT(CASE WHEN [Product].[nps_rating] >= 0 THEN [Product].[nps_rating] ELSE NULL END))
-
(COUNT(CASE WHEN [Product].[nps_rating] <=6 THEN [Product].[nps_rating] ELSE NULL END)/COUNT(CASE WHEN [Product].[nps_rating] >= 0 THEN [Product].[nps_rating] ELSE NULL END))

其中 nps_rating 是我希望我的计算基于的事实表(产品)列。

【问题讨论】:

【参考方案1】:

您可以在 DSV 中将其创建为计算列。 DSV 将充当您表的视图。因此,这将帮助您快速上手。这个新的计算列将在度量中可用。

转到解决方案资源管理器

你会看到你所有的维度和事实

现在右键单击您的事实并单击命名计算。

【讨论】:

您能详细说明一下吗?我正在使用 Visual Studio 开发多维数据集,是否对多维数据集本身中的多维数据集执行 DMV 查询?还是在 sql server 端? 应用 DSV 而不是 DMV。 哇,我想我明白了!谢谢,我不知道 DSV 中存在计算列。这是非常聪明的使用它们。非常感谢!【参考方案2】:

我所做的是:

在事实表的每个分区中添加计算列:NPS_promoters (>=9) 和 NPS_detractors ( 在多维数据集结构中添加了新的度量,该度量将计算 NPS 列上的非空值(因此我得到了所有答案的计数), 最后在计算中我添加了新的计算成员,表达式如下:
[Measures].[NPS Promoter]/[Measures].[NPS_answers] - [Measures].[NPS Detractor]/[Measures].[NPS_answers]

【讨论】:

以上是关于基于事实表列创建新的计算度量的主要内容,如果未能解决你的问题,请参考以下文章

如何在 MDX 中基于维度属性定义计算度量?

在 MDX 中为使用事实表中的相同列的不同度量构造计算度量

使用维度计算的度量

维度成员作为 MDX 中的计算度量

维度的计算成员

计算列的公式基于不同的表列