【问题标题】:Hyperion Essbase Connection in SSISSSIS 中的 Hyperion Essbase 连接
【发布时间】:2012-01-12 21:40:56
【问题描述】:

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

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

  2. microsoft SSIS connectors 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 服务器产品的许可之外,还有其他解决方案吗?

【问题讨论】:

  • 我无法再访问 EssBase 安装,但我可以在 SSRS 和直接 .NET 中连接到它,所以我不明白为什么它在 SSIS 中不能正常工作。您的数据源可能需要是一个脚本组件才能将其拉下,但应该可以工作
  • 这听起来令人鼓舞。我知道 SSRS 可以连接到它,但似乎没有将此连接功能移植到 SSIS。我会看看是否有人发布了任何关于通过 .net 连接和导出数据的脚本。

标签: .net oracle ssis hyperion essbase


【解决方案1】:

我没有听说过 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;
        }
    }
}

【讨论】:

  • 这从头到尾解决了我的问题。非常感谢!
【解决方案2】:

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2010-09-09
    • 1970-01-01
    相关资源
    最近更新 更多