C# 立方体/多维数据集

标签 c# .net olap multidimensional-array cubes

我正在解决一个问题,我需要使用 C# 处理内存中的多维数据。我的要求类似于 OLAP 多维数据集,但没有那么复杂。例如,我不需要计算或聚合或类似的东西。我基本上想使用多维键来引用数据。例如:

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

它可以让我迭代数据集的值或切片。你在 C# 中遇到过这样的库吗?

最佳答案

这可能无法满足您的需求,但我发现一种处理多键数据集的简单方法是创建一个对象,其中包含您所有的“键”字段和“值”键(每个键的数量与您的数量一样多)需要),然后为每个键创建查找表达式。

例如:

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"] );

关于C# 立方体/多维数据集,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2368896/

相关文章:

c# - BackgroundWorker ReportProgress 事件队列

c# - 如何调试异步代码?

Apache Kylin - 立方体构建第一步的错误输出

SAS-错误 : Indexes cannot be created for the NWAY aggregation.

c# - 如何在无限循环中使用线程锁?

c# - WPF 扩展器验证

c# - 将数据库中的值调用到文本字段中 - 自定义错误

r - 从 R 或 Nodejs 连接到 Analysis Services

c# - 在不同线程中抛出异常时在当前线程中捕获异常

c# - Visual Studio 2017 : Run tests with Startup Projects