Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Hyperion Essbase Connection in SSIS

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?

like image 345
Registered User Avatar asked Jan 12 '12 21:01

Registered User


People also ask

How do you connect the Essbase cube?

Type the name of the Oracle Essbase sever. Select Signons, and then click Password and Create a signon the Everyone group can use. Type the User ID, Password, and then confirm the password for the cube. Select Test the connection, and then Test to test whether parameters are correct.

Is Essbase and Hyperion the same?

Essbase began as a product from Arbor Software, which merged with Hyperion Software in 1998. Oracle Corporation acquired Hyperion Solutions Corporation in 2007, as of 2009 Oracle markets Essbase as "Oracle Essbase", both on-premises and in Oracle's Cloud Infrastructure (OCI).

Is Essbase an OLAP cube?

Essbase - A Separate-Server OLAP: Essbase is the OLAP server that provides an environment for rapidly developing custom analytic and EPM applications. The data management strategy allows Essbase to easily combine data from a wide variety of data sources, including the Oracle Database.


1 Answers

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;
        }
    }
}
like image 56
billinkc Avatar answered Sep 19 '22 11:09

billinkc