【问题标题】:Filtering out rows based on closest date根据最接近的日期过滤掉行
【发布时间】:2016-09-20 12:11:52
【问题描述】:

我有一个包含数千条记录的文件需要过滤。 下面提供了数据样本。这些是学校的考试成绩。源是一个平面文件(csv) 目标是过滤记录,只为每个 ID 号输出最接近 01/15/2016 12:00 的记录 这是否可能,如果可以,您将如何使用 SSIS 或 SSDT 进行操作?我不确定这是否会使用条件拆分、派生列等来完成,以及使用哪些命令来获取最接近所需日期和时间的行。提前非常感谢!!!

来自 csv 源文件的数据样本

ID, FNAME, LNAME, DATE, SCORE1, SCORE2, SCORE3 1, JOHN, DOE, 12/11/2015 7:44, 100, 99, 98 1, JOHN, DOE, 12/29/2015 11:45, 99, 100, 96 1, JOHN, DOE, 1/10/2016 11:46, 98, 97, 97 1, JOHN, DOE, 1/20/2016 8:47, 97, 98, 99 1, JOHN, DOE, 3/20/2016 11:48, 96, 96, 100 2, JANE, DOE, 12/12/2015 11:44, 100, 99, 98 2, JANE, DOE, 12/28/2015 11:45, 99, 100, 96 2, JANE, DOE, 1/9/2016 11:46, 98, 97, 97 2, JANE, DOE, 1/23/2016 9:47, 97, 98, 99 2, JANE, DOE, 3/8/2016 8:48, 96, 96, 100 3, CHRIS, DOE, 2/8/2016 8:00, 100, 100, 100

将写入 csv 平面文件目标的所需结果是 ID, FNAME, LNAME, DATE, SCORE1, SCORE2, SCORE3 1, JOHN, DOE, 01/10/2016 11:46, 98, 97, 97 2, JANE, DOE, 01/9/2016 11:46, 98, 97, 97 3, CHRIS, DOE, 2/8/2016 8:00, 100, 100, 100

【问题讨论】:

    标签: ssis sql-server-data-tools ssis-2012 ssis-2008


    【解决方案1】:

    我会通过将整个 .csv 导入临时表来执行此操作,然后运行使用 ROW_NUMBER() 的存储过程来获取每个 ID 所需的行,然后仅将该行复制到最终目标表。

    这将比尝试在 SSIS 数据流中处理此具有更好的性能。

    例子

    SELECT 
        ID,
        FNAME, 
        LNAME, 
        DATE, 
        SCORE1, 
        SCORE2, 
        SCORE3 
    FROM (
        SELECT 
            *, 
            ROW_NUMBER() OVER (PARTITION BY ID ORDER BY DATE DESC) as RN
        FROM
            YourStagingTable
    ) a
    WHERE 
       a.rn = 1
    

    【讨论】:

    • 我会做的差不多 - 如果 SQL Server 可以直接访问文件,则可能使用 OPENQUERY/OPENROWSET,这不太可能。但在大多数情况下,这将涉及将文件拉入某种表格并运行与您上面所拥有的非常相似的东西。如果您需要加入其他数据,我会考虑对该查询使用 OUTER APPLY 以仍然以基于集合的方式获得结果。
    • 不幸的是,我必须使用 SSIS 才能达到预期的效果。我们正在使用 csv 源文件而不是 SQL 数据库。它必须拉取日期最接近指定日期的行,不能使用行号,因为行数总是不同的。
    • 那么,您正在导入 .csv 文件,并使用 ssis 将行导出到新的 .csv 文件?过程中的任何时候都没有涉及数据库?
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-10-06
    • 1970-01-01
    • 1970-01-01
    • 2020-03-31
    • 2022-10-05
    相关资源
    最近更新 更多