Вопрос

Как я могу заставить SSI подключиться к кубу Oracle Hyperion Essbase, чтобы использовать его в качестве источника данных? Погуглив это вернуло следующее:

  1. А Подобный вопрос Был задан вопрос о конкретной версии без реального ответа, кроме «Сторонний инструмент может сделать это».

  2. А Microsoft SSIS Connectors Wiki Указывает, что вы можете сделать это через Star Analytics.

  3. Начиная с SQL Server 2005 SP2, Отчетные услуги (SSRS) имеет соединение источника данных. Эта функция продукта, похоже, не переводится ни на какие объекты для SSIS. Один блоггер предположил, что это могло быть сделано как услуга за услугу Расположение еще до Oracle приобрела Hyperion с тех пор, как Hyperion начал поддерживать подключение к SQL Server 2005 SSAS в то время.

  4. Согласно @Billinkc, он использует для подключения к нему с помощью прямого .NET. Немного копания вернулась Hyperion Application Builder .NET (Hab.net). Сначала это было многообещающим решением, но оказывается, что продукт был прекращен с выпуском 11.1.3. @billinkc также предоставил образец кода сейчас, поэтому я проверю его и посмотрю, работает ли это.

Помимо лицензирования продукта STAR Analytics Server, который является чрезмерным затратом (для меня), есть ли другие решения?

Это было полезно?

Решение

Я не слышал о hab.net, но +1 за то, что вы нашли это. Вместо этого у меня просто прошел тест на подключение к грязи .NET, как ниже. Я немного изменил это, чтобы работать с DTS. Очевидно, вам нужно определить свои буферные столбцы и типы, но, надеюсь, это проведет вас через гиперион.

Чтобы получить доступ к классу 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;
        }
    }
}

Другие советы

В случае, если это кому -то нужно, самый простой и самый прямой способ - это SSRS. Более подробная информация здесь:https://samtran.me/2017/05/05/interrogating-and-automation-of-essbase-cubes-with-essbase-web-services/

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top