0

我开始了一个相当令人兴奋的项目。我有这样的想法,我组织中的人员可以将 CSV 文件放入加载文件夹,然后在 Web 界面中设置加载程序。

这听起来并不特别——然而,美妙的是网络应用程序可以让用户只选择他们需要从 CSV 中提取的某些列——一旦设置,这个加载器就可以定期运行。

然后可以通过用户定义的查询转换数据,并可能加载到数据仓库中

我遇到的问题是我的暂存 CSV 数据的表结构 - 这样我就可以对其进行转换。

CSV 文件结构可以随许多列或很少列而变化,例如。

CLIENT    SALES COST 
Mr Smith  234   45
Mr Blogs  256   35

我目前拥有的结构是

ID COLUMNID VALUE    FILELOADDATE
1  1        Mr Smith 2012-12-25
2  2        234      2012-12-25
3  3        45       2012-12-25
4  1        Mr Blogs 2012-12-25
5  2        256      2012-12-25
6  3        35       2012-12-25

因此,如果您愿意,数据已经“未透视”,允许我存储各种 CSV 格式

我遇到的问题是现在数据已被转置我已经有效地破坏了该数据中的链接,所以我不知道销售数字与谁有关

如果我想按日期汇总销售额或按日期成本或类似的东西,我采用的方法很好

有没有不同的方法我可以解决这个问题,这样我就不会失去那个链接?我可以有另一列有行吗?

4

2 回答 2

2

我想你有点回答你自己的问题,如果你添加一行(也许是一个数据集 id?,所以你可以在不同的 csv 文件之间有所不同)。然后,您还可以将 FILELOADDATE 字段移动到数据集表中

ID DATASETID ROWID COLUMNID VALUE    
1  1         1     1        Mr Smith 
2  1         1     2        234      
3  1         1     3        45       
4  1         2     1        Mr Blogs 
5  1         2     2        256      
6  1         2     3        35      

数据集表:

ID FILELOADDATE
1  2012-12-25
于 2013-01-09T23:54:33.413 回答
1

最近我看到了类似问题的解决方案。有:

  • 一张描述数据集的表
  • 一张描述列的表(CSV 文件的列)
  • 数据存储表

数据集描述表的列:

ID
FileName
Load_TimeStamp
Name
User

列描述表的列:

ID
dataset_id
ColumnName (csv column name)
ColumnDescription (optional)
StorageColumn (pointing to storage table column name, e.g. "varchar_1"

数据表的列:

ID
dataset_id
varchar_1
...
varchar_20
numeric_1
...
numeric_20

关键是您可以避免数据转置(您必须多次进行 - 在加载事件和每个操作事件上)。

于 2013-01-10T10:01:20.877 回答