2

C# を使用してメモリ内の多次元データを処理する必要がある問題に取り組んでいます。私の要件は OLAP キューブに似ていますが、それほど複雑ではありません。たとえば、計算や集計などは必要ありません。基本的に多次元キーを使ってデータを参照したいと思います。例えば:

var key = new Key();
key["Dim1"] = "DimValue1";
key["Dim2"] = "DimValue2";
key["Time"] = 1999;
DataSet[key] = 4.43434m;

そして、データセットの値またはスライスを反復処理できるようになります。C# でそのようなライブラリに出くわしたことがありますか?

4

3 に答える 3

1

これはあなたのニーズを満たさないかもしれませんが、マルチキー データセットを処理する簡単な方法は、すべての「キー」フィールドと「値」キー (それぞれ必要な数) を含むオブジェクトを作成することであることがわかりました。次に、各キーのルックアップ式を作成します。

例えば:

class MyData
{
    // Your keys
    public string Dim1;
    public string Dim2;
    public string Time;

    // Your values
    public string Value;
}

「索引付け」され、次のように取得されます。

// add all your data to a list or collection
var data = new List<MyData>();

// this provides the entry point to our dataset
var lookupDim1 = data.ToLookup(d => d.Dim1);
var lookupDim2 = data.ToLookup(d => d.Dim2);
var lookupTime = data.ToLookup(d => d.Time);

// sample retrievals
IEnumerable<MyData> sampleData1 = lookupDim1["DimValue1"];
var sampleData2 = lookupDim2["DimValue2"].Intersect( lookupTime["1999"] );
于 2010-03-03T06:29:18.223 に答える
0

MongoDBやRedisのようなKey/Valueストアは、私が必要としているものに近いと思います。しかし、私は100%確信していません。永続性は気にしないので、Redisのようなメモリストーリーの方が適しています。

于 2010-03-04T05:00:56.757 に答える
0

キーの型が宣言する構造体である辞書を作成できます。フィルタリングによってそれを達成することはできますが、それはスライスの自動反復を提供しません。

于 2010-03-03T05:13:59.697 に答える