Pregunta

¿Cómo puedo hacer que SSIS se conecte a un Cubo Oracle Hyperion Essbase para usarlo como fuente de datos? Google esto devolvió lo siguiente:

  1. A pregunta similar Se le preguntó sobre una versión específica sin respuesta real que "una herramienta de terceros puede hacerlo".

  2. A Wiki de los conectores SSIS de Microsoft indica que puede hacer esto a través de Análisis de estrellas.

  3. Comenzando con SQL Server 2005 SP2, Servicios de informes (SSRS) tiene una conexión de fuente de datos. Esta característica del producto no parecía traducirse en ningún objeto para SSIS. Un blogger sugirió que esto podría haberse hecho como un quid pro quo disposición antes de que Oracle compró Hyperion desde que Hyperion comenzó a soportar conectarse a SQL Server 2005 SSAS Cubes en ese momento.

  4. Según @Billinkc, él solía conectarse con él con .NET directo. Un poco de excavación regresó Hyperion Application Builder .NET (HAB.NET). Al principio, esto parecía ser una solución prometedora, pero resulta que el producto se suspendió con la versión 11.1.3. @Billinkc también proporcionó una muestra de código ahora, por lo que la probaré y veré si esto funciona.

Además de la licencia del producto Star Analytics Server que es de costo prohibitivo (para mí), ¿hay alguna otra solución por ahí?

¿Fue útil?

Solución

No había oído hablar de HAB.NET pero +1 por encontrar eso. En cambio, acabo de tener una prueba de conectividad de tierra simple en .NET como a continuación. Lo he modificado un poco para trabajar con las cosas DTS. Obviamente, deberá definir sus columnas y tipos de búfer, pero con suerte esto lo atraviesa las cosas de Hyperion.

Para acceder a la clase Microsoft.analysisServices.AdomDClient, agregue una referencia a adomd.net y guarde todo. Entonces el siguiente código funcionará correctamente.

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;
        }
    }
}

Otros consejos

En caso de que alguien lo necesite, la forma más fácil y directa es a través de las SSR. Más información aquí:https://samtran.me/2017/05/05/interrogating-and-automation-of-sbase-cubes-with-sbase-web-services/

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top