Database design 从CSV中提取数据时,ETL工具的可行表结构是什么
我已经开始了一个相当令人兴奋的项目。我有一个想法,在我的组织中,人们可以将CSV文件放入加载文件夹,然后在web界面中设置加载程序 这听起来没什么特别的-然而,美妙的是web应用程序可以让用户只选择他们需要从CSV中提取的特定列-一旦设置,这个加载程序可以定期运行 然后可以通过用户定义的查询转换数据,并可能将其加载到数据仓库中 我遇到的问题是我的阶段CSV数据的表结构,以便我可以转换它 CSV文件结构可能因列数众多或极少数而有所不同,例如Database design 从CSV中提取数据时,ETL工具的可行表结构是什么,database-design,csv,etl,Database Design,Csv,Etl,我已经开始了一个相当令人兴奋的项目。我有一个想法,在我的组织中,人们可以将CSV文件放入加载文件夹,然后在web界面中设置加载程序 这听起来没什么特别的-然而,美妙的是web应用程序可以让用户只选择他们需要从CSV中提取的特定列-一旦设置,这个加载程序可以定期运行 然后可以通过用户定义的查询转换数据,并可能将其加载到数据仓库中 我遇到的问题是我的阶段CSV数据的表结构,以便我可以转换它 CSV文件结构可能因列数众多或极少数而有所不同,例如 CLIENT SALES COST Mr Smi
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格式
我遇到的问题是,现在数据已经被转换,我已经有效地打破了数据中的链接,因此我不知道销售数据与谁有关
如果我想合计,比如说按日期的销售额或按日期的成本或诸如此类的东西,我所采取的方法是很好的
是否有一个不同的wy,我可以这样做,使我不松散的链接?可以给我另一个列加一行吗?我想你可以回答你自己的问题,如果你添加一行(可能还有一个数据集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
我认为,如果您添加一行(可能还有一个数据集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
最近我看到了类似问题的解决方案。有:
- 一个描述数据集的表
- 一个描述列(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
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
关键是,您可以避免数据转换(必须多次执行-加载事件和每次操作事件)。最近,我看到了类似问题的解决方案。有:
- 一个描述数据集的表
- 一个描述列(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
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
关键是,您可以避免数据转换(您必须多次这样做—在加载事件和每个操纵事件中)