8

如何让 SSIS 连接到 Oracle Hyperion Essbase 多维数据集以将其用作数据源?谷歌搜索返回以下内容:

  1. 一个类似的问题被问到一个特定的版本,除了“第三方工具可以做到”之外没有真正的答案。

  2. 微软 SSIS 连接器wiki表明您可以通过Star Analytics执行此操作。

  3. 从 SQL Server 2005 SP2 开始,Reporting Services (SSRS) 具有数据源连接。此产品功能似乎没有转化为 SSIS 的任何对象。一位博主表示,这可能是在甲骨文收购 Hyperion 之前作为交换条件完成的,因为当时 Hyperion 开始支持连接到 SQL Server 2005 SSAS 多维数据集

  4. 根据@billinkc,他使用直接.NET 连接到它。稍微挖掘一下就返回了Hyperion Application Builder .NET (HAB.NET)。起初,这似乎是一个很有前途的解决方案,但事实证明该产品在 11.1.3 版本中已停产。@billinkc 现在还提供了一个代码示例,因此我将对其进行测试,看看是否可行。

除了许可成本高昂的 Star Analytics 服务器产品(对我而言)之外,还有其他解决方案吗?

4

2 回答 2

6

我没有听说过 HAB.NET,但是 +1 发现了它。相反,我只是在 .NET 中进行了一个简单的连接测试,如下所示。我已经对其进行了一些修改以使用 DTS 的东西。显然,您需要定义缓冲区列和类型,但希望这能让您了解 hyperion 的内容。

为了访问 Microsoft.AnalysisServices.AdomdClient 类,添加对 ADOMD.NET 的引用并保存所有内容。然后下面的代码将正常运行。

using System;
using System.Data;
using Microsoft.SqlServer.Dts.Pipeline.Wrapper;
using Microsoft.SqlServer.Dts.Runtime.Wrapper;

using Microsoft.AnalysisServices.AdomdClient;

public class ScriptMain : UserComponent
{
    public override void CreateNewOutputRows()
    {
        string connectionString = string.Empty;
        connectionString = "Provider=MSOLAP;Data Source=http://hyperion00:13080/aps/XMLA; Initial Catalog=GrossRev;User Id=Revenue;Password=ea$yMon3y;";
        string query = "SELECT ...";
        AdomdDataReader reader = null;
        try
        {
            using (AdomdConnection conn = new AdomdConnection(connectionString))
            {
                conn.Open();
                using (AdomdCommand cmd = new AdomdCommand(query, conn))
                {
                    reader = cmd.ExecuteReader();

                    while (reader.Read())
                    {
                        // Replace Console.WriteLine with assignment of
                        // Output0Buffer.AddRow();
                        // Output0Buffer.column = (stronglyTyped) reader[i]
                        Console.WriteLine(reader.GetString(0));
                        Console.WriteLine(reader.GetString(1));
                    }
                    Console.WriteLine("fin");
                }

            }
        }
        catch (Exception ex)
        {
            Console.WriteLine(ex);

            throw;
        }
    }
}
于 2012-01-13T03:48:04.940 回答
0

如果有人需要,最简单、最直接的方法是通过 SSRS。更多信息在这里: https ://samtran.me/2017/05/05/interrogating-and-automation-of-essbase-cubes-with-essbase-web-services/

于 2018-10-11T21:53:07.873 回答