8

How can I get SSIS to connect to an Oracle Hyperion Essbase cube to use it as a data source? Googling this returned the following:

  1. A similar question was asked about a specific version with no real answer other than "a third party tool can do it."

  2. A microsoft SSIS connectors wiki indicates you can do this through Star Analytics.

  3. Beginning with SQL Server 2005 SP2, Reporting Services (SSRS) has a data source connection. This product feature didn't seem to translate to any objects for SSIS. One blogger suggested this may have been done as a quid pro quo arrangement back before Oracle purchased Hyperion since Hyperion began supporting connecting to SQL Server 2005 SSAS cubes at that time.

  4. As per @billinkc he use to connect to it with straight .NET. A little digging returned Hyperion Application Builder .NET (HAB.NET). At first this appeared to be a promising solution, but it turns out the product was discontinued with the 11.1.3 release. @billinkc also provided a code sample now, so I will test it out and see if this works.

Aside from licensing the Star Analytics server product which is cost prohibitive (for me), are there any other solutions out there?

Community
  • 1
  • 1
Registered User
  • 8,357
  • 8
  • 49
  • 65
  • 1
    I no longer have access to an EssBase installation but I could connect to it in SSRS & straight .NET so I don't see why it wouldn't work the same in SSIS. Your data source might need to be a script component to pull it down but should work – billinkc Jan 12 '12 at 21:56
  • That sounds encouraging. I know SSRS can connect to it, but it doesn't appear this connectivity feature was ported to SSIS. I'll look into seeing if anyone has published any scripts on connecting and exporting data via .net. – Registered User Jan 12 '12 at 23:32

2 Answers2

6

I hadn't heard of HAB.NET but +1 for finding that. Instead, I just had a dirt simple connectivity test going in .NET like below. I've modified it a bit to work with the DTS stuff. Obviously, you'll need to define your buffer columns and types but hopefully this gets you through the hyperion stuff.

In order to access the Microsoft.AnalysisServices.AdomdClient class, add a reference to ADOMD.NET and save all. Then the below code will function properly.

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;
        }
    }
}
Registered User
  • 8,357
  • 8
  • 49
  • 65
billinkc
  • 59,250
  • 9
  • 102
  • 159
0

In case anyone needs it, the easiest and most direct way is through SSRS. More information here: https://samtran.me/2017/05/05/interrogating-and-automation-of-essbase-cubes-with-essbase-web-services/

Sam Tran
  • 148
  • 1
  • 3