【问题标题】:What is a viable table structure for an ETL tool when extracting data from a CSV从 CSV 提取数据时,ETL 工具的可行表结构是什么
【发布时间】:2013-01-08 10:00:37
【问题描述】:

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

这听起来并不特别 - 然而,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 格式

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

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

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

【问题讨论】:

    标签: database-design csv etl


    【解决方案1】:

    如果您添加一行(也许是数据集 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
    

    【讨论】:

      【解决方案2】:

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

      • 一个描述数据集的表格
      • 一个表格描述列(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
      

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

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2011-03-24
        • 1970-01-01
        • 2020-01-31
        • 1970-01-01
        • 1970-01-01
        • 2020-02-13
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多