8

SSIS を Oracle Hyperion Essbase キューブに接続してデータ ソースとして使用するにはどうすればよいですか? これをグーグルで検索すると、次の結果が返されました。

  1. 特定のバージョンについて同様の質問がされましたが、「サードパーティのツールでできる」以外に本当の答えはありませんでした。

  2. Microsoft SSIS コネクタ wikiは、Star Analyticsを通じてこれを行うことができることを示しています。

  3. SQL Server 2005 SP2 以降、Reporting Services (SSRS) にはデータ ソース接続があります。この製品機能は、SSIS のオブジェクトに変換されていないようです。あるブロガーは、Hyperion が SQL Server 2005 SSAS キューブへの接続をサポートし始めたため、オラクルが Hyperion を購入する前に見返りとして行われた可能性があると示唆しまし

  4. @billinkc によると、彼はストレート .NET で接続していました。少し掘り下げると、Hyperion Application Builder .NET (HAB.NET) が返されました。最初はこれが有望な解決策のように見えましたが、11.1.3 のリリースで製品が廃止されたことが判明しました。@billinkc もコード サンプルを提供しているので、テストして、これが機能するかどうかを確認します。

(私にとって) 非常にコストがかかる Star Analytics サーバー製品のライセンスを取得する以外に、他に解決策はありますか?

4

2 に答える 2

6

私は 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;
        }
    }
}
于 2012-01-13T03:48:04.940 に答える