【问题标题】:Business intelligence - Can't find the value I'm looking for商业智能 - 找不到我正在寻找的价值
【发布时间】:2011-09-08 08:17:58
【问题描述】:

我正在为我们的网站设置一个 SSAS 项目,但我无法找到好的价值,因为它在普通 SQL 查询中非常简单。

这是我的设置:我有一个数据仓库,其中包含我网站上的用户连接事实。所以我有一个成员维度和一个日期维度。以下是我要查找的 KPI:“用户访问我们网站的平均天数”。

举个例子:

Member    Day
a         1
a         1
a         2
b         2
a         4
a         5
b         5
a         6

在这种情况下,KPI 应该给出 3,5(a=5,b=2)。在简单的 SQL 中,我会在 group by 上对 group by 进行平均(这是我想到的第一个请求,也许有更好的请求)。

但是,一旦我尝试将维度和事实组合在一起,我就找不到合适的衡量标准。

我在寻找错误的东西吗?我应该放弃我的 SQL 思维方式吗?您将如何获得我需要的价值?

【问题讨论】:

  • 你解释一下你是怎么得到这个的? In this case the KPI should give 3,5 (a=5, b=2).
  • 是的,换句话说,用户 a 在第 1 天(两次)、第 2、第 4、第 5 和第 6 天来。即 5 天(和 6 次访问)。用户 b 将在第 2 天和第 5 天到来,这进行了 2 天(和 2 次访问)。因此,用户访问我的应用程序的平均天数为 (5 + 2) / 2。在 SQL 中,我会执行 SELECT AVG(Visits) FROM(SELECT Member, COUNT() Visits FROM (SELECT Member, COUNT() VisitPerDay FROM Connection GROUP BY Member, Day) t1 GROUP BY t1.MemberId) t2 (抱歉格式错误,我不知道如何在 cmets 中执行)
  • 你可以在你的代码周围加上`来获取代码格式。

标签: sql ssas business-intelligence


【解决方案1】:

我现在明白了!这只是一个国际化问题。对我来说3,5 表示数字35,我会写成3.5 :)

SELECT
  AVG(CountOfDay) As AverageDays
FROM
  (SELECT Member, COUNT(DISTINCT Day) CountOfDay FROM YourTable GROUP BY Member) AS UniqueDaysByMember

您真的不需要在子查询的 SELECT 中使用“成员”。它只是让它对我来说“意味着”一些东西,所以如果我稍后回来查看代码,我不会感到困惑!

【讨论】:

  • 好的,现在更清楚了。这就是臭名昭著的 COUNT DISTINCT。但这并不能回答我关于如何在 SSAS 中获得此结果的问题。现在如何设置 COUNT DISTINCT 度量,但我怎样才能对其进行 AVG 呢?
猜你喜欢
  • 1970-01-01
  • 2017-09-19
  • 2016-11-04
  • 1970-01-01
  • 1970-01-01
  • 2016-06-28
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多