5

我正在尝试为即将到来的项目做一些分析。

它与趋势、图表和分析有关;所以想想一段时间内的 MAX、MIN、AVG、SUM 等。

假设我们有一个设置为根据时间维度计算这些计算的 OLAP 多维数据集。

从理论上讲,后端可以查询多维数据集并获取某个对象 A 的某个属性 B 一个月或一年中的几天或任何情况下的结果(即在过去 5 年中,您可以操作通过使用类似于金融股票图表上使用的滑块窗口来扩大或缩小您的视野呈现的日期范围)。

我们中的一些人认为我们可以使用 MDX 查询多维数据集来驱动使用一些 HTML 5 图表工具的 UI。

我是 OLAP、MDX、Cubes 等的新手,但似乎没有一种干净的方法可以在 .NET 代码中检索 MDX 查询的结果(我们将在 MVC 网站中使用 C#)。

到目前为止,我们发现效果最好的可能是 ADOMD。

我想知道是否有其他人可以建议。

是否有人使用 OLAP 多维数据集和 MDX 查询来驱动他们的网站?

在我看来,如果多维数据集已经正确设置以回答过去 2 个月中属性 B 的对象 A 之类的问题,那么我们应该能够准确地查询多维数据集以获取该数据并在某些 UI 上以我们认为合适的方式显示它. 不过,我不确定是否有一种干净的方法。

任何建议,见解,想法将不胜感激。

4

5 回答 5

7

5年前...

我参与了一个项目,该项目具有拖放界面(HTML 和大量 JS),以允许用户完全按照他们的需要构建自定义多维数据集查询。我们使用 ajax 调用 ASP 以使用 ADOMD 获取多维数据集数据并将其作为 HTML 表返回。图表是通过创建 SVG 的自定义 JS 绘制的。(现在使用 .NET 和 JQuery 会更容易,但仍然需要大量工作。)

这听起来很复杂,但效果很好,并且足够可靠,可以出售给英国最大的酒店公司来分析他们的销售数据。

每当我遇到问题并在 Google 上寻求帮助时,似乎只有我一个人通过 Internet 呈现 OLAP 数据(大多数人都处于 Intranet 环境中,而且我们也没有使用 Web 浏览器来提供)。我不知道现在情况是否发生了变化,但我相信 OLAP 被视为一种查看您自己的数据的方式,而不是管理客户的数据并让他们能够看到它。

我的建议:

  1. 如果你听到“数据透视表”这个词,那就跑掉
  2. 如果客户想要用户级别或位置级别的安全性(角色),请逃跑
  3. 确保您非常擅长编写 MDX,因为人们会要求您为他们构建复杂的报表(他们不会总是想使用 UI 来配置报表)
  4. 多维数据集需要时间来构建,但有时人们希望在刷新时看到实时变化(SQL 会这样做,但 OLAP 需要重新处理时间)
  5. 可钻图很酷,非常适合发现异常
于 2012-04-11T20:47:10.360 回答
3

我会说 OLAP 和多维数据集非常适合这项任务,而且您没有找错树。我将以 icCube 及其网络报告为例;您可以在链接上看到的图表正在根据当前过滤器选择生成 MDX 查询;您还可以获得事件(例如,单击单元格)和向下钻取支持。这是在纯 Javascript 中完成的,因此您应该能够将其集成到您自己的网站中。该工具的设计主要针对 OEM 解决方案;所以它是高度可配置的,以满足您自己的需要;例如,您可以使用自己的图表库(目前支持:Google、ExtJs/Sencha、amCharts、protoviz、flot)。

于 2012-04-04T05:14:15.700 回答
1

确实,你可以使用 Ranet OLAP 版本的 codeplex 并且 google.code 没有更新,但是可以在Ranet OLAP项目的官方网站上找到

HTML5 在线演示

于 2012-04-10T17:19:28.993 回答
0

如果您使用 C# 并且正在编写自己的自定义 UI,使用自定义 Web 服务,您可能想尝试使用 Ranet。这是一个开源项目,但后来被关闭了。我不知道这些广告是否对你有意义。Ranet 通过实现 ANTLR 来工作,所以如果花时间来实现它是有意义的(这会很困难),那么您可以尝试尽可能多地利用 ANTLR,它有一个 .NET 发行版。或者,您可以使用 XMLA 和 ADOMD.NET,这将为您提供直观的对象来生成图表,但它是一种效率低下的协议。如果你使用 Java,你可以使用 olap4j,它会为你提供很多你需要的东西。您的选择很大程度上取决于您的服务器界面。你在用蒙德里安吗?您有 XMLA servlet 吗?自定义网络服务?

于 2012-04-03T17:28:18.393 回答
0

我们过去做过的一件事效果很好,尽管有些人可能认为这是一种逃避——我们使用了带有嵌入式 MDX 查询的 SSIS 包,这些查询将数据展平并将其存储在二维 SQL 表中。

例如 - 我们采用 OLAP 多维数据集并按天、周等将数据展平,并将计算作为附加列。这使我们能够使用 AJAX 对数据进行超快速查询。此解决方案特别适用于需要一段时间来处理每天或每周更新一次的数据集的 MDX 计算。我们只需在正常 ETL 进程运行后触发 SSIS-to-SQL 同步包在夜间运行。

可能需要 20 秒才能刷新的 MDX 计算可以扁平化为 SQL 并在毫秒内检索,从而为用户提供与其完整 OLAP 报告和即时响应时间基本相同的数据。然后,我们将此方法与图表库配对以显示汇总数据。

只是思考的食物。

于 2014-03-21T03:45:31.660 回答